|
つん さん、Jakaさん
こんにちは。
>
>うちの会社では「統合」をよくつかいます。
>標準機能でも十分なんですが、もちっと簡単にしてみようと、マクロにすることにしました。
>統合させる表は、全く構成の表で、例えば、「統合テスト.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
'Array(strTougou)が問題なんでは・・と思います。
'これで配列Array("a","b","c")とはなりませんよ!!
'Spilt(StrTougou,",")にしてみてはいかがてしょうか?
>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"
>
>
>記録で生成されたコードと同じのようなんですが・・・
>何がいけないのか、さっぱりわかりません。
>ちなみに、マクロの記録も、実行ブックと別ブックに記録して、そこから実行してみると、正常に動きます。
>
>アドバイスの程よろしくお願いします。
>
>うまくまとめられず長くなりました(^^;
>すんません(>_<)
|
|