當我嘗試和VBA打開一個新的工作簿 - 基於我的個人宏工作簿宏 - 使用:workbooks.add在VBA系統中打開兩個工作簿
Workbooks.Add
系統地打開了兩個工作簿。
當我嘗試使用類似相同的:
Workbooks("book1").Activate
它的作品很少,因爲這個詞「書」後的數字指標很少匹配的「BOOK1」。
我的最終目的是自動命名創建的工作簿。但是,vba最終命名爲第二個空的工作簿,而不是第一個可取的工作簿。
我有Office 365家庭版。
完整的代碼是:
********************
Sub ExportNameAndSave()
ActiveWindow.Activate
ActiveSheet.Select
Dim lastrow As Range
Dim lastcolumn As Range
Dim refnumber As String
refnumber = Range("b4").Value
Range("A1", Range("a60000").End(xlUp)).Select
Set lastrow = Selection
Range("A1", Range("a1").Offset(0, 50).End(xlToLeft)).Select
Set lastcolumn = Selection
Range(lastrow, lastcolumn).Select
Selection.Copy
Workbooks.Add
ActiveWorkbook.Activate
ActiveWorkbook.SaveAs Filename:="D:\Common Area\" & refnumber & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
********************
注意:我已經通過數十個技巧在這個論壇的人遇到類似的問題時,他們在Excel中從菜單中打開工作簿。他們不工作。
請注意,我的問題是關於使用vba代碼打開工作簿。
該宏一直工作到Workbooks.Add
之前。
然而,在這一點上,這是發生了什麼:
1)它創建了一個新的工作簿和出口包含在最初的工作簿到這個新工作表中的INTIAL片的內容 - 這正是我想要的;
2)然後它打開第二張工作表 - 這不是我想要的 - 並且在命令「ActiveWorkbook.Activate」中,它選擇第二個不需要的工作簿,並實際上成功命名並保存它。
因此,我有一個成功命名和保存的文件,但它沒有內容,因爲第二個工作簿是空的。我想要的是命名並保存包含導出內容的第一個工作簿。
注意:此子效果很好,當我關閉我所有的Excel工作簿,當我重新開放只是開始工作簿,當我更換行「Workbooks.Add」與「'工作簿(‘BOOK1’)。激活「,例如。
但是,由於上述原因,這不會給出可重複的,可靠的結果。
任何幫助,將不勝感激。
閱讀您的文章後,我仍然困惑,你想達到什麼目的?你想複製'ActiveSheet'(這已經不是建議)到一個新的工作簿?你想通過代碼創建這個新的工作簿?用這行「Workbooks.Add」? –
快速查詢。你正在複製範圍,但不粘貼它的地方? –
@SiddharthRout這是一個很好的;)錯過了這個 –