.xlsm到.pdfmacros损坏.pdf

我已经修改了下面的macros,我发现从文件夹A中的文件,并将它们放在文件夹B与.pdf作为文件扩展名:

Sub Xlsm_to_Pdf() Dim Xlsmfolder As String Dim PdfFolder As String Dim fname As String Dim wBook As Workbook Application.DisplayAlerts = False Xlsmfolder = "\\Desktop\Macro Testing\TestFolderA\" PdfFolder = "\\Desktop\Macro Testing\TestFolderB\" fname = Dir(Xlsmfolder & "*.xlsm") Do While fname <> "" Set wBook = Workbooks.Open(Xlsmfolder & fname, Format:=6, Delimiter:=",") wBook.SaveAs PdfFolder & Replace(fname, ".xlsm", ".pdf"), ThisWorkbook.FileFormat wBook.Close False fname = Dir Loop Application.DisplayAlerts = True End Sub 

该macros按预期方式执行,文件夹A中的文件将移至文件夹B,其扩展名为.pdf。 我的问题是文件被损坏。 这些文件如何被破坏,是导致这个问题的macros?

一些事情…首先,只是改变文件扩展名将不会神奇地将Excel文件转换为PDF文件。 但是,由于您的示例代码甚至包含对Workbook.SaveAs方法接受文件格式参数这一事实的引用。 在线search应该很快将您引导到MSDN上的Microsoft提供的文档。 这里详细介绍了可用于此方法的所有参数。 FileFormat参数看起来完全像你想要调查的。 所以,如果你点击文章中的链接 ,你可以看到这个URL在MSDN上相应的xlFileFormat文档,你会发现没有定义的选项可以使用该方法保存PDF格式的文件。

但是,如果可以在Excel中完成并通过VBA自动完成,那么如果您没有在线或MSDNsearch的运气,可以使用一个技巧来find正确的信息。 只需在Excel中录制一个macros,然后停止录制,然后查看Excel生成的代码并将其放入macros中。 使用这种技术,您应该很快意识到您正在search的方法称为Workbook.ExportAsFixedFormat,并在此url的 MSDN上logging。