Excel VBA質問箱 IV

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

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


3307 / 13645 ツリー ←次へ | 前へ→

【62996】指定文字を含むテキストファイルを開く方法 まい 09/9/30(水) 10:43 質問[未読]
【62997】Re:指定文字を含むテキストファイルを開く... Yuki 09/9/30(水) 11:26 発言[未読]
【63000】Re:指定文字を含むテキストファイルを開く... まい 09/9/30(水) 11:52 お礼[未読]
【62998】Re:指定文字を含むテキストファイルを開く... kanabun 09/9/30(水) 11:29 発言[未読]
【62999】Re:指定文字を含むテキストファイルを開く... kanabun 09/9/30(水) 11:33 発言[未読]
【63001】Re:指定文字を含むテキストファイルを開く... まい 09/9/30(水) 11:53 お礼[未読]

【62996】指定文字を含むテキストファイルを開く方...
質問  まい  - 09/9/30(水) 10:43 -

引用なし
パスワード
   どうしても分からなくて投稿します
分かる方、教えていただけないでしょうか?
よろしくお願いします 


Cドライブの中の[Temp]フォルダの中にテキストデータが複数存在します

例えば、下記のようなテキストデータが入っているフォルダがあります
ABC_部品A_---A_PS.txt
ABC_部品A_---A_BS.txt
ABC_部品B_---A_PS.txt
ABC_部品B_---A_BS.txt
ABC_部品C_---A_PS.txt
ABC_部品C_---A_BS.txt

例えば、[部品A]のテキストデータをエクセルに読み込む動作をさせたいのですが、[部品A]の文字を含んでいるファイルが、2つあり、[ABC_部品A_---A_PS.txt]のほうを読み込みたいのですが、いまいちうまくいきません。

現在は下記のようにコードを作成しました

Dim i As Integer, j As Integer
Dim Mytxt As String, Mystr As String
Dim Myrange As Range, TmpRange As Range
Dim FileName As String

FileName = TextBox1.Value  ’テキストボックスの値[例;部品A]

’↓ここの書き方がうまくいきません…
Mytxt = "C:\Temp\ABC_" & FileName & "*PS.txt"

Worksheets(1).Activate
Range("A1").CurrentRegion.Clear
Set Myrange = Range("A1")
Open Mytxt For Input As #1

Do Until EOF(1)
Line Input #1, Mystr
Myrange.Offset(i).Value = Mystr
i = i + 1
Loop
Close #1

Set TmpRange = Range(Myrange, Myrange.End(xlDown))

TmpRange.TextToColumns DataType:=xlDelimited, comma:=True, _
fieldinfo:=Array(Array(1, 1), Array(2, 1), Array(3, 2), Array(4, 1), Array(5, 1), Array(6, 1), _
      Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1))

上記のコードだと、[ファイル名または、番号が不正です]とエラーがでてしまいます

どのようにしたら、ファイルの名前が取得できるのでしょうか?

【62997】Re:指定文字を含むテキストファイルを開...
発言  Yuki  - 09/9/30(水) 11:26 -

引用なし
パスワード
   ▼まい さん:
こんにちは。


>’↓ここの書き方がうまくいきません…
>Mytxt = "C:\Temp\ABC_" & FileName & "*PS.txt"
dim strDir as string を追加して
strdir = "C:\Temp\"
Mytxt = Dir(strdir & "\ABC_" & FileName & "*PS.txt")

>Open strDir & Mytxt For Input As #1
で大丈夫だと思います。

【62998】Re:指定文字を含むテキストファイルを開...
発言  kanabun  - 09/9/30(水) 11:29 -

引用なし
パスワード
   ▼まい さん:

>例えば、[部品A]のテキストデータをエクセルに読み込む動作をさせたいのですが、[部品A]の文字を含んでいるファイルが、2つあり、[ABC_部品A_---A_PS.txt]のほうを読み込みたいのですが、いまいちうまくいきません。

>
>FileName = TextBox1.Value  ’テキストボックスの値[例;部品A]
>
>’↓ここの書き方がうまくいきません…
>Mytxt = "C:\Temp\ABC_" & FileName & "*PS.txt"


ファイル名にワイルドカードは使えません。
Dir関数はご存知ですか?
これを使って "C:\Temp\ABC_部品A*PS.txt" というパターンの
ファイルがあるか調べて、あれば得られたファイル名にパス名を
付加してフルパスにして Openすればいいでしょう

 Dim myPath As String
 Dim FileName As String
 Dim Mytxt As String
 myPath = "C:\Temp\"
 FileName = "ABC_" & TextBox1.Text
 Mytxt = Dir$(myPath & FileName & "*PS.txt")
 If Len(Mytxt) = 0 Then Exit Sub 'Dir関数の返り値が長さ0 なら抜ける
 
 Mytxt = myPath & Mytxt
 'Open処理

【62999】Re:指定文字を含むテキストファイルを開...
発言  kanabun  - 09/9/30(水) 11:33 -

引用なし
パスワード
   あれ、Yuki さんに被りましたようで、

失礼しました m(__)m

【63000】Re:指定文字を含むテキストファイルを開...
お礼  まい  - 09/9/30(水) 11:52 -

引用なし
パスワード
   ▼Yuki さん:
ずっと悩んでいた問題が解決できてうれしいです。
ありがとうございました。

【63001】Re:指定文字を含むテキストファイルを開...
お礼  まい  - 09/9/30(水) 11:53 -

引用なし
パスワード
   ▼kanabun さん:
>あれ、Yuki さんに被りましたようで、
>
>失礼しました m(__)m

いえいえ、とんでもないです。
お蔭様で、問題解決できました

ありがとうございました

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