VBAでエクセルファイルのデータを取得して、そのデータを配列に格納しようとしているのですが、ファイルを取り込むことができません。
配列への格納に問題があると思います。ご教授お願いします。
Sub fileScript() Dim Button, T, I, F, L, Y As Integer Dim OpenExcelFileName, ExcelFileName, ExcelFilePath, FileName As String Dim Kaitou(100, 100) As String Dim MergeWorkbook_data Dim ThisWorkbook_data Application.DisplayAlerts = False T = 5 Button = MsgBox("コピペを行いますか?", vbYesNo + vbQuestion, "確認") If Button = vbYes Then OpenExcelFileName = Application.GetOpenFilename("Microsoft Excelブック,*画面.xlsx") If OpenExcelFileName <> "False" Then ExcelFileName = Dir(OpenExcelFileName) ExcelFilePath = Replace(OpenExcelFileName, ExcelFileName, "") MsgBox ExcelFilsePath & "この選択フォルダからデータを読込み込みます。" Else MsgBox "キャンセルされました" Exit Sub End If FileName = Dir(ExcelFilePath & "*画面.xlsx") Do While FileName <> "" WorkBooks.Open FileName:=ExcelFilePath & FileName, ReadOnly:=True, UpdateLinks:=0 Sheets("画面項目説明").Select L = 0 Y = 0 ここから配列へ格納 配列への代入が失敗します For I = 10 To UBound(Kaitou, 1) For F = 14 To UBound(Kaitou, 1) MergeWorkbook_data = WorkBooks(FileName).Worksheets(I).Range("N" & Rows.Count).End(xlUp).Row ThisWorkbook_data = ThisWorkbook.Worksheets("Sheet3").Range("a" & Rows.Count).End(xlUp).Row Kaitou(L, Y) = Cells(I, "N").Value L = L + 1 Y = Y + 1 Next F Next I ActiveWindow.Close Sheets("Sheet3").Select L = 0 Y = 0 For I = 1 To UBound(Kaitou, 1) For F = 1 To UBound(Kaitou, 1) Cells(T, I).Value = CStr(Kaitou(L, Y)) L = L + 1 Y = Y + 1 Next F Next I FileName = Dir() T = T + 1 Loop Range("B1") = T - 5 MsgBox "ファイル数" & T - 5 & "件 取り込みました。" Else MsgBox "処理を中断します" End If Application.DisplayAlerts = True End Sub
「ファイルを取り込むことができません。」だけでは状況が把握できません。
エラーがでるなら、どの行でエラーがでるのか、とエラーメッセージを質問に追記してください。
あと、開発中は、
Application.DisplayAlerts = False
のコードはコメントアウトしておきましょう。
申し訳ありません
エラーではなく下から6行目の
MsgBoxでファイルを何件取り込んだか表示するのですが
ファイルを取り込めず、「ファイル数0件 取り込みました」
と表示されてしまいます。
もう少し状況を整理してください。
コード中に「配列への代入が失敗します」というコメントがありますがエラーが出てるのではないですか?
でも↑のコメントではエラーではないという。
またその行まで到達しているのであれば、カウンタTは必ずインクリメントされるはず(途中でループを抜ける手段がないため)なので、0件ということはないはず。
本当に「配列への代入が失敗します」のところは通過しているのでしょうか?
それからカウンタTはなぜ5から始めて、わざわざ最後に5を引いているのでしょうか?
どういった意味があるのか教えてください。
回答1件
あなたの回答
tips
プレビュー