2

我不知道 Excel 宏,所以我敢肯定这是一个荒谬的问题。我这里有一个包含 7 个工作表的 excel 工作簿(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\Results_2012 – 模板.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”:下标超出范围

有任何想法吗?

4

3 回答 3

2

这并没有指定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.

我不知道您获得引用错误的原因。

于 2013-11-14T16:47:04.117 回答
0

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

尝试这个

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

另一个也一样。

于 2013-11-14T16:38:54.800 回答
0

您可以先打开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
于 2013-11-14T16:39:33.053 回答