在 vba 中复制和重命名 Excel ActiveSheet
Posted
技术标签:
【中文标题】在 vba 中复制和重命名 Excel ActiveSheet【英文标题】:Copy and Rename Excel ActiveSheet in vba 【发布时间】:2017-04-10 12:17:42 【问题描述】:我在 access 中生成一个命令按钮,它将数据导出到 Excel。目前,我有这个功能,并且正在尝试进一步完善它,以便每次导出都会将数据导出到一个新工作表上,该工作表实际上是 ActiveSheet 的副本。似乎让我失望的代码是:
'Open workbook
Excel.Workbooks.Open "\\aos03s-fp04\brewsti2$\Alarms\ExportTest - " & Format(Now(), "dd-mm-yyyy") & ".xlsx", True, False
'Copy initial activesheet
ActiveSheet.Copy Before:=Excel.Sheets("Sheet2")
'Rename new copied sheet
ActiveSheet.Name = Me.RAW_TAG
代码在 ActiveSheet.Copy 函数上失败。有什么想法吗?
【问题讨论】:
您之前尝试复制的工作表是否存在?即您的工作簿中是否有“Sheet2” - 检查拼写/间距。 您收到的实际错误信息是什么? 我遇到的错误是:运行时错误'91':对象变量或未设置块变量。 【参考方案1】:Access 具有将表格导出到 Excel 的构建命令按钮过程。但是,无论如何,你可以使用这个:
Dim outputFileName As String
outputFileName = CurrentProject.Path & ".xls"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table1", outputFileName , True
试试这个,或者:
Sub CopySheet()
Dim MySheetName As String
MySheetName = "TestSheet" Sheets("MasterSheet").Copy After:=Sheets("MasterSheet")
ActiveSheet.Name = MySheetName
End Sub
【讨论】:
【参考方案2】:试试这个,或者:
Sub CopySheet()
Dim MySheetName As String
MySheetName = "TestSheet" Sheets("MasterSheet").Copy After:=Sheets("MasterSheet")
ActiveSheet.Name = MySheetName
End Sub
【讨论】:
这个答案和one other 是由同一个用户添加的。我想他们应该合并。用户可以添加替代答案作为对第一个答案的更新。 我想要的结果是代码打开所需的工作簿,就像这种情况一样,然后继续复制活动工作表(名称未知)并将其放在当前工作表之后或最后一个工作表之前,然后重命名此工作表。【参考方案3】:假设此代码在 MS Access VBA 中运行,并且 Excel
是 Excel Application
对象,您需要指定 ActiveSheet
是该 Application
对象的属性:
'Open workbook
Excel.Workbooks.Open "\\aos03s-fp04\brewsti2$\Alarms\ExportTest - " & Format(Now(), "dd-mm-yyyy") & ".xlsx", True, False
'Copy initial activesheet
Excel.ActiveSheet.Copy Before:=Excel.Sheets("Sheet2")
'Rename new copied sheet
Excel.ActiveSheet.Name = Me.RAW_TAG
【讨论】:
以上是关于在 vba 中复制和重命名 Excel ActiveSheet的主要内容,如果未能解决你的问题,请参考以下文章
excel vba复制数据范围,打开新的xlsx文件重命名表并保存