2

私はExcelマクロを知らないので、これはばかげた質問だと確信しています. ここに 7 つのワークシートを含む Excel ワークブックがあります (K:\Common\HSRE\Hospice Payment Reform\Plotzke\Ad Hoc Tasks\OY1\Monitoring for MACs\Results\Results_2012 - Template – Master.xlsx)

これらの各ワークシート (ワークシートごとにフォーマットが異なります) からこのワークブック (K:\Common\HSRE\Hospice Payment Reform\Plotzke\Ad Hoc Tasks\OY1\Monitoring for MACs\Results\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': 添字が範囲外です

何か案は?

4

3 に答える 3

2

これは を指定していないためRangeFormatが全体に対してコピーされます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

ファイルの 1 つにxlsm拡張子が付けられているのは、Sub.

引用されたエラーを取得する理由がわかりません。

于 2013-11-14T16:47:04.117 に答える
0

最初にマスター ワークブックを開いてから、開いているテンプレートに形式をコピーできます。

テンプレート ブックが開いていて、このマクロがテンプレート ブックにあると仮定すると、次のように使用できます。

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 に答える
0

ワークブックが開いている場合は、パス全体を指定する必要はありません

これを試して

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

他のものと同じです。

于 2013-11-14T16:38:54.800 に答える