前提・実現したいこと
お世話になります。
行き詰っているので教えてください。
実現したいこと:
“marge“フォルダ内の全てのファイル【検索ファイル.xlsm】のC2の値と一致する値を
当該マクロつきファイル【一覧.xlsm】のF列から探し同一行のM列へ
【検索ファイル.xlsm】のS9の値(日付)を転記したいです。
C2の値は3文字以上の数値で
123・456・789 のようになっているケースと
123 のように“・”を含まないケースがあります。
“・”で分割された値をSplitで検索値に指定したいと考えています。
下記コード
‘Noと紐づくItem(日付)を取得
の部分については
こちらのサイトの
VBA:配列 Keyに紐づくItemの格納がうまくいかない
https://teratail.com/questions/348547
の投稿を引用させて頂きました。
コードを載せることも恥ずかしいのですが...
有識者の方のお力をお借り出来ると幸いです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
‘Noと紐づくItem(日付)を取得
With ws exists(No) Then
でエラーになります。
該当のソースコード
Sub
1 2‘margeフォルダパス指定 3Const Path=”C:\AAA\BBB\CCC\marge\ 4 5Dim cnt As Long 6Dim I As Long 7Dim buf As String 8Dim xls As New Excel.Application 9Dim wb As Workbook 10Dim ws As Worksheet 11Dim ws2 As Worksheet 12Dim num As String 13Dim No() As String 14Dim msg As String 15 16Application.ScreenUpdating=False 17 18‘確認メッセージ 19msg=”事前準備①・②は済みましたか?” 20If msgBox(msg,vbYesNo)=vbNo Then Exit Sub 21 22‘margeフォルダ内のファイルを全て開き、日付を取得 23buf=Dir(Path) 24 25cnt=6 26 27Do While buf <>”” 28 29Set wb=xls.Workbooks.Open( Path & buf ) 30Set ws=wb.Worksheets(“sheet4”) 31num=ws.Cells(2,3) 32 33‘dcの作成 34Dim dc As Object 35Set dc=CreateObject(“Scripting.Dictionary”) 36 37‘検索ファイルのC2の値を”・“で区切り、変数Noへ格納 38No=Split(num,”・”) 39For i=0 To UBound(No) 40 41‘Noと紐づくItem(日付)を取得 42Dim arr 43 44With ws exists(No) Then 45dc.Add No,Array(Array(.Cells(15,6))) 46Else 47arr=dc(No) 48ReDim Preserve arr(UBound(arr)+1) 49Arr(UBound(arr))=Array(,Cells(15,6)) 50End If 51 52‘日付を一覧のM列へ転記 53Set ws2=ThisWorkbook.Sheets(“作業シート“) 54Ws2.Cells(dc(No),”M”)=.Cells(15,6).Value 55 56End With 57Next i 58 59Wb.Close Savechanges:=False 60 61buf= Dir () 62 63cnt = cnt + 1 64 65Loop 66 67Set xls= Nothing 68 69Application.ScreenUpdating = True 70 71End Sub 72 73コード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/11 00:05
2022/01/11 00:12
2022/01/11 02:00