儘管很多帖子我已經經歷是沿着相同的路線,我的問題看,沒有一個答案滿足我所期待的。如果你能把我和我聯繫起來,我很樂意閱讀它。VBA - 如何在Excel中從一個工作簿複製一行到另一個?
我有一個工作表的工作簿。爲了簡單起見,假設我的工作簿有一張工作表。在我的工作表中稱爲「Sheet1」,單元格A1到A4中有數據。
我想要什麼我的VBA代碼做的是:
- 複製第1行(或特別單元A1至A4)練習冊 'A' 到範圍變量 'myRange'
- 創建一個新的工作簿,讓我們稱之爲工作簿'B'
- 爲Workbook'B的默認「sheet1」重新命名爲「Test Name」
- Open Workbook'B'(儘管我意識到VBA代碼「Workbooks.Add」會打開一個新的書所以這一步可以是多餘的,因爲Workbooks.Add覆蓋點2和3的一半)
- 粘貼「myRange」到「工作簿B」
- 保存「工作簿B」的第一行名稱爲「測試書」和方括號中的時間戳。該文件還必須是文件擴展名爲「XLS」
- 關閉「工作簿B」並返回到「工作簿」
我到目前爲止是這樣的:
Sub OpenAndSaveNewBook()
'Declarations
Dim MyBook As String
Dim MyRange As Range
Dim newBook As Workbook
'Get name of current wb
MyBook = ThisWorkbook.Name
Set MyRange = MyBook.Sheets("Sheet1").Range("A1,F1")
'Create/Open new wb
newBook = Workbooks.Add
'Save new wb with XLS extension
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & "TEST-BOOK", _
FileFormat:=xlNormal, CreateBackup:=False
'===NOTE: BEFORE THE FOLLOWING RUNS I NEED TO PERFORM ACTIONS ON CELLS VIA VBA ON
'===WORKBOOK 'A'. DOES THE NEWLY CREATE WORKBOOK BECOME THE PRIMARY/ACTIVE WORKBOOK
'===? AND SO THEN DO I NEED TO ACTIVATE WORKBOOK 'A'?
ActiveWorkbook.Close savechanges:=True
'Return focus to workbook 'a'
MyBook.Activate
End Sub
正如你可以看到,我缺乏的是將處理代碼:
- 我複製的數據粘貼到新的工作簿
- 新的變化工作簿的工作表Sheet1名稱到別的東西
- 上保存
最後添加時間戳的文件名字符串,我已經包含在我的代碼一個問題,我想可能有ActiveWorkbook方法的誤解。當代碼「Workbooks.Add」運行時,AFAIK成爲活動工作簿,即焦點。這是否影響在工作簿「A」上運行的VBA代碼?這是否意味着,如果我想添加代碼來處理工作簿「A」的細胞,然後我就需要使用「MyBook.Activate」,其中「MyBook」保存工作簿「A的實際標題的字符串?
任何幫助將不勝感激。
感謝, QF
做'newBook.SaveAs'和'newBook.Close'。正如你所發現的,知道ActiveWorkbook所指的是什麼可能會令人困惑,因此最好在可能的情況下使用明確的引用。 – e100 2012-04-19 14:46:14
感謝您的回覆。我是一名VBA新手,在您的建議之後,我收到了「無效限定符」錯誤消息。我想這是因爲MyBook是錯誤的類型?另外,這對我來說沒有任何意義,因爲粘貼到newBook的命令在哪裏?你能詳細說明一下嗎? – 2012-04-19 14:47:19
@ e100:當您發佈此評論時,我正在編輯我的帖子:) – 2012-04-19 14:48:12