• 締切済み

VBAでフォルダ内のhtmlファイルを読み込みたい

フォルダ内のhtmlファイルをテキストで読み込んで、 一部修正を行いたいと思っています。 いろいろ調べて、ExcelVBAやAccessVBAで試してみたのですが、 フォルダ内のファイルを認識しないのか、読み込んでくれませんでした。 バージョンは2003です。 良い方法があれば、教えていただけると大変助かります。 よろしくお願いいたします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

直感的にイヤなコードがあります。 >GoTo Exit_GetTextInformation GoToは使うべきではありません。しかも、このラベルに 分岐する所が3ヶ所あって、いずれの理由で分岐するか わかりません。 >If .FoundFiles.Count = 0 Then GoTo WithブロックからWithブロック外への分岐も、とても 気持ち悪いコードです。 当方で試しましたが、やはり正しいパスが指定されれば 正しく処理されます。どこでExit_GetTextInformationに 分岐するか調べたでしょうか? サンプル ★既存のデータ定義 Dim ファイル集合 Dim メッセージ As String 'GoToを避けるための制御 Do   ★フォルダ名取得   If FolderName = "" Or FolderName = "False" Then     メッセージ = "キャンセルされました"     Exit Do   End If   ★ディレクトリ確認   If Ret = "" Then     メッセージ = "該当フォルダがありません"     Exit Do   End If   ★ファイル検索   With Application.FileSearch     中略     Set ファイル集合 = .FoundFiles   End With   If ファイル集合.Count = 0 Then     メッセージ = "ファイルが見つかりません"     Exit Do   End If   ★各ファイルの処理   Open ファイル集合(i) For ~ Loop Until True If メッセージ <> "" Then   MsgBox メッセージ End If

DUNE806
質問者

お礼

早速ご回答いただき、ありがとうございます。 ExcelVBAを使ったことがないため、WEB上の情報をコピーして動かしていました。 いただいたサンプルで再度確認してみます。 後日、また報告させていただきます。

DUNE806
質問者

補足

先日はありがとうございました。 以下のように作り直してみました。 iFilename.Countがカウントされず、エラーになってしまいます。 「Microsoft Scripting Runtime」の参照設定もしてみたのですが、だめでした。 それから、Do ~ Loopもエラーになってしまうので、現在、コメントにしてあります。 お手すきの時に助けていただけると嬉しいです。 自分でも引き続き、調べながら、テストしてみます。 *** Private Sub Button1_Click() Dim msg As String Dim FolderName As String Dim Ret As String Dim Buff As String Dim FNum As Integer Dim i As Long Dim sFilename As String msg = "検索するフォルダのパスを指定してください" FolderName = Application.InputBox _ (msg, "テキスト情報取得", "d:\", Type:=2) sFilename = Dir(FolderName & "\*.htm", vbNormal) 'InputBoxがキャンセル、空白で返された場合のエラー処理 'Do '★フォルダ名取得 If FolderName = "" Or FolderName = "False" Then msg = "キャンセルされました" Exit Sub End If ' '★ディレクトリ確認 ' If Ret = "" Then ' msg = "該当フォルダがありません" ' Exit Do ' End If '★ファイル検索 With Application.FileSearch '中略 Set iFilename = .FoundFiles If iFilename.Count = 0 Then msg = "ファイルが見つかりません" Exit Sub End If '★各ファイルの処理 FNum = FreeFile 'ファイル番号確保 i = 1 For i = 1 To .FoundFiles.Count 'テキストファイルから一行目を取得 Open .FoundFiles(i) For Input As FNum Line Input #FNum, Buff If FNum = "http://system06/" Then ' "http://system06/" = "\\system04\共有\KMP\" Close FNum End If Next i 'Loop If メッセージ <> "" Then MsgBox メッセージ End If End With End Sub

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

何か錯誤があるのでは? 正しくパスを指定すれば普通に入力できます。 但し、SJIS以外のコードで書かれたものは Streamオブジェクトで変換しないと字化け するので、正しく処理できません。 何をやって、どう上手くいかないのかを掲題 しないと的確な回答を得られませんよ。

DUNE806
質問者

お礼

ご回答、ありがとうございます。 以下、Excel VBAでのコードです。 パスが正しいことは確認したのですが、ファイル名を格納しません。 「検索できませんでした」という結果になります。 お時間のあるときにご確認いただけると助かります。 よろしくお願いいたします。 *** Private Sub Button1_Click() Dim Msg As String, FolderName As String Dim Ret As String, Buff As String Dim FNum As Integer, i As Long Msg = "検索するフォルダのパスを指定してください" FolderName = Application.InputBox _ (Msg, "テキスト情報取得", "d:\", Type:=2) 'InputBoxがキャンセル、空白で返された場合のエラー処理 If FolderName = "" Or FolderName = "False" Then _ GoTo Exit_GetTextInformation '指定フォルダの存在確認 Ret = Dir(FolderName, vbDirectory) If Ret = "" Then GoTo Exit_GetTextInformation 'ファイル検索 With Application.FileSearch .NewSearch .Filename = "*.html" .FileType = msoFileTypeAllFiles .LookIn = FolderName '指定フォルダ .SearchSubFolders = False .Execute '検索実行 '検索結果が0の場合終了 If .FoundFiles.Count = 0 Then GoTo Exit_GetTextInformation FNum = FreeFile 'ファイル番号確保 For i = 1 To .FoundFiles.Count 'テキストファイルから一行目を取得 Open .FoundFiles(i) For Input As FNum Line Input #FNum, Buff Close FNum 'テキストファイルの情報をセルに書き込み 'Cells(i, 1) = Dir(.FoundFiles(i), vbNormal) 'ファイル名取得 'Cells(i, 2) = FileDateTime(.FoundFiles(i)) 'ファイル更新日 'Cells(i, 3) = Buff 'テキスト一行目 Next i End With Exit Sub Exit_GetTextInformation: MsgBox "検索できませんでした" End Sub

関連するQ&A

  • VBAでフォルダ指定

    ExcelVBAでは、workbooks.open とすればファイルを開く事ができるのですが フォルダも開く事ができるのでしょうか?

  • エクセルVBAでフォルダ指定後、フォルダ内のファイル操作について

    あるフォルダ内に大量のフォルダ(フォルダ名は日時)があり、その各フォルダ内にテキストファイルが001.txt、002.txtとあります。 それぞれのテキストファイルの名前をフォルダ名(日時)とテキストファイル名を組み合わせたファイル名にしたいです。 イメージ)  最初に大元のフォルダを選択。     ↓  選択されたフォルダ内にある大量のフォルダから  それぞれのフォルダ名をフォルダ内のテキストファイルへファイル名を変更する。 例)フォルダ名「2006-08-28 11-30」   テキスト名「001.txt」   このファイルを「2006-08-28 11-30-001.txt」 みたいにしたいです。 非常にわかりにくいかもしれません。。 これができると非常に助かりますので、是非ご教示お願いします。

  • フォルダ内のファイル名 テキストデータにできますか

    フォルダ内のファイル名の一覧をテキストファイルとして保存することは可能ですか。 できたらファイル名の他に修正日やファイルサイズも保存できると嬉しいです。 可能でしたら方法を教えてください。 フォルダを見ながらメモ帳に入力する以外の方法でお願いします。

  • VBAでユーザーにフォルダを指定させたい

     Win2000でEXCEL97を使ってます。  ExcelVBAでダイアログボックスなどによりユーザーにフォルダを指定させたいのです。  ファイルを指定させるには、GetOpenFileNameメソッドを使えば出来ることは分かったのですが、フォルダを指定させるような方法が分からないのです。  本で読んだところでは、Excel2002ではFileDialogプロパティで可能なようなのですが、Excel97では出来ないようで…  97でも可能な方法があればご教授下さい。  よろしくお願いします。

  • EXCEL(VBA)

    EXCELVBAで指定したフォルダ内にtextファイルをまとめるマクロを作成したいと思っています。 条件としましては、フォルダ名の5文字とtextファイルの最初の5文字を照合させて一致した場合そのフォルダにtexitファイルを収納していくといった感じです。 できればソースを教えていただくと助かります。

  • 【VBA】 フォルダの全ファイルを取得したい

    あるフォルダ内のCSVファイル全てを取得してひとつのファイルにまとめようと思っています。 下記の条件が必要なのですが、どのように記述したらよいでしょうか? ・プログラム内にフォルダのファイルパスを  記述せずにユーザにフォルダを指定させたい。  (テキストボックスはエラーが起こりやすいので避けたい) ・フォルダ内のファイルをひとつずつ開いて特定のシートに合算させたい  (合算処理はわかるのですが、そのほかがわかりません・・・) お手数ですが、どなたかわかる方がいたら 教えてください

  • ネットワークフォルダー検索

    ExcelVBAで教えてください。 ネットワークの共有フォルダーに多くのフォルダーがあります。 その、フォルダーの中にはEXCELファイルが入っています。 ユーザーフォームにテキストボックスとボタンを配置して テキストボックスに入力してボタンを押して、先程のネットワークの 共有フォルダーを検索し、ファイル一覧表示し、EXCELファイル を選択して表示したいのですが、書き方が分かりません。 教えてください。 宜しくお願いします。

  • 長いフォルダ名のファイルが開きません

     テキストエディタを乗換えたのですが、 長いフォルダ名(例えばProgram Files等)以下のフォルダの テキストファイルが開けなくなってしまいました。 対処方法を教えてください。

  • (VBA)フォルダー内のファイルを自動で読み込む

    以下でターゲットフォルダーを指定して その中に存在する、テキストファイル(.txt)とMP3ファイル(.mp3)を 各1個ずつをそれぞれ読み込むようにしています。 'フォルダーを一覧から選択 (自由に選べること) MsgBox "ターゲットフォルダーを選択してください。", vbOKOnly + vbQuestion, "Making" With Application.FileDialog(msoFileDialogFolderPicker) With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 TurgetFolder = .SelectedItems(1) Else TurgetFolder = .SelectedItems(1) & "\" End If End If End With 'TEXTファイル選択(ダイアログ) MsgBox "ターゲットになる" & vbCrLf & "テキストファイルを選択してください。", vbOKOnly + vbQuestion, "LIST" ChDir TurgetFolder TurgetTEXT = Application.GetOpenFilename("TEXTファイル(*.txt),*.txt") If VarType(TurgetTEXT) = vbBoolean Then MsgBox "選択がキャンセルされました" Else 'MsgBox TurgetFile & " が選択されました" End If 'Mp3サイズ読み込み() MsgBox "ターゲットMP3を選択してください。", vbOKOnly + vbQuestion, "MP3" TargetMP3 = Application.GetOpenFilename("MP3ファイル,*.mp3") 'MsgBox TargetMP3 Set fso = CreateObject("Scripting.FileSystemObject") Set SHell = CreateObject("Shell.Application") Set Folder = SHell.Namespace(fso.GetFile(TargetMP3).ParentFolder.Path) Target = fso.GetFile(TargetMP3).Name ----------------------------------------------- 今回、間違いが無くなるように フォルダー構造をターゲットフォルダーの中に テキスト及びMP3ファイルが一つずつしかない無い構造にしたので それぞれ別々に指定する必要なく ターゲットフォルダーを指定するとその中に存在する テキスト及びMP3ファイルを自動で指定(読み込む)ように改造したいのですが どのように改造すれば良いでしょうか ?

  • フォルダのファイルを開く

    ExcelVBAについて。 「フォルダ内の「*.xls」ファイルを開く」という処理をVBAで行いたいですが、 ネット上の情報( http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html )よりも 簡素に記述することは可能でしょうか? よろしくお願いします。

専門家に質問してみよう