【发布时间】:2020-12-07 20:15:23
【问题描述】:
下午好,
我想将 .xslx 文件转换成 word。因为我需要准确地获取所有内容(我有 27 张带有标签、标签、图像等的工作表),所以我决定先将其保存为 PDF 文档,这样可以正常工作。之后我想把它转换成 .docx 文件,因为 PDF 到 DOCX 的转换也保留了所有这些功能。
因为 PDF 将每个工作表都视为单页,所以我希望它在 Word 中完全一样,而原始 excel 文档中的所有内容都保持不变。
我在这里找到了不错的 PDF 到 DOCX 转换指南
https://www.youtube.com/watch?v=Op25fUfvIl0
并遵循所有这些步骤,我已使此代码正常工作。 然而接下来,当我将这段代码与保存为 PDF 宏的 XLSX 结合起来时,我遇到了一个错误:类型不匹配,指示以下行:
Set fo = fso.GetFolder(pdf_path)
而我的完整代码如下所示:
Sub xlstodoc()
'SAVING XLSM FILE AS PDF
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & ThisWorkbook.Name, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
'CONVERTING PDF FILE INTO DOCX
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Dim wa As New Word.Application
Dim doc As Word.Document
wa.Visible = True
Dim pdf_path As String
Dim word_path As String
pdf_path = ThisWorkbook.Path & "\" '& ThisWorkbook.Name & ".pdf"
word_path = ThisWorkbook.Path & "\"
Set fo = fso.GetFolder(pdf_path)
For Each f In fo.Files
Set doc = wa.Documents.Open(f.Path)
doc.SaveAs2 (word_path & "\" & Replace(f.Name, ".pdf", ".docx"))
doc.Close False
Next
wa.Quit
Application.StatusBar = ""
MsgBox "All done"
Sheets("Frontsheet").Select
End Sub
Youtube 示例适用于固定文件夹。就我而言,我需要与我正在处理的活动工作表相同的目标目录。如何使此代码成功?我认为,我非常接近解决方案。
【问题讨论】: