我被分配了开发整个办公室将使用的Excel文档的任务。用户将单击一个按钮,宏将文件作为PDF导出到共享文件夹。我编写了这段代码并使用excel 2010测试了这段代码。拥有excel 2007的人会收到一条错误消息“运行时错误1004文档未保存。此文档可能已打开,或者在保存时可能遇到错误”。我稍微研究了一下这个问题,发现excel 2007需要一个加载项更新,所以我把它安装在他们的计算机上。我还检查了他们的计算机上是否有adobe,他们确实这样做了。他们仍然有问题,我不知道该怎么做。任何帮助将不胜感激!
这是我的代码
' Define all variables
Dim strFileName As String
Dim folder As String
Dim member As Integer
Dim member_count As Integer
Dim member_name As String
Dim show As Variant
Dim MyTime As String
'Save as new file
Worksheets("Input data").Visible = True
folder = Sheets("Input data").Range("location").Value
MyTime = Time
Sheets("Input data").Select
Range("G2").Value = MyTime
strFileName = folder & "Material Request - " & Sheets("Input data").Range("name").Value & "_" & Sheets("Input data").Range("date").Value & " " & Sheets("Input data").Range("time").Value & ".pdf"
Sheets("Material Request").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName 'OpenAfterPublish:=True`
答案 0 :(得分:0)
您应该首先更改代码以删除.Select
& .ActiveSheet
个实例。
Dim oWS as Worksheet
Set oWS = ThisWorkbook.Worksheets("Input data")
' Worksheets("Input data").Visible = True
folder = oWS.Range("location").Value
If Right(folder,1) <> Application.PathSeparator Then folder = folder & Application.PathSeparator
MyTime = Time
' Sheets("Input data").Select
oWS.Range("G2").Value = MyTime
strFileName = folder & "Material Request - " & oWS.Range("name").Value & "_" & oWS.Range("date").Value & " " & oWS.Range("time").Value & ".pdf"
Debug.Print "strFileName: " & strFileName
'Sheets("Material Request").Select
oWS.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName 'OpenAfterPublish:=True`
Set oWS = Nothing
请参阅此MSDN Worksheet.ExportAsFixedFormat Method,您可能需要根据工作表“输入数据”的属性填写更多参数。
我添加了一些检查,并参考立即窗口检查2007年strFileName
的值。
答案 1 :(得分:0)
我有一个类似的问题(尝试导出时出现错误1004)。经过一个小时的拔毛,这是我的问题的根源。
我正在传递一个单元格值作为生成文件名的一部分。我是以
的格式做到这一点的fileName:= ActiveWorkbook.Path & "\" & CStr(Workbooks.Cells(i,j).Value) & ".pdf"
单元格中的文本被格式化为两行(即&#34;顶行文本&#34; +( Alt + K )+& #34;底行文字&#34;)。虽然字符串在Debug.print
,MsgBox
或值预览中看起来很正常,但我认为存在一个隐藏字符,用于对单元格的新行进行编码。我相信这个隐藏的字符会在作为fileName参数的一部分传递时导致错误。我猜测Excel并没有拿起它,但操作系统的文件名系统确实如此。
无论如何,这为我解决了这个问题。