簡體   English   中英

VBA從一張紙復制/粘貼到其他所有紙

[英]VBA Copy/Paste from one Sheet to All Others

我試圖將工作表1的一個單元格(D1)復制到工作簿的所有其他工作表的單元格(D1)(我在這里遍歷文件,工作表的數量有所不同)。

運行下面的代碼時,“ ActiveSheet.Paste”行給我以下錯誤:“運行時錯誤'10004':Worksheet類的粘貼方法失敗”。

這是有問題的代碼:

'copy MSA code to sheets!=1
Sub MSAallSheets(wb As Workbook)
    With wb
    Range("D1").Copy
        For Each ws In wb.Worksheets
            If ws.Name <> "Page 1" Then
            ws.Activate
            ws.Range("D1").Select
            ActiveSheet.Paste
            End If
        Next
    End With
End Sub

如果有必要,這是我通過文件定義循環的方式:

Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = "C:\Users\julia.anderson\Documents\HMDA\test\"
Filename = Dir(Pathname & "*.xlsx")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
Delete wb
MSAallSheets wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub

建議將是最歡迎的!

謝謝。

我猜你要從哪張紙復印...

Sub MSAallSheets(wb As Workbook)
    With wb
    Range("D1").Copy
        For Each ws In wb.Worksheets
            If ws.Name <> "Page 1" Then
                wb.Sheets("Page 1").Range("D1").Copy _
                                      ws.Range("D1")                      
            End If
        Next
    End With
End Sub

這對我有用,但稍有改動:

Sub MSAallSheets(wb As Workbook, SourceSheet As String, SourceAddress As String)
    With wb
    Sheets(SourceSheet).Range(SourceAddress).Copy
        For Each ws In wb.Worksheets
            If ws.Name <> SourceSheet Then
                ws.Activate
                ws.Range(SourceAddress).Select
                ActiveSheet.Paste
            End If
        Next
    End With
End Sub

示例調用:

call MSAallSheets(activeWorkbook, "Page 1", "D1")

使用參數可以更輕松地更改次要細節/重復使用代碼。

暫無
暫無

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

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