debuggingExcel VBA ActiveWorkbook.SaveAs

我不知道为什么我的VBA代码片断不工作 – 我希望有人可以帮助。

我只是试图执行一个ActiveWorkbook.SaveAs作为一个更大的模块的一部分,但它是错误的。

以下是发生错误的代码片段:

LdrLastName = Right(wbCleaner.Sheets("Import Information").Range("$A$2"), Len(wbCleaner.Sheets("Import Information").Range("$A$2")) - Len(Left(wbCleaner.Sheets("Import Information").Range("$A$2"), LstNameSpacePos))) ExptdQBInitialFileName = LdrLastName & " " & wbCleaner.Sheets("Import Information").Range("$D$2") 'produces "LastName AccountCode" 'ExptdQBFileName MsgBox's the full file path and file name (ie C:/Folder/Filename.xlsx) ExptdQBFileName = Application.GetSaveAsFilename(InitialFileName:=ExptdQBInitialFileName, FileFilter:="QB Export File *.xlsx (*.xlsx),") If ExptdQBFileName <> "" And ExptdQBFileName <> "False" Then ActiveWorkbook.SaveAs Filename:=ExptdQBFileName, _ FileFormat:=xlOpenXMLWorkbook, _ Password:="", _ WriteResPassword:="", _ ReadOnlyRecommended:=False, _ CreateBackup:=False End If 

该错误突出显示了If / End If语句中的所有内容。 我之前使用这个代码没有问题。 我在哪里错了?

只是为了分享,这本书和activeworkbook不同http://datapigtechnologies.com/blog/index.php/thisworkbook-vs-activeworkbook/

文件格式52是xlOpenXMLWorkbookMacroEnabledxlsm文件。 如果您保存为.xlsx文件,我认为您要的文件格式是xlOpenXMLWorkbook ,它转换为51。

使用枚举而不是整数是有帮助的:

 LdrLastName = Right(wbCleaner.Sheets("Import Information").Range("$A$2"), Len(wbCleaner.Sheets("Import Information").Range("$A$2")) - Len(Left(wbCleaner.Sheets("Import Information").Range("$A$2"), LstNameSpacePos))) ExptdQBInitialFileName = LdrLastName & " " & wbCleaner.Sheets("Import Information").Range("$D$2") 'produces "LastName AccountCode" ExptdQBFileName = Application.GetSaveAsFilename(InitialFileName:=ExptdQBInitialFileName, FileFilter:="QB Export File (*.xlsx), *.xlsx,") If ExptdQBFileName <> "" And ExptdQBFileName <> "False" Then ActiveWorkbook.SaveAs Filename:=ExptdQBFileName, _ FileFormat:=xlOpenXMLWorkbook, _ Password:="", _ WriteResPassword:="", _ ReadOnlyRecommended:=False, _ CreateBackup:=False End If 

http://www.rondebruin.nl/win/s5/win001.htm

我不知道为什么,但解决scheme是改变

 ActiveWorkbook.("QB Export File").SaveAs 

 ThisWorkbook.Sheets("QB Export File").SaveAs 

感谢user2851376分享下面的链接比较ThisWorkbook与ActiveWorkbook http://datapigtechnologies.com/blog/index.php/thisworkbook-vs-activeworkbook/