我修改了以下我发现从文件夹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
宏按预期执行,文件夹A中的文件以.pdf扩展名移动到文件夹B.我的问题是文件损坏了。文件是如何损坏的并且是驱动此问题的宏?
答案 0 :(得分:0)
一些事情......首先,只是更改文件扩展名不会将Excel文件神奇地转换为PDF文件。但是,由于您的示例代码甚至包含对 Workbook.SaveAs 方法接受文件格式的参数这一事实的引用。在线搜索应该会在this url快速引导您访问Microsoft提供的MSDN文档。这里详细介绍了可用于此方法的所有参数。 FileFormat 参数看起来与您要调查的内容完全相同。因此,如果您再单击文章中的链接,该链接将您带到this url上MSDN上相应的 xlFileFormat 文档,您将看到没有用于以PDF格式保存文件的已定义选项使用该方法格式化。
但是,如果它可以在Excel中完成并通过VBA自动完成,那么如果您没有在线搜索或在MSDN中搜索任何运气,那么可以使用一种技巧来查找正确的信息。只需在Excel中录制一个宏,执行您需要帮助的一步,然后停止录制并查看Excel生成的代码并将其放入宏中。使用此技术,您应该很快意识到您要搜索的方法称为 Workbook.ExportAsFixedFormat ,并在this url的MSDN上进行了记录。