特定のフォルダに含まれるPDFファイルの名称と特定のcsvの特定の列に含まれる値で差分を比較して出力したいと考えております。
下記のコードでhere-1
とhere-2
でそれぞれの値が取得できるところまでは到達することができました。下記の例で行くとpdfの名称には5が欠けていて、csvの特定の列にある文字列については、1と2が欠けているという情報を取得したいということになります。
ここで、通常の機械言語であれば、配列の差分を出力するメソッドや、それがない言語でもそれぞれの配列を二重にループさせて総当たりに有無を確認できるのですが、VBAに慣れておらず、配列をで検索するとstartとend値を宣言で指定する等、他の機械言語とは仕様が異なっており、配列の個数が拾ってみるまで分からない今回のケースではどのようにアプローチするべきなのかアドバイスを頂きたく、お願いいたします。
vba
1Sub get_diff() 2 Dim current_path, src_path As String 3 Dim pdf_path_dir As String 4 5 current_path = ThisWorkbook.Path 6 src_path = current_path & "\src\" 7 8 pdf_path_dir = Dir(src_path & "*.pdf") 9 10 Do While Len(pdf_path_dir) > 0 11 Debug.Print Replace(pdf_path_dir, ".pdf", "")'here-1 // resultは1,2,3,4 12 pdf_path_dir = Dir() 13 Loop 14 15 Dim csv_name As String 16 Dim csv_wb As Workbook 17 Dim csv_ws As Worksheet 18 Dim get_col As Integer 19 Dim i As Long 20 Set csv_wb = ActiveWorkbook 21 Set csv_ws = ActiveSheet 22 23 csv_name = Dir(src_path & "*csv") 24 Workbooks.Open Filename:=src_path & csv_name 25 26 get_col = csv_ws.Range("1:1").Find("特定の値").Column 27 i = 2 28 Do While csv_ws.Cells(i, get_col) <> "" 29 Debug.Print Replace(csv_ws.Cells(i, get_col).Value, " ", "")'here-2 // resultは3,4,5 30 i = i + 1 31 Loop 32 33 34End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/02 14:51
2021/11/02 14:58
2021/11/02 15:23
2021/11/02 15:40