首页 > 解决方案 > VBA将当前工作表复制到新工作簿并保存

问题描述

尽管我对我的 VBA 非常生疏,但我之前已经多次将工作表保存到新的工作簿中。此代码失败,错误代码“对象'_Workbook'的方法'SaveAs'失败”

wbSource.Sheets(newFileName).Copy

On Error GoTo NewWorkbookError:
Set wbCleaned = ActiveWorkbook
    
ChDir ProcessedFileStoragePath        
wbCleaned.SaveAs filename:=newFilePath, _
                 FileFormat:=FileStoredAsFormat, CreateBackup:=False

在没有 ChDir 行的情况下失败,我添加了该行,因为在录制用于保存新工作簿的宏时,该代码行在录制中。

我注意到的另一件事是 .SaveAs 方法中的“文件名”大小写,它应该是 Filename: 但是当我以这种方式键入它时,编辑器会小写它。我在这个名为 filename 的模块中没有任何其他变量。

 Const ProcessedFileStoragePath As String = "C:\Users\TD\OneDrive\DataLoaders\FilesForAzureStorage\"
Const FileStoredAsFormat As String = "xlCSVUTF8"

任何帮助表示赞赏,我已经在这方面花费了太多时间。

标签: excelvba

解决方案


今天早上我在自己的代码中遇到了完全相同的问题。ActiveWorkbook 出于某种原因没有产生对象并保持为空。我通过手动指定工作簿来解决这个问题。

尝试这个:

wkb.Worksheets(newFileName).Copy
Excel.Workbooks(2).SaveAs newFilePath

解决方案: OPs 问题的解决方案是文件格式枚举。它必须是变体变量类型(根据 OP 的评论)。

如果有帮助,我会将我的建议留给其他人。


推荐阅读