Excel VBA質問箱 IV

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

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


3237 / 13644 ツリー ←次へ | 前へ→

【63350】指定したテキストファイルを開き読み込む なな 09/10/29(木) 9:59 質問[未読]
【63351】Re:指定したテキストファイルを開き読み込む なな 09/10/29(木) 10:01 質問[未読]
【63352】Re:指定したテキストファイルを開き読み込む Jaka 09/10/29(木) 10:23 発言[未読]
【63354】Re:指定したテキストファイルを開き読み込む なな 09/10/29(木) 11:01 質問[未読]
【63357】Re:指定したテキストファイルを開き読み込む Jaka 09/10/29(木) 11:27 発言[未読]
【63359】Re:指定したテキストファイルを開き読み込む なな 09/10/29(木) 11:47 質問[未読]
【63362】Re:指定したテキストファイルを開き読み込む Jaka 09/10/29(木) 11:59 発言[未読]
【63364】Re:指定したテキストファイルを開き読み込む Jaka 09/10/29(木) 13:39 発言[未読]
【63366】Re:指定したテキストファイルを開き読み込む なな 09/10/29(木) 14:06 お礼[未読]

【63350】指定したテキストファイルを開き読み込む
質問  なな  - 09/10/29(木) 9:59 -

引用なし
パスワード
   こんにちは…

どうしても行き詰って投稿します
どうかよろしくお願いします

指定フォルダ内から指定したテキストファイルを開いて、エクセルに読み込む動作をさせたいのですが、いまいちうまくいきません。


エクセルファイル【シート1】に下記のような品目が複数入力してあり、
順番に、A列にRと入力されているものの品目のファイルを開いていくとします
A列  B列
R   123456ABC  ’1個目
   456789RFV  
R   B23456WER  ’2個目
R   ADR123456  ' 3個目


その際、フォルダ内のテキスト名が、下記のような名前になっています

QQQ_品目---AS.txt (例:QQQ_123456ABC---AS.txt)
QQQ_品目---AW.txt  (例:QQQ_123456ABC---AW.txt)

末尾がASとなっているほうのデータを開きたいです

今はとりあえず、指定したテキストファイルを開くというところまで、コードを作成しましたが、ファイル名がうまく取得できません

どのように記述すればよいのでしょうか?

Sub test()

Dim LastR As Integer, MyRow As Integer
Dim Sh1 As Worksheet
Dim MyRange As Range
Dim strParts As String
Dim strDir As String, MyTxt As String


Set Sh1 = Worksheets("シート1")

LastR = Sh1.Range("A65536").End(xlUp).Row

Set MyRange = Sh1.Range("A1:A" & LastR).Find(what:="R", lookin:=xlValues)
 If Not MyRange Is Nothing Then
  MyRow = MyRange.Row
  strParts = ShBOM.Range("B" & MyRow).Value
  strDir = "C:\Temp\フォルダ\"

  If Dir(strDir & "KHI_" & strParts & "*Bom.txt") <> "" Then
   'ファイルがあったら、テキストデータを開く
   Open strDir & "KHI_" & strParts & "*Bom.txt" For Input as #1
 
   End If
 End If

End Sub

【63351】Re:指定したテキストファイルを開き読み...
質問  なな  - 09/10/29(木) 10:01 -

引用なし
パスワード
   すみません
先ほどのコードに誤りがありました

訂正します
下記が正しいほうです

よろしくお願いします


>Sub test()
>
>Dim LastR As Integer, MyRow As Integer
>Dim Sh1 As Worksheet
>Dim MyRange As Range
>Dim strParts As String
>Dim strDir As String, MyTxt As String
>
>
>Set Sh1 = Worksheets("シート1")
>
>LastR = Sh1.Range("A65536").End(xlUp).Row
>
>Set MyRange = Sh1.Range("A1:A" & LastR).Find(what:="R", lookin:=xlValues)
> If Not MyRange Is Nothing Then
>  MyRow = MyRange.Row
>  strParts = ShBOM.Range("B" & MyRow).Value
>  strDir = "C:\Temp\フォルダ\"
>
>  If Dir(strDir & "QQQ_" & strParts & "*AS.txt") <> "" Then
>   'ファイルがあったら、テキストデータを開く
>   Open strDir & "QQQ_" & strParts & "*AS.txt" For Input as #1
> 
>   End If
> End If
>
>End Sub

【63352】Re:指定したテキストファイルを開き読み...
発言  Jaka  - 09/10/29(木) 10:23 -

引用なし
パスワード
   これだけでわかるかな?

>  MyRow = .Row
>  strParts = ShBOM.Range("B" & MyRow).Value
    ↓ 上でも良いですけど。セルそのものをセットしているので直に。
   strParts = MyRange.offset(,1).value


>  If Dir(strDir & "QQQ_" & strParts & "*AS.txt") <> "" Then
>   'ファイルがあったら、テキストデータを開く
>   Open strDir & "QQQ_" & strParts & "*AS.txt" For Input as #1
> 
>   End If

  変数 = Dir(strDir & "QQQ_" & strParts & "*AS.txt")
  Dir関数を使用して、初めて実際のファイル名が取れます。
  オブジェクトを開く、選択するなどは、実際の名前を使う。

  >Open strDir & "QQQ_" & strParts & "*AS.txt"
     ワイルドカードのつもりなのでしょうが、
     ワイルドカードとして使わることはないです。

【63354】Re:指定したテキストファイルを開き読み...
質問  なな  - 09/10/29(木) 11:01 -

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

すみません…どうしてもなぞが解けません

もう少し、詳しく教えていただけないでしょうか?


よろしくお願いします

【63357】Re:指定したテキストファイルを開き読み...
発言  Jaka  - 09/10/29(木) 11:27 -

引用なし
パスワード
   >  If Dir(strDir & "QQQ_" & strParts & "*AS.txt") <> "" Then
>   'ファイルがあったら、テキストデータを開く
>   Open strDir & "QQQ_" & strParts & "*AS.txt" For Input as #1

変数 = Dir(strDir & "QQQ_" & strParts & "*AS.txt")
if 変数 <> "" Then
   'ファイルがあったら、テキストデータを開く
 Open strDir & 変数 For Input as #1

【63359】Re:指定したテキストファイルを開き読み...
質問  なな  - 09/10/29(木) 11:47 -

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

下記のようにコードを記述してみましたが、どうしても、変数の値が "" となってしまい、取得できません。

書き方が間違っているのでしょうか?
何度もすみませんがよろしくお願いします

Sub test()

Dim LastR As Integer, MyRow As Integer
Dim Sh1 As Worksheet
Dim MyRange As Range
Dim strParts As String
Dim strDir As String, 変数 As String


Set Sh1 = Worksheets("シート1")

LastR = Sh1.Range("D65536").End(xlUp).Row

Set MyRange = Sh1.Range("A10:A" & LastR).Find(what:="R", lookin:=xlValues)
 If Not MyRange Is Nothing Then
  MyRow = MyRange.Row
  strParts = Sh1.Range("D" & MyRow).Value
  strDir = "C:\Temp\フォルダ\"

  変数 = Dir(strDir & "QQQ_" & strParts & "*AS.txt")
 
  ↑どうしても変数の値が""となってしまいます  


  If 変数 <> "" Then
     Open strDir & 変数 For Input as #1

  End If 
End If


End Sub

【63362】Re:指定したテキストファイルを開き読み...
発言  Jaka  - 09/10/29(木) 11:59 -

引用なし
パスワード
   ▼なな さん:
確認する事。
>  strParts = Sh1.Range("D" & MyRow).Value
   ここで、strPartsに値が入っているか。


>  strDir = "C:\Temp\フォルダ\"

   ファイルのフルパス = strDir & "QQQ_" & strParts & "*AS.txt"
   こうして一旦文字列の変数に取り入れたほうがわかりやすいかも。

   msgbox ファイルのフルパス
   で、確認できるし。

>  変数 = Dir(ファイルのフルパス)
> 
>  ↑どうしても変数の値が""となってしまいます  

   となると、そのファイルが無いとも考えられますけど、
   その辺も確認された方が。

【63364】Re:指定したテキストファイルを開き読み...
発言  Jaka  - 09/10/29(木) 13:39 -

引用なし
パスワード
  

psps = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
Open psps & "秘密ファイル12345.txt" For Output As #1
Close #1

OPファイル = psps & "秘密" & "*12345.txt"

MsgBox OPファイル & vbLf & vbLf & _
    "正規のファイル名だけ取得" & vbLf & vbLf & _
    Dir(OPファイル)

【63366】Re:指定したテキストファイルを開き読み...
お礼  なな  - 09/10/29(木) 14:06 -

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

思いっきり、フォルダの場所が間違っていました。

お手数お掛けしました

お蔭様で解決できました
ありがとうございました

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