.Xlsm到.Pdf宏损坏.pdf

时间:2016-04-26 15:23:03

标签: excel vba 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

宏按预期执行,文件夹A中的文件以.pdf扩展名移动到文件夹B.我的问题是文件损坏了。文件是如何损坏的并且是驱动此问题的宏?

1 个答案:

答案 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上进行了记录。