■実現したいことは以下になります。
・画像2の項目列(B4:B14)について
指定された項目(緑枠)が記載されていればデータ部分を読み込んで、画像1「自動読込みツール.xlsm」の緑枠に条件判定付きで記載させたい。
例えば、B4の"A Sample"じゃないとD4の"4.5634"を読み込まない。
それ以外("ASample"や"A Ssample"など)記載されていれば画像1「自動読込みツール.xlsm」の緑枠には、"該当項目がありません"というメッセージを記載させたい。
但し、項目の列と行は固定です("A Sample"だとB4が固定です)。
■分からないこと
・どうやって該当の項目を条件判定しているか分からないです。
■前提
・条件判定なしで自動で読み込むプログラムは作成いたしました。
画像が以下になります。
画像1 自動読込みツール.xlsmの画面 [読込み結果]シート
データクリアボタンは無視していいです。
画像2 読み込みデータ.xlsの画面 [読み込みデータ]シート
コードが以下になります。
VBA
1Private Sub Select_Read_FilesButton_Click() 2'---------------------------- 3'データファイル読込みボタン 4'---------------------------- 5 Dim FType As String 'ファイルの種類 6 Dim Prompt As String 'ダイアログのタイトル 7 Dim Target As String '任意読み込むパス 8 Dim FPath As Variant 'ファイル参照パス 9 Dim Pos As Long '参照先のセル 10 Dim WS As Worksheet '対象のシート名 11 12 Set WS = Worksheets("読込み結果") 13 14 '選択できるファイルの種類をxlsに限定 15 FType = "Excelブック,*.xls" 16 17 'ダイアログのタイトルを指定 18 Prompt = "対象データファイルを選択して下さい" 19 20 'ファイル参照ダイアログの表示 21 FPath = Application.GetOpenFilename(FType, , Prompt) 22 23 'ダイアログでキャンセルボタンが押された場合は処理を終了 24 If FPath = False Then 25 End 26 End If 27 28 'G5セルにファイル名をセット 29 WS.Cells(5, 7).Value = FPath 30 31 Pos = InStrRev(Cells(5, 7).Value, "\") 32 33 ' "'"はファイル名からシート名まで括る 34 Target = "'" & Left(Cells(5, 7).Value, Pos) & "[" & Mid(Cells(5, 7).Value, Pos + 1) & "]" 35 36 '外部参照式にて読み込む際ファイルをオープンさせない 37 Range("E8") = ExecuteExcel4Macro(Target & "読み込みデータ'!R1C2") 'Sample No.表示 38 39 Range("E9") = ExecuteExcel4Macro(Target & "読み込みデータ'!R1C4") 'Test No.表示 40 41 WS.Range("C10").Formula = "=" & Target & "読み込みデータ'!D4" 'A Sample表示 42 WS.Range("C10").Value = WS.Range("C10").Value 43 44 WS.Range("E10").Formula = "=" & Target & "読み込みデータ'!D5" 'B Sample表示 45 WS.Range("E10").Value = WS.Range("E10").Value 46 47 WS.Range("G10").Formula = "=" & Target & "読み込みデータ'!D6" 'C Sample表示 48 WS.Range("G10").Value = WS.Range("G10").Value 49 50 WS.Range("C11").Formula = "=" & Target & "読み込みデータ'!D8" 'D Sample表示 51 WS.Range("C11").Value = WS.Range("C11").Value 52 53 WS.Range("E11").Formula = "=" & Target & "読み込みデータ'!D10" 'E Sample表示 54 WS.Range("E11").Value = WS.Range("E11").Value 55 56 WS.Range("G11").Formula = "=" & Target & "読み込みデータ'!D13" 'F Sample表示 57 WS.Range("G11").Value = WS.Range("G11").Value 58 59 WS.Range("I11").Formula = "=" & Target & "読み込みデータ'!D14" 'G Sample表示 60 WS.Range("I11").Value = WS.Range("I11").Value 61 62End Sub
説明に曖昧な点、矛盾した点があります。情報は正確に提示してください。
> 画像1 自動読込みツール.xlsmの画面 [読込み結果]シート
> 画像2 自動読込みツール.xlsmの画面 [読込み結果]シート
画像2 は 自動読込みツール.xlsmの画面ではないですよね。
> それ以外("ASample"や"A Ssample"など)記載されていれば「データサンプル.xlsm」の緑枠には、"該当項目がありません"というメッセージを記載させたい。
「データサンプル.xlsm」というのは 画像2 のブックのことですか。画像2の「読み込みデータ」シートの緑枠の"ASample"や"A Ssample"と記載されたセルに「該当項目はありません」と上書きするということですか。
修正いたしました。
> 画像2 は 自動読込みツール.xlsmの画面ではないですよね。
画像2は読み込みデータ.xlsになります。
> 「データサンプル.xlsm」というのは 画像2 のブックのことですか。
画像1の「自動読込みツール.xlsm」のことです。
> 画像2の「読み込みデータ」シートの緑枠の"ASample"や"A Ssample"と記載されたセルに「該当項目はありません」と上書きするということですか。
いいえ、「読み込みデータ」シートの"A Sample"が仮に"ASample"や"A Ssample"など記載された場合、画像1の結果では「該当項目はありません」と緑枠に記載することになります("A Sample"の場合だとC10に記載)。
"A Sample"という項目名で固定?させたいです。
読み込みデータ.xlsは、Openしてはいけないのですか?
kitasueさん
読み込んでいる間は、Openしないプログラムで作成しているため、できればOpenしたくないです。
回答2件
あなたの回答
tips
プレビュー