|
いつもお世話になります^^
質問させていただきます。
うちの会社では「統合」をよくつかいます。
標準機能でも十分なんですが、もちっと簡単にしてみようと、マクロにすることにしました。
統合させる表は、全く構成の表で、例えば、「統合テスト.xls」の「4月」、「5月」、「6月」といった月別の表があり、それを同ブックの「1月〜3月累計」シートに統合させます。
マクロは、「Personal.xls」に組んでいます。
コードは以下の通りです。
ユーザーフォーム上に
ラベル lblSaki(統合先のシート名&範囲のアドレスを表示)
リスト lstSheet (統合元のシート名をリスト(範囲は先と同じ))
コマンドボタン 3つ(「追加」「削除」「実行」用)
Option Explicit
Private pr_strAddress As String '統合範囲(R1C1型式)
Private pr_strSaki As String '統合先の先頭アドレス
Private pr_ws As Worksheet '統合先シート
Private Sub UserForm_Initialize()
Dim r As Range
If Selection.Areas.Count > 1 Then
MsgBox "範囲指定は一ヶ所にしてください"
Exit Sub
End If
lblSaki.Caption = ActiveSheet.Name & " " & Selection.Address
pr_strAddress = Selection.Address(ReferenceStyle:=xlR1C1)
pr_strSaki = ActiveCell.Address
Set pr_ws = ActiveSheet
End Sub
Private Sub cmdOK_Click()’実行ボタン
Dim strTougou As String
Dim i As Long
With lstSheet
If .ListCount = -1 Then
MsgBox "統合するシートを選んでください"
Exit Sub
Else
For i = 0 To .ListCount - 1
strTougou = strTougou & """'" & ActiveWorkbook.Path & "\[" & ActiveWorkbook.Name & "]" & .List(i) & "'!" & pr_strAddress & ""","
Next i
End If
End With
strTougou = Left$(strTougou, Len(strTougou) - 1)
Debug.Print strTougou
pr_ws.Range(pr_strSaki).Consolidate sources:=Array(strTougou), Function:=xlSum
End Sub
これを実行すると、どうしても、上記(太字)の統合させる場所でエラーが出てしまいます。
どういったエラーかというと、『統合元ファイル'[統合テスト.xls]4月"を開くことができません』です。
試しに、マクロの記録で統合すると、以下のようなコードが生成されました。
Range("G13:AA24").Select
Selection.Consolidate Sources:=Array( _
"'C:\WINDOWS\デスクトップ\[統合テスト.xls]4月'!R13C7:R24C27", _
"'C:\WINDOWS\デスクトップ\[統合テスト.xls]5月'!R13C7:R24C27", _
"'C:\WINDOWS\デスクトップ\[統合テスト.xls]6月'!R13C7:R24C27"), Function:=xlSum, TopRow _
:=False, LeftColumn:=False, CreateLinks:=False
もともと、これを参考にコードを組んだわけです。
「Array()」の中を、変数(strTougou)なわけですが、
Debug.Print strTougou
で確かめると、
中味は、
"'C:\WINDOWS\デスクトップ\[統合テスト.xls]4月'!R13C7:R24C27",
"'C:\WINDOWS\デスクトップ\[統合テスト.xls]5月'!R13C7:R24C27",
"'C:\WINDOWS\デスクトップ\[統合テスト.xls]6月'!R13C7:R24C27"
記録で生成されたコードと同じのようなんですが・・・
何がいけないのか、さっぱりわかりません。
ちなみに、マクロの記録も、実行ブックと別ブックに記録して、そこから実行してみると、正常に動きます。
アドバイスの程よろしくお願いします。
うまくまとめられず長くなりました(^^;
すんません(>_<)
|
|