请帮我编辑此代码。我有一个excel工作簿,我需要将其保存在我选择的文件夹中作为xlsm文件和PDF。在我的电子表格中添加需要输入的所有信息后,为了使用范围作为参考并选择文件保存的文件夹,然后选择消息框" Kon nie document stoor nie。"弹出。如果只成功保存消息框"复制Gemaak"需要表现出来! 谢谢你的帮助!
Sub Combined()
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
Dim fileSaveName As String
On Error GoTo errHandler
fileSaveName = Application.GetSaveAsFilename("Kwotasie - " & Range("H14").Value)
If VarType(fileSaveName) = vbBoolean Then Exit Sub
' Save as XLSM
ActiveWorkbook.SaveAs Filename:=fileSaveName & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
' Save as PDF
Range("a1:I51").ExportAsFixedFormat Type:=xlTypePDF, Filename:=fileSaveName _
, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
If myFile <> "False" Then
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=myFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
MsgBox "Copy gemaak."
End If
exitHandler:
Exit Sub
errHandler:
MsgBox "Kon nie dokumente stoor nie."
Resume exitHandler
End Sub
答案 0 :(得分:0)
如果我正确地阅读了您的问题,那么您的问题就是您的宏只会显示MsgBox
为“Kon nie dokumente stoor nie”。
假设这是对的,因为你的VBA处于混乱的一面,所以有点难以分辨出问题是什么。最好的猜测是,由于您从未设置ws
,因此保存工作表的尝试会调用errHandler
。
在这种情况下你想要做的一些清理:
FileSaveName
作为字符串。如果有任何方法将它设置为布尔值,那么奇怪的东西似乎正在发生(至少基于你到目前为止告诉我们的内容)。Exit Handler
。唯一可以使用的地方是ErrHandler
。如果发生这种情况,代码末尾的End Sub
会很好地解决问题,根本不需要使用Exit Sub
。End If
If
If
语句详细说明我的答案;考虑到上述所有情况,我有点在黑暗中刺伤,但看起来myFile
永远不应该是"False"
(if
应该将myFile
强制转换为字符串,并且由于变量从未设置,因此它的值为""
)。因此,在这种情况下,使用了将ws
保存为PDF的尝试,并且因为ws
也从未设置而失败,这意味着Excel不知道您要保存的是什么。因此,你被踢到了errHandler
。
希望有所帮助。如果没有,请详细说明您所看到的行为,如果可能,请使用已清理的代码更新原始问题。