重命名后,工作簿vba不能正常工作

我还是VBA的新手,所以我做的大多数编码都是从互联网复制后logging或修改的。

在logging我执行的步骤后,我注意到macros将logging文件名和表名。

所以如果我要打开一个与录制的macros名称不相似的文件,我的macros将无法工作。

例如,文件B是在macros中注册的名称,但现在我想在文件C上执行macros程序,但是失败了。

有什么方法可以绕过吗?

Sub trial() Dim wb, wb2, wb3 As Workbook Dim fn As String Set wb = ActiveWorkbook With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = False If .Show = -1 Then fn = .SelectedItems(1) Set wb2 = Workbooks.Open(fn) Else MsgBox "You cancel the process." End If End With Dim SheetName As String 'this is the place i would like to edit Windows("SPC July BPW341CL - Copy.csv").Activate Sheets("SPC July BPW341CL - Copy").Select Sheets("SPC July BPW341CL - Copy").copy after:=Workbooks( _ "New Microsoft Excel Worksheet.xlsm").Sheets(4) Sheets("SPC July BPW341CL - Copy").Activate SheetName = Format(Date, "yyyymmdd") 'Change the format as per your requirement ActiveSheet.Name = SheetName Set wb3 = Application.ActiveWorkbook Sheets("Summary").Activate Range("A1").Select For Each ws In wb3.Worksheets If ws.Name <> "Compare to RGB" And ws.Name <> "Summary" Then For i = 1 To 5 Selection.Value = ws.Name Selection.Offset(0, 1).Select Next End If Next End Sub 

你快到了

在顶部,您正在创build工作簿的引用,您可以稍后在代码中使用这些引用:

 Set wb2 = Workbooks.Open(fn) 

这将创build一个工作簿的引用,您可以稍后在代码中使用它。

当你有这样的代码:

 Windows("SPC July BPW341CL - Copy.csv").Activate Sheets("SPC July BPW341CL - Copy").Select Sheets("SPC July BPW341CL - Copy").copy after:=Workbooks( _ "New Microsoft Excel Worksheet.xlsm").Sheets(4) Sheets("SPC July BPW341CL - Copy").Activate 

我猜这是录制的代码? 你应该可以使用你之前创build的引用:

 wb.Sheets("SPC July BPW341CL - Copy").Select wb.Sheets("SPC July BPW341CL - Copy").copy after:=wb2.Sheets(4) 

等等

这可能不会完全按照您希望的方式进行,因为我不完全清楚要从哪个工作簿复制哪些工作表。 但是你有一般正确的语法。

你也可以像索引表一样

 dim oSheet as worksheet set osheet = wb.sheets("sheetname") '//to set via name, Or set oSheet = wb.sheets(4) '//Or to set via index 

等等

希望这可以帮助。

编辑:其他几点注意:1)总是使用Option Explicit在代码的顶部。 2)昏暗的wb,wb2,wb3作为工作簿 – 这一行不声明三个工作簿对象。 相反,它实际上声明了两个变体和一个工作簿。 您需要将它们声明为: Dim wb As Workbook, wb2 As Workbook, wb3 As Workbook