[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『UserFormで参照したパスのファイルが見つからないエラー』(vbkka)
始めて投稿します。VBA初心者です。
過去にVBAで作成されたマクロ集計ツールの改修タスクを請け負ったのですが、
改修が上手くいかず、アドバイスいただければ幸いです。
マクロの処理全体像は以下の流れで、
処理3の前に新たに2つ処理を追加したいのですが、処理aの実行時に
「実行時エラー'1004' 申し訳ありません。ファイル名が見つかりません。」と表示されて処理が成立しません。
●処理の全体像
1.エクセル上の実行ボタンを押す
2.UserFormが立ち上がり、「選択」ボタンを押して集計対象データが格納されたフォルダを選択する
3.集計処理実行
4.集計結果を所定のシートに出力する
5.終了
●新たに追加したい処理
a.2で参照したフォルダに含まれる一つのcsvファイルをマクロ実行ファイル内にシート追加する
b.追加したシートを参照して集計処理を行い、結果を所定のシートに出力する
記述したVBAは以下です。
中断にある'ブックを開くで処理がエラーとなってしまいます。
ご確認いただければ幸いです。
どうぞよろしくお願いいたします。
Private Sub CommandButton1_Click()
'画面表示高速化 Application.ScreenUpdating = False '警告画面非表示 Application.DisplayAlerts = False
'変数一覧
'目的のファイルが格納されているフォルダパスを取得する変数 Dim PathName As String
'アラート文言 Dim cnsTitle As String cnsTitle = "フォルダ内のファイル名一覧取得"
'ファイルのパス Dim TempFile As String
'クリックログを検索するときに使用 Dim ClicklogFile As String ClicklogFile = "\linklog_*.csv"
'以下処理開始 '※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
'フォルダを選択し、パスを取得する PathName = GetTargetpath()
'フォルダが選択されていない場合終了 If PathName = "集計対象フォルダが選択されていません" Then MsgBox (PathName) GoTo FinishTools End If
' フォルダの存在確認 If Dir(PathName, vbDirectory) = "" Then MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTitle GoTo FinishTools End If
'テキストボックスにフォルダのパスを表示 Label2.Caption = "集計対象フォルダ : " & vbCrLf & PathName
'Toolsのファイル取り込み&配列取得処理の前にlinklogシート作成処理を追加する 'linklogシートを作成する Set NewWorkSheet = Worksheets.Add() NewWorkSheet.Name = "linklog"
'"linklog_*.csv"を取込む 'dataBookを定義する Dim dataBook As Workbook
'ブックを開く 'Pathとファイル名を指定すると処理が成立した 'Set dataBook = Workbooks.Open("C:\Users\TaroYamada\Desktop\LOG\linklog_123456789") '変数を使って処理するとエラーとなる 'エラー内容:実行時エラー'1004' 申し訳ありません。ファイル名が見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。 TempFile = Dir(PathName & ClicklogFile, vbNormal) Set dataBook = Workbooks.Open(TempFile)
'開いたブックのデータをコピー dataBook.Worksheets(1).Range("A1").CurrentRegion.Copy
'マクロを記述したブックに貼り付け ThisWorkbook.Worksheets("linklog").Range("A1").PasteSpecial xlPasteAll
'閉じる dataBook.Close
'フォルダのパスを取得する関数 With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then GetTargetpath = .SelectedItems(1) Else 'テキストボックスにフォルダのパスを表示 GetTargetpath = "集計対象フォルダが選択されていません" End If End With
End Function
< 使用 Excel:Excel2010、使用 OS:Windows10 >
Dir関数で取得できるのは、ファイル名だけです。 パスは含まれません。
>TempFile = Dir(PathName & ClicklogFile, vbNormal)
の下に、 Msgbox TempFile でも入れてやれば、自分で確認できるかと・・・。 (BJ) 2019/10/08(火) 18:04
早速のコメントありがとうございます。
確かにファイル名しか取得できていませんでした。
UserFormで選択したフォルダを参照して、その中にあるファイルを取得する場合、
どのように記述すればよいのでしょうか。
不勉強で恐縮です。
(vbkka) 2019/10/08(火) 18:17
Msgbox PathName & "\" & TempFile (???) 2019/10/09(水) 10:42
ありがとうございます!
試行錯誤している中で、& "\"を記述していませんでした。
おかげで関門を突破することができました。
これで改修を完遂することができそうです。
本当にありがとうございました。
(vbkka) 2019/10/09(水) 11:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.