繁体   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