簡體   English   中英

Excel VBA 文件名更改

[英]Excel VBA file name changes

我必須使用 2 個 Excel 工作簿:Book1october 和 Book2。 Book1october18 是一個導入文件,這意味着它每月都會隨名稱一起更改(下個月將是 Book1november18)。 我必須通過 VBA 代碼自動將一些數據從 Book1october 復制到 Book2。

這是我寫的代碼:

Windows("Book1october18").Activate
Sheets("Sheet1").Activate
Range("B2:AQ5").Select
Selection.Copy
Windows("Book2").Activate
Sheets("Sheet1").Activate
Range("R2:BG5").Select
ActiveSheet.Paste

我的問題是我不知道如何編寫代碼以便在月份名稱和年份更改時執行我想要的操作。 (我必須在所有月份和 2019 年做到這一點)

您可以使用Date()函數和Format()自動更新您的工作簿名稱

Dim sWbName As String
sWbName = "Book1" & LCase(Format(Date, "mmmmyy"))

Debug.Print sWbName
'Prints Book1october18

工作簿的名稱/路徑並不重要。 使用K.Davis 的代碼提供文件名,或提示用戶輸入路徑/文件以打開 - 將該字符串放入某個sourceBookPath變量中,然后讓宏打開工作簿。 現在您可以持有對該Workbook對象的引用:

Dim sourceBook As Workbook
Set sourceBook = Application.Workbooks.Open(sourceBookPath)

現在,工作表。

Dim sourceSheet As Worksheet

如果工作表總是被命名為“Sheet1”,那么你可以這樣做:

Set sourceSheet = sourceBook.Worksheets("Sheet1")

或者,如果該工作表始終是書中的第一張工作表(無論其名稱如何),您可以執行以下操作:

Set sourceSheet = sourceBook.Worksheets(1)

一旦你有了一個Worksheet對象,你就可以得到你需要的Range - 但首先你需要你的target 同樣,如果“book2”被宏打開,事情就簡單多了:

Dim targetBook As Workbook
Set targetBook = Application.Workbooks.Open(targetBookPath)

還是由宏創建的?

Set targetBook = Application.Workbooks.Add

無論如何,我們想要第一張表:

Dim targetSheet As Worksheet
Set targetSheet = targetBook.Worksheets(1)

現在我們可以從源復制,並粘貼到目標:

sourceSheet.Range("B2:AQ5").Copy targetSheet.Range("R2:BG5")

我們從來不需要.Select.Activate任何東西,而且我們從來不需要關心任何Window

代替:

Windows("Book1october18").Activate

和:

s = LCase(Format(Now, "mmmm")) & Right(Year(Now), 2)
Windows(s).Activate

嘗試這個。

這是對下個月文檔的認可,假設您打開了兩個文檔。

Sub test()
    Dim Wb1 As Workbook, wb2 As Workbook
    Dim Wb As Workbook

    For Each Wb In Workbooks
        If InStr(Wb.Name, "Book1") Then
            Set Wb1 = Wb
        ElseIf InStr(Wb.Name, "Book2") Then
            Set wb2 = Wb
        End If
    Next Wb

    Wb1.Sheets("Sheet1").Range("B2:AQ5").Copy wb2.Sheets("Sheet1").Range("r2")
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM