【问题标题】:Excel Macro: Beginner - Pasting Formats from one Workbook to AnotherExcel 宏:初学者 - 将格式从一个工作簿粘贴到另一个工作簿
【发布时间】:2013-11-27 18:37:18
【问题描述】:

我不知道 Excel 宏,所以我敢肯定这是一个荒谬的问题。我这里有一个 excel 工作簿,其中包含 7 个工作表(K:\Common\HSRE\Hospice Payment Reform\Plotzke\Ad Hoc Tasks\OY1\Monitoring for MACs\Results\Results_2012 - 模板 – Master.xlsx)

我想将每个工作表中的格式(每个工作表上的格式不同)复制到此工作簿(K:\Common\HSRE\Hospice Payment Reform\Plotzke\Ad Hoc Tasks\OY1\Monitoring for MACs\结果\Results_2012 – Template.xlsx)。此工作簿中的工作表名称与第一个工作簿中的名称相同。

根据我在网上看到的情况,我认为我可以做类似的事情(至少对于第一个工作表)

Sub FormatMAC()

Workbooks("K:\Common\HSRE\Hospice Payment Reform\Plotzke\Ad Hoc Tasks\OY1\Monitoring for MACs\Results\Results_2012 - Template - Master.xlsx").Worksheets("Provider Level").Range("A1:CZ600").Copy

Workbooks("K:\Common\HSRE\Hospice Payment Reform\Plotzke\Ad Hoc Tasks\OY1\Monitoring for MACs\Results\Copy of Results_2012 - Template1.xlsx").Worksheets("Provider Level").Range("A1:CZ600").PasteSpecial (xlPasteFormats)

End Sub

该程序似乎在第一行挂断了。我不断收到此错误

运行时错误“9”:下标超出范围

有什么想法吗?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这没有指定Range,因此Format 被复制到整个Worksheet

    Sub FormatMAC()
        Dim wb1 As Workbook, wb2 As Workbook
        Set wb1 = Workbooks("Results_2012 - Template - Master.xlsx")
        Set wb2 = Workbooks("Copy of Results_2012 - Template1.xlsm")
        Dim ws1 As Worksheet, ws2 As Worksheet
        For Each ws1 In wb1.Worksheets
          Set ws2 = wb2.Worksheets(ws1.Name)
          ws1.Cells.Copy
          ws2.Cells.PasteSpecial (xlPasteFormats)
        Next ws1
    End Sub
    

    其中一个文件具有xlsm 扩展名,因为它包含Sub

    我不知道你得到引用的错误的原因。

    【讨论】:

    • I do not know the reason for you obtaining the error quoted. 当 Excel 无法找到具有特定名称的工作簿时,您会在上述场景错误中收到“下标超出范围”。 :)
    • 太棒了。添加路径不是可选的,它必须不存在。
    【解决方案2】:

    您可以先打开Master工作簿,然后将格式复制到打开的模板中

    假设模板工作簿是打开的并且这个宏在模板工作簿中,你可以使用下面的

    Sub FormatMAC()
    Dim mstrWB as Workbook
    
    Set mstrWB = Workbooks.Open("K:\Common\HSRE\Hospice Payment Reform\Plotzke\" & _
        "Ad Hoc Tasks\OY1\Monitoring for MACs\Results\Results_2012 - Template -" & _
        " Master.xlsx")
    mstrWB.Worksheets("Provider Level").Range("A1:CZ600").Copy
    
    Worksheets("Provider Level").Range("A1:CZ600").PasteSpecial (xlPasteFormats)
    
    mstrWB.Close
    
    End Sub
    

    【讨论】:

      【解决方案3】:

      如果工作簿已打开,则无需提供整个路径

      试试这个

      Workbooks("Results_2012 - Template - Master").Worksheets("Provider Level").Range("A1:CZ600").Copy

      与其他相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-21
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多