下記のように作成しているのですが、変数宣言すらよく理解できておらず実行できません。
どなたか、アドバイス頂ければ幸いです。
Sub 直工内訳Kシート作成()
Dim OpenFileName As String
trgtShName = "直工内訳K"
Dim sWS As Workbook '中間ファイルブック
Dim dWS As Workbook '参照ブック
Dim flag As Boolean 'シートが開いているかどうかのフラグを定義する
Dim wstData As Worksheet '中間ファイル「直工内訳K」用オブジェクト変数
Dim wstAnsw As Worksheet '参照ブックの各シートの入力データ用オブジェクト変数
Dim r As Long
'入力したいExcelファイルを選ぶ
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")
'キャンセル時の処理
If OpenFileName = "False" Then
'メッセージ表示
MsgBox "キャンセルされました。処理を終了します。"
End
Else
Workbooks.Open OpenFileName
End If
※ ここから先が分からず困っています。
For Each sWS In ThisWorkbook.Worksheets
If dWS.Name Like "*" & trgtShName & "*" Then 'シートの名前に直行内訳という名前があれば
flag = True 'フラグをTrueにする
Exit For
End If
Next sWS
If flag = True Then
Set sWS = ThisWokbook.Worksheets("直工内訳K")
'「Data」シート初期化
With wstData
.Rows("2:" & .Rows.Count).ClearContents
End With
lngWRow = 2 '初期化に伴い書込行も2へリセット
'すべてのワークシートを繰り返し処理
For Each wstAnsw In Worksheets
With wstAnsw
If .Name <> "内訳" Then 'シート名が「Data」を除く場合
For r = 7 To 42 '直工内訳Kシートの7行目から42行目までのレコードを読み取る処理
If .Cells(r, 1) <> "" Then '記載がある場合
wstData.Cells(lngWRow, 1) = .Cells(r, 1) '名称A列
wstData.Cells(lngWRow, 2) = .Cells(r, 2) '名称B列
wstData.Cells(lngWRow, 3) = .Cells(r, 3) '名称C列
wstData.Cells(lngWRow, 4) = .Cells(r, 4) '摘要
wstData.Cells(lngWRow, 5) = .Cells(r, 5) '金額
wstData.Cells(lngWRow, 6) = .Cells(r, 6) '備考
lngWRow = lngWRow + 1 '書込み行を次の行へ進める
ElseIf .Cells(r, 42) = "" Then 'シート名が空欄の場合
Exit For '読み取りを終了
End If
Next
End If
End With
Next
End If
End Sub