VBA从一张图纸复制/粘贴到所有其他图纸

VBA从一张图纸复制/粘贴到所有其他图纸,vba,excel,Vba,Excel,我正在尝试将sheet1的一个单元格(D1)复制到工作簿所有其他工作表的一个单元格(D1)(我在这里循环浏览文件,工作表的数量会有所不同) 运行下面的代码时,“ActiveSheet.Paste”行显示以下错误:“运行时错误“10004”:工作表类的粘贴方法失败” 下面是一段有问题的代码: 'copy MSA code to sheets!=1 Sub MSAallSheets(wb As Workbook) With wb Range("D1").Copy Fo

我正在尝试将sheet1的一个单元格(D1)复制到工作簿所有其他工作表的一个单元格(D1)(我在这里循环浏览文件,工作表的数量会有所不同)

运行下面的代码时,“ActiveSheet.Paste”行显示以下错误:“运行时错误“10004”:工作表类的粘贴方法失败”

下面是一段有问题的代码:

'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
'将MSA代码复制到工作表中=1.
子MSALLsheets(wb作为工作簿)
与wb
范围(“D1”)。副本
对于wb.工作表中的每个ws
如果ws.Name为“第1页”,则
ws.Activate
ws.范围(“D1”)。选择
活动表。粘贴
如果结束
下一个
以
端接头
如果有必要,以下是我如何通过文件定义循环:

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
Dim文件名,路径名为字符串
将wb设置为工作簿
Pathname=“C:\Users\julia.anderson\Documents\HMDA\test\”
Filename=Dir(路径名和“*.xlsx”)
文件名“”时执行此操作
设置wb=Workbooks.Open(路径名和文件名)
销钉wb
删除wb
MSAllsheets wb
wb.Close SaveChanges:=真
Filename=Dir()
环
端接头
欢迎提出建议


谢谢。

我猜你是从哪张纸上抄的

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
子MSAallSheets(wb作为工作簿)
与wb
范围(“D1”)。副本
对于wb.工作表中的每个ws
如果ws.Name为“第1页”,则
工作分解表(“第1页”)。范围(“D1”)。副本_
远景范围(“D1”)
如果结束
下一个
以
端接头

这对我来说很管用,但有一点改动:

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

参数使更改次要细节/重用代码变得更容易。

欢迎使用SO!提示:带wb的
块既无用又容易混淆,您没有使用带
的对象变量,删除它只会提高可读性。请随意修改你的缩进,我试图编辑它,但我的编辑被拒绝了,因为“这个编辑是不正确的,或者是试图回复或评论现有的帖子。”一只真正了解自己的邪恶独角兽说。所以我想我应该留下一个评论。。。
call MSAallSheets(activeWorkbook, "Page 1", "D1")