excel 如何使用循环将数据从主工作簿中的工作表粘贴到最多30个其他工作簿中?

ep6jt1vc  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(177)

我正试图从主控文件复制数据,然后将其粘贴到已循环打开的工作簿中。
它会卡在

If WS.Name = WB.Sheets("FX Rates") Then
Sub Update_Files()

Dim WB As Workbook
Dim WS As Worksheet
Dim Master As Workbook

Set Master = ThisWorkbook

ThisWorkbook.Sheets("FX").Range("A1:I148").Select
Selection.Copy

For Each WB In Application.Workbooks
    If WB.Name <> "Master File.xlsb" Then
        If WS.Name = WB.Sheets("FX Rates") Then
            'Paste FX data from Master
            Range("A1").PasteSpecial xlpastevalues
        End If
    End If
Next WB
qojgxg4l

qojgxg4l1#

如注解所示,看起来您的工作表缺少一个循环。目前,您只循环工作簿,而不是工作表。
添加了一个循环来解决这个问题。代码循环通过每个打开的工作簿,检查名称. If Name <> "Master File.xlsb",然后继续下一个循环。第二个循环迭代当前工作簿中的每个工作表,并检查其名称是否等于"FX Rates",如果等于,则粘贴复制的选定内容并继续循环。
然而,有更多类似于VBA的方法来实现同样的事情,但这回答了你的问题。它编译和运行得很好。

Sub Update_Files()
    
    Dim WB As Workbook
    Dim WS As Worksheet
    Dim Master As Workbook
    
    Set Master = ThisWorkbook
    
    ThisWorkbook.Sheets("FX").Range("A1:I148").Select
    Selection.Copy

    For Each WB In Application.Workbooks
        If WB.Name <> "Master File.xlsb" Then
            For Each WS In WB.Worksheets
                If WS.Name = "FX Rates" Then
                    'Paste FX data from Master
                    WS.Range("A1").PasteSpecial xlPasteValues
                End If
            Next WS
        End If
    Next WB

End Sub

相关问题