他ファイルを参照するマクロ
excel2010
check.xlsmというファイルにマクロが存在します。
このファイルは、c:\workフォルダに登録されている***A2***.xlsmというファイルからデータを抽出するマクロになっています。
***A2***.xlsmの***は、ファイル名の中にA2という文字があり、
色々とファイル名が変化するということを意味しています。
***A2***.xlsmのファイルにはチェックボックスがあり、名前を付けています。
_ch227173520_0002
が一例です。
check.xlsmのファイルで、いろんなファイルのチェックボックス状態を収集するマクロが
下記です。
Dim mypath As String
Dim myFile As String
'検索フォルダ
mypath = "C:\work\"
'検索ファイル名
myFile = Dir(mypath & "*A2*.xlsm")
'F列に抽出した結果を記載
Workbooks.Open mypath & myFile
With Workbooks("check.xlsm").Worksheets("Sheet1").Range("F65536").End(xlUp)
.Offset(0, 0).Value = myFile 'ファイル名
.Offset(63, 0).Value = Range("_ch227173520_0002").Value
End With
Workbooks(myFile).Close savechanges:=False
このマクロでcheck.xlsmファイルのF64セルに、
100A2001.xlsmファイルのチェックボックス_ch227173520_0002の内容を抽出しています。
しかしながら、***A2***.xlsmファイルに仕様変更があり、チェックボックスの名前が変わってしまいました。
_ch227173520_0002
→
_ch3131000
の様にです。
これだと、データを参照できないので実行エラーが出てしまいます。
なので、
.Offset(63, 0).Value = Range("_ch227173520_0002").Value
→
.Offset(63, 0).Value = Range("_ch3131000").Value
とマクロを修正すれば、データは参照可能になりますが、
どのA2ファイルがどちらのチェックボックスなのかは、分かりません。
エラーが出たらcheck.xlsmのファイルを変えてやり直すというのは不便です。
チェックボックスの名前がどちらであっても
.Offset(63, 0).Valueにデータを持ってくる様にしたいのですが、
どの様にしたらよいでしょうか?
マクロ初心者です。
学習マクロくらいしかできないので、ベタで教えていただきたく、
よろしくお願いします。
お礼
回答頂きありがとうございました。