De: Jim Rech Objet: Re: Automatic conversion from XLS to PDF Date : vendredi 13 août 1999 18:50 The PDF driver looks for entries in an INI file and uses them for file names automatically. If it doesn't find these entries then it prompts the user for a file name. So your process would have to make these entries before printing each workbook to the PDF "printer". BTW, the INI file it looks for is "PDFWritr.ini" in the Windows\System directory. So... To write entries to INI files using the Windows API you need to have this declarations at the top of your module: Declare function WritePrivateProfileStringA Lib "kernel32" _ (ByVal SectionStr As String, ByVal ItemName As String, _ ByVal Str2Write As String, ByVal IniFileName As String) As Boolean Although you probably know the path to Windows\system, for portability it's a good idea to have finding it be automatic. So include this API declaration too: Public Declare function GetSystemDirectory Lib "kernel32" Alias _ "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As long) As long Include this module level variable to hold the path to the INI file: Dim PDF_INIPath As String Now before doing any printing run this to set things up: Sub InitAutoPDF() setINIPath ''set INI path/name variable setPDF_INI_Mode "Auto" ''Write entry to INI to put PDF driver in Auto mode End Sub Now in your main file opening/printing macro your must set the name for the PDF file to be created as each XLS is printed. This one uses the same name as the source Excel file but with the extension PDF instead of XLS: Sub MainPrintRoutine() Dim WriteFile as String, FileLen as Integer ''Need a loop that opens each XLS and '' puts its name in the variable WriteFile, and '' the length of its file name in the variable FileLen '' Then call this to set name in INI file WritePDFFileName2Ini Left(WriteFile, FileLen - 3) & "pdf" End Sub When you're done run this sub to erase the last file name written to the INI file and to put the PDF driver back in prompting mode: Sub ResetManualPDF() WritePDFFileName2Ini "" setPDF_INI_Mode "Prompt" End Sub And add these supporting subs called from above: ''Writes target PDF file name into INI ''This must be called prior to each printout Sub WritePDFFileName2Ini(FName As String) WritePrivateProfileStringA "Acrobat PDFWriter", "PDFFileName", FName, PDF_INIPath End Sub ''set "CreatePDFExcelMacroshowDialog" entry in INI to passed setting ''The settings are "Prompt" and "Auto" Sub setPDF_INI_Mode(setting As String) WritePrivateProfileStringA "Acrobat PDFWriter", "CreatePDFExcelMacroshowDialog", setting, PDF_INIPath End Sub ''sets variable pointing to PDF INI file function setINIPath() As Boolean Dim Buff As String * 100 Dim RetVal As long RetVal = GetSystemDirectory(Buff, 100) If RetVal > 0 Then PDF_INIPath = Left(Buff, RetVal) & "\PDFWritr.ini" setINIPath = True Else MsgBox "Cannot find the Windows System Directory" End If End function BTW, I extracted all this from a working module but changed some things around for clarity. So I may have mis-typed some things but hopefully you can fix these things up. -- Jim Rech Excel MVP