【问题标题】:How to paste data from a worksheet in a master workbook into up to 30 other workbooks using a loop?如何使用循环将主工作簿中工作表中的数据粘贴到最多 30 个其他工作簿中?
【发布时间】:2023-01-31 01:02:55
【问题描述】:

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

它卡在

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

【问题讨论】:

  • 看起来您缺少工作表循环?
  • 您没有在任何地方定义 ws
  • 无论如何它应该是If WS.Name = "FX Rates"
  • 看看这个,给它投票:stackoverflow.com/q/30575923/4961700

标签: excel vba


【解决方案1】:

正如所评论的那样,看起来您缺少工作表的循环。目前,您只是循环浏览工作簿,而不是工作表。

添加了一个循环来解决这个问题。代码遍历每个打开的工作簿,检查名称。 If Name &lt;&gt; "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

【讨论】:

  • 另外,请确保您的工作簿实际以扩展名命名。我发现它通常不是...
  • 谢谢,这有效。由于格式化而不得不调整一些东西,现在一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多