我還是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