编译错误:拆分和保存工作表的宏
编译错误:拆分和保存工作表的宏
我在编译代码时遇到了问题,不确定原因。代码本身基于以下内容:
https://www.extendoffice.com/documents/excel/628-excel-split-workbook.html
它将每个工作表另存为一个Excel文件,以工作表名称作为文件名 - 这部分没有问题。
我想要更改保存的文件名。现在它只保存为工作表名.xls,但我希望文件名为工作簿名_工作表名.xls。这是我遇到问题的地方。我尝试了一些涉及activeworkbook.name的操作,但它给了我整个文件名,因此保存时我得到了一个像工作簿名.xlsx_工作表名.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://stackoverflow.com/questions/3233203/how-do-i-use-filesystemobject-in-vba/3236348#3236348 'https://stackoverflow.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
谢谢。
在这个问题中,出现了一个编译错误,该错误与在宏中拆分和保存工作表有关。造成这个错误的原因是在代码的一行中缺少了一个下划线(_)。在VBA中,如果要将一行代码拆分成两行,需要使用下划线进行标记。解决这个错误的方法是在代码中添加下划线,使其在两行中正确拆分。代码应该是这样的:
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xFilename & "_" & xWs.Name, _
或者可以将整个代码放在一行中。
这个问题的解决方法可以参考这个链接:How to extend a formula in VBA past 1 line of code
原来这个问题比我想象的要简单得多。谢谢你的帮助!