我还是VBA的新手,因此我所做的大多数编码都是在从互联网复制后记录或修改的。重命名工作簿vba无法正常工作
在记录我执行的步骤后,我注意到宏将记录文件名和表名。
因此,如果我要打开一个与录制宏名称不相似的文件,我的宏将无法工作。
例如,文件B是在宏中注册的名称,但是我现在希望在文件C上执行宏程序但失败。
有没有一种方法可以绕过这个问题?
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
非常感谢@ainwood的回答,但我仍然不清楚我应该在我的VBA中改变什么..就像你说我已经提出了一个引用,这是一个fn,是不是可能的是,我用fn替换了上述VBA中的所有名称?例如, /Windows(“SPC July BPW341CL - Copy.csv”)。激活/被替换为/Windows("fn").Activate/ ?? 截至目前,我只是想改变文件名“SPC July BPW341CL - Copy.csv”,这样其他名称不同的工作簿也可以由宏运行。 – Fong
你能解释一下你想要的宏吗?允许用户选择一个Excel文件,然后呢? – ainwood
文件A用于编译数据,文件B到Z或甚至更多是原始数据。我需要做的是让用户选择输入文件(文件B到Z),然后将其中的所有数据复制到文件A中,将它们一起编译到一个文件中。通过这样做,我无法列出所有文件名,因为它们会随时间变化,具体取决于原始数据。那么有没有一种方法可以让我可以用某种方式对它进行编程,以便用户可以选择任何文件,而不必一次更改文件名。 – Fong