宏上的编译错误以拆分和保存工作表

Posted

技术标签:

【中文标题】宏上的编译错误以拆分和保存工作表【英文标题】:Compile Error on Macro to Split and Save Worksheets 【发布时间】:2016-10-27 18:38:05 【问题描述】:

我在编译我的代码时遇到问题 - 我不知道为什么。

代码本身就是基于此:

https://www.extendoffice.com/documents/excel/628-excel-split-workbook.html

它将每个单独的工作表保存为一个 excel 文件,工作表名称作为文件名 - 这很好用。

我想更改它保存的文件名。现在它只将名称保存为 worksheetname.xls,但我希望名称为 workbookname_worksheetname.xls。这是我遇到问题的地方。我想我尝试了一些涉及 activeworkbook.name 的东西,但这给了我整个文件名,所以在保存时我得到了一个疯狂的名字,比如 workbookname.xlsx_worksheetname.xls。我开始研究如何仅获取文件名,这使我找到了我也尝试合并的这些帖子:

How do I use FileSystemObject in VBA? File name without extension name VBA

但是,我收到一个编译错误:以下行出现语法错误:

Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xFilename & "_" & xWs.Name,
    FileFormat:=39

如有必要,有人可以帮助审查和清理代码吗?有没有更简单的方法来做到这一点?

Sub Splitbook()
'https://www.extendoffice.com/documents/excel/1174-excel-split-data-into-multiple-worksheets-based-on-column.html
'https://www.extendoffice.com/documents/excel/628-excel-split-workbook.html
Dim xPath As String
Dim xFilename As String
'https://***.com/questions/3233203/how-do-i-use-filesystemobject-in-vba/3236348#3236348
'https://***.com/questions/27923926/file-name-without-extension-name-vba
Dim fso As New Scripting.FileSystemObject
xPath = Application.ActiveWorkbook.Path
xFilename = fso.GetBaseName(ActiveWorkbook.Name)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each xWs In ThisWorkbook.Sheets
    xWs.Copy
    Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xFilename & "_" & xWs.Name,
    FileFormat:=39
    Application.ActiveWorkbook.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

谢谢。

【问题讨论】:

【参考方案1】:

看来您需要延长线。如果你想将一行代码分成两行,你需要一个_,所以它应该看起来像Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xFilename & "_" & xWs.Name, _

或者把整个东西放在一行

见How to extend a formula in VBA past 1 line of code

【讨论】:

啊。这是一个比我想象的要简单得多的问题。感谢您的帮助!

以上是关于宏上的编译错误以拆分和保存工作表的主要内容,如果未能解决你的问题,请参考以下文章

Beaglebone 上的 OpenCV 编译错误

Excel-VBA 工作表拆分和保存以逗号分隔的许多空白列结束

编译错误:过程太大需要帮助

对于电子邮件宏上没有下一个错误

编译器检查出的错误

触发器上的变异错误以计算平均成本