Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7287 / 13646 ツリー ←次へ | 前へ→

【40056】ファイルから特定の文字を探すには? mutu 06/7/6(木) 9:24 質問[未読]
【40059】Re:ファイルから特定の文字を探すには? ハト 06/7/6(木) 11:02 回答[未読]
【40061】Re:ファイルから特定の文字を探すには? ハト 06/7/6(木) 14:31 回答[未読]
【40072】Re:ファイルから特定の文字を探すには? mutu 06/7/6(木) 16:46 お礼[未読]

【40056】ファイルから特定の文字を探すには?
質問  mutu  - 06/7/6(木) 9:24 -

引用なし
パスワード
   おはようございます。
また、ご助言賜りたく参りました。
よろしくお願い致します。


今、

パス=C:\test.txt
条件1=あああ
条件2=いいい

というデータのテキストファイルを読み込んで、
これを元にDBからデータを取得し、
取得したデータを設定したパスのファイルに出力しようとしています。

もし、
このテキストファイルに不備があった場合にはエラーにしようとしています。

そこで、
“パス=”という文字列がテキストファイルになかったらというエラー条件を作りたいのですが、

どうしたら“パス=”という文字列がなかったという記述ができるかわからずに困っています。

どうしたらよいのでしょうか?
ご助言よろしくお願いします。

【40059】Re:ファイルから特定の文字を探すには?
回答  ハト  - 06/7/6(木) 11:02 -

引用なし
パスワード
   おはようございます

▼mutu さん:
>おはようございます。
>また、ご助言賜りたく参りました。
>よろしくお願い致します。
>
>
>今、
>
>パス=C:\test.txt
>条件1=あああ
>条件2=いいい
>
>というデータのテキストファイルを読み込んで、
>これを元にDBからデータを取得し、
>取得したデータを設定したパスのファイルに出力しようとしています。
>
>もし、
>このテキストファイルに不備があった場合にはエラーにしようとしています。
>
>そこで、
>“パス=”という文字列がテキストファイルになかったらというエラー条件を作りたいのですが、
>
>どうしたら“パス=”という文字列がなかったという記述ができるかわからずに困っています。
>
>どうしたらよいのでしょうか?
>ご助言よろしくお願いします。

Sub PF_READ()

Dim FName        '選択ファイル名

Dim Fs As Object
Dim Gf As Object
Dim Ts As Object

Dim SWD As String
Dim TData As String

Dim rec

  
  'ファイル選択ダイアログを開きファイル名を取得
  FName = Application.GetOpenFilename("ファイル (*.*),*.*")

  'キャンセルを選択?
  If FName = False Then Exit Sub
  
  '検索文字セット
  SWD = "パス="

  'ファイルオープン
  Set Fs = CreateObject("Scripting.FileSystemObject")
  Set Gf = Fs.GetFile(FName)
  Set Ts = Gf.OpenAsTextStream(1, -2)
       
  TData = Ts.ReadALL

  rec = InStr(1, TData, SWD, vbTextCompare)

  If rec > 0 Then
    MsgBox "パス= 有り:" & rec
  Else
    MsgBox "パス= 無し:" & rec
  End If

  Set Fs = Nothing
  Set Gf = Nothing
  Set Ts = Nothing

End Sub

パスのテキストファイルが小さそうなんで ReadALL を使っていますが
容量が大きい場合は ReadLine を使って1行ずつ処理するように変更してください

【40061】Re:ファイルから特定の文字を探すには?
回答  ハト  - 06/7/6(木) 14:31 -

引用なし
パスワード
   ▼ハト さん:
>おはようございます
>
>▼mutu さん:
>>おはようございます。
>>また、ご助言賜りたく参りました。
>>よろしくお願い致します。
>>
>>
>>今、
>>
>>パス=C:\test.txt
>>条件1=あああ
>>条件2=いいい
>>
>>というデータのテキストファイルを読み込んで、
>>これを元にDBからデータを取得し、
>>取得したデータを設定したパスのファイルに出力しようとしています。
>>
>>もし、
>>このテキストファイルに不備があった場合にはエラーにしようとしています。
>>
>>そこで、
>>“パス=”という文字列がテキストファイルになかったらというエラー条件を作りたいのですが、
>>
>>どうしたら“パス=”という文字列がなかったという記述ができるかわからずに困っています。
>>
>>どうしたらよいのでしょうか?
>>ご助言よろしくお願いします。

すみません、内容を取り出すんですから
1行づつ処理する方がいいですね

Sub PF_READ()

Dim FName        '選択ファイル名

Dim Fs As Object
Dim Gf As Object
Dim Ts As Object

Dim SWD As String
Dim TData As String
Dim FPath As String

Dim rec As Long

  
  'ファイル選択ダイアログを開きファイル名を取得
  FName = Application.GetOpenFilename("ファイル (*.*),*.*")

  'キャンセルを選択?
  If FName = False Then Exit Sub
  
  '検索文字セット
  SWD = "パス="

  'ファイルオープン
  Set Fs = CreateObject("Scripting.FileSystemObject")
  Set Gf = Fs.GetFile(FName)
  Set Ts = Gf.OpenAsTextStream(1, -2)
  
  rec = 0
  FPath = ""
  Do While Ts.AtEndOfStream <> True
    TData = Ts.Readline

    rec = InStr(1, TData, SWD, vbTextCompare)

    If rec > 0 Then
      FPath = Mid(TData, rec + 3)
      MsgBox "パス=" & FPath
      Exit Do
    End If

  Loop

  If FPath = "" Then
    MsgBox "パス= 無し", vbCritical, "ファイルエラー"
  End If

  Set Fs = Nothing
  Set Gf = Nothing
  Set Ts = Nothing

End Sub

【40072】Re:ファイルから特定の文字を探すには?
お礼  mutu  - 06/7/6(木) 16:46 -

引用なし
パスワード
   ありがとうございました。

7287 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free