Excel 保存新工作簿在宏运行后保留工作表名称
我将一个文件拆分为每个15000行。我正在从电子表格中运行宏,该电子表格要求选择文件,然后将其拆分。但是,当我尝试命名分割文件时,它会与宏正在运行的文件的活动工作表名称一起出现,而不是与分割的文件一起出现 我必须拆分10多个文件,我需要在每次都不写的情况下更改名称 这是脚本的代码,你能调整它以获得我需要的输出吗 我试图在全球范围内寻找,但始终没有找到正确的例子Excel 保存新工作簿在宏运行后保留工作表名称,excel,vba,save,Excel,Vba,Save,我将一个文件拆分为每个15000行。我正在从电子表格中运行宏,该电子表格要求选择文件,然后将其拆分。但是,当我尝试命名分割文件时,它会与宏正在运行的文件的活动工作表名称一起出现,而不是与分割的文件一起出现 我必须拆分10多个文件,我需要在每次都不写的情况下更改名称 这是脚本的代码,你能调整它以获得我需要的输出吗 我试图在全球范围内寻找,但始终没有找到正确的例子 Sub Split_File() Dim iCalc As Long, i As Long Dim my_FileName As Va
Sub Split_File()
Dim iCalc As Long, i As Long
Dim my_FileName As Variant
Dim wb As Workbook
Dim wbn As String
wbn = wb.ActiveSheet
iCalc = Application.Calculation
With Application
.Calculation = xlManual
.ScreenUpdating = False
.EnableEvents = False
End With
my_FileName = Application.GetOpenFilename()
Set wb = Workbooks.Open(Filename:=my_FileName, ReadOnly:=False)
With wb.ActiveSheet
For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row Step 15000
Range(.Range("A1:BP1").Address(0, 0) & "," & .Range(Cells(i, "A"), Cells(i, "BP").Resize(15000)).Address(0, 0)).Copy
Workbooks.Add
Range("A1").PasteSpecial xlPasteValues
With ActiveWorkbook
.SaveAs Filename:="itsownfolder\" & wbn & "Rows" & i & ".xlsx"
.Close
End With
Next i
End With
With Application
.Calculation = iCalc
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
在这个问题上:
wbn=wb.ActiveSheet
它应该返回一个错误,因为没有设置wb
。您是否打算改为使用如下内容:wbn=ActiveSheet.Name
?请务必意识到,稍后在代码中使用此变量创建FileName
是正确的,它会返回一个错误。但那应该是我需要的名字。这是我打开的工作簿的名称,而不是我记录宏的工作簿的名称。如果我使用ActiveSheet.Name变量,则返回后者。因此,无需查看代码的其余部分(可能会更麻烦),但由于您使用With
语句,可以将wbn
替换为中的.Name
。另存为文件名:=“itsownfolder\”&wbn&“Rows”&I&“.xlsx”
感谢JvdV的回复。当我设置wbn=ActiveSheet.Name时,它只是吐出book2rowsxx、book3rowsxx等。嗨,JvdV,它仍然不工作。它将文件保存为book1rows2、book2rows15002、book3rows30002等。它应该获得文件名或至少是活动工作表的名称。