如果文件已存在,vba无法从excel导出到pdf
我在保存pdf文件时遇到问题。 如果文件夹中已经存在该文件,并且对其进行了一些更改,则宏将在调试器指向openAfterPulish行时崩溃,并显示以下运行时错误 -2214701887(80071779)如果文件已存在,vba无法从excel导出到pdf,vba,excel,Vba,Excel,我在保存pdf文件时遇到问题。 如果文件夹中已经存在该文件,并且对其进行了一些更改,则宏将在调试器指向openAfterPulish行时崩溃,并显示以下运行时错误 -2214701887(80071779) “文档未保存。” 我的目标是excel应该自动覆盖旧文件。如果在手动保存文件时,Excel会提示我是否要覆盖该文件,但在运行上述代码时会崩溃。检查该文件是否存在并将其删除。在VBA IDE中,转到“工具”菜单并选择“引用”。选择“Microsoft脚本运行时” 检查它是否存在并删除它。在VB
“文档未保存。”
我的目标是excel应该自动覆盖旧文件。如果在手动保存文件时,Excel会提示我是否要覆盖该文件,但在运行上述代码时会崩溃。检查该文件是否存在并将其删除。在VBA IDE中,转到“工具”菜单并选择“引用”。选择“Microsoft脚本运行时”
检查它是否存在并删除它。在VBA IDE中,转到“工具”菜单并选择“引用”。选择“Microsoft脚本运行时”
在导出之前,您是否尝试过检查文件是否存在并删除它(如果存在)?这可能就是您的代码不会覆盖它的原因。是的,我尝试过并意识到我收到了错误,因为该文件已在另一个程序中打开,因此它没有保存权限。谢谢你,这样就行了。如果您试图自己删除它,您可以添加一些错误处理来解释该情况。请参阅更改我的答案。在导出之前,您是否尝试过检查文件是否存在并删除它(如果存在)?这可能就是代码不会覆盖它的原因。是的,我尝试过,并意识到我收到错误,因为该文件已在另一个程序中打开,因此它没有保存权限。谢谢你,这样就行了。如果您试图自己删除它,您可以添加一些错误处理来解释该情况。请看我的答案的变化。
Sub printPdf()
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
'On Error GoTo errHandler
Set ws = Application.ActiveSheet
'enter name and select folder for file
' start in current workbook folder
strFile = Replace(Replace(ws.Name, " ", "_"), ".", "_") _
& ".pdf"
strfolder = ThisWorkbook.Path & "\myPdfFiles"
If Len(Dir(strfolder, vbDirectory)) = 0 Then
MkDir (strfolder)
End If
strFile = strfolder & "\" & strFile
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=strFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Call closews
exitHandler:
Exit Sub
errHandler:
MsgBox "Could not create PDF file " & Err & ": " & Error(Err)
Resume exitHandler
End Sub
Dim Response As Integer
Dim fs As FileSystemObject
'We can come back to here after an error.
TryAgain:
If fs.FileExists(strFile) = True Then
On Error Goto DeleteError
fs.DeleteFile(strFile, True)
End If
DeleteError:
Response = MsgBox("Error deleting file. Do you have it open? Try again?", vbYesNo)
' If statement to check if the yes button was selected.
If Response = vbYes Then
Goto TryAgain
Else
Exit sub
End If
On Error Goto 0
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=strFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Call closews