复制并重命名VBA中的Excel ActiveSheet

问题描述:

我正在生成一个访问命令按钮,将数据导出到Excel中。目前,我有这个功能工作,并试图完善它一点,每个出口将数据导出到一个新的工作表,这将有效地是一个ActiveSheet的副本。看起来让我失望的代码是:复制并重命名VBA中的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函数上失败。有任何想法吗?

+0

请问您要复制工作表之前存在吗?即工作簿中是否有“Sheet2” - 检查拼写/间距。 –

+1

你得到的实际错误信息是什么? –

+0

我遇到的错误是:运行时错误'91':对象变量或未设置块变量。 – Whitey1985

试试这个,或者:

Sub CopySheet() 
Dim MySheetName As String 
MySheetName = "TestSheet" Sheets("MasterSheet").Copy After:=Sheets("MasterSheet") 
ActiveSheet.Name = MySheetName 
End Sub 
+0

这个答案和[另一个](http://stackoverflow.com/a/43323371/1128918)是由同一个用户添加的。我想他们应该合并。用户可以添加替代答案作为第一个答案的更新。 –

+0

我希望的结果是,代码将打开所需的工作簿,然后继续复制活动工作表(未知名称),并将其放在当前工作表之后或之前,然后重命名该工作表。 – Whitey1985

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 

假设这段代码是在MS Access VBA运行,并且Excel是一个Excel Application对象,你需要指定ActiveSheetApplication对象的属性:

'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