Excel VBA質問箱 IV

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

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


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

【43741】インポートするファイル名にセルの値を代入したい うな 06/10/24(火) 14:06 質問[未読]
【43744】Re:インポートするファイル名にセルの値を... Jaka 06/10/24(火) 16:31 発言[未読]
【43745】Re:インポートするファイル名にセルの値を... Jaka 06/10/24(火) 16:35 発言[未読]
【43746】Re:インポートするファイル名にセルの値を... Kein 06/10/24(火) 16:40 回答[未読]
【43747】Re:インポートするファイル名にセルの値を... うな 06/10/24(火) 16:49 お礼[未読]

【43741】インポートするファイル名にセルの値を代...
質問  うな  - 06/10/24(火) 14:06 -

引用なし
パスワード
   4桁or5桁の英数字のコードがついたTXTファイルをインポートしたいのです。
セルにそのコードを入力して、そのコード名のファイルをインポートするようにコードを書きましたが、エラーは出ませんが、目的のファイルがインポートできず、空白のままです。
Sub マッチング()
  Dim stCNo As String
  stCNo = Worksheets("結果").Range("B3").Value 
  
  Sheets("注文書").Select
  Range("A2").Select
  
  With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;D:\Data\" & stCNo & ".txt", Destination:=Range("A2"))
    .Name = stCNo
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = xlWindows
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
  End With
End Sub

よろしくご指導ください。

【43744】Re:インポートするファイル名にセルの値...
発言  Jaka  - 06/10/24(火) 16:31 -

引用なし
パスワード
   マクロ記録したものと比較してみたけど、間違っているところがなさそうなんで、
悩みましたが....。

単純にこの部分を消したから見たいですね。 by2002
略 ・・・・ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
.TextFileTrailingMinusNumbers = True ←
.Refresh BackgroundQuery:=False ←

もう一度マクロ記録をしてみたらどうでしょうか?

【43745】Re:インポートするファイル名にセルの値...
発言  Jaka  - 06/10/24(火) 16:35 -

引用なし
パスワード
   書き忘れ、タブ区切りのデータが無いので、
カンマ区切りのデータで試した結果ですけど

    .TextFileTabDelimiter = False 'True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True 'False

【43746】Re:インポートするファイル名にセルの値...
回答  Kein  - 06/10/24(火) 16:40 -

引用なし
パスワード
   クエリーでなく、一般的なOpenステートメントで読み込んだら
どうでしょーか ? こんなコードでよいと思います。

Sub マッチング2()
  Dim stCNo As String, MyF As String, Buf As String
  Dim i As Long
  Dim Ary As Variant

  stCNo = Worksheets("結果").Range("B3").Value 
  If stCNo = "" Then Exit Sub
  MyF = "C:\Data\" & stCNo & ".txt"
  If Dir(MyF) = "" Then
   MsgBox "そのファイルは存在しません", 48
   Exit Sub
  End If
  Sheets("注文書").Range("A2").Value = stCNo: i = 3
  Open MyF For Input Access Read As #1
  Do Until EOF(1)
   Line Input #1, Buf
   Ary = Split(buf, vbTab)
   Sheets("注文書").Cells(i, 1).Resize(, UBound(Ary) + 1) _
   .Value = Ary
   i = i + 1: Erase Ary
  Loop
  Close #1
  MsgBox stCNo & ".txt を読み込みました", 64
End Sub

【43747】Re:インポートするファイル名にセルの値...
お礼  うな  - 06/10/24(火) 16:49 -

引用なし
パスワード
   ▼Kein さん:
>クエリーでなく、一般的なOpenステートメントで読み込んだら
>どうでしょーか ? こんなコードでよいと思います。
>
>Sub マッチング2()
>  Dim stCNo As String, MyF As String, Buf As String
>  Dim i As Long
>  Dim Ary As Variant
>
>  stCNo = Worksheets("結果").Range("B3").Value 
>  If stCNo = "" Then Exit Sub
>  MyF = "C:\Data\" & stCNo & ".txt"
>  If Dir(MyF) = "" Then
>   MsgBox "そのファイルは存在しません", 48
>   Exit Sub
>  End If
>  Sheets("注文書").Range("A2").Value = stCNo: i = 3
>  Open MyF For Input Access Read As #1
>  Do Until EOF(1)
>   Line Input #1, Buf
>   Ary = Split(buf, vbTab)
>   Sheets("注文書").Cells(i, 1).Resize(, UBound(Ary) + 1) _
>   .Value = Ary
>   i = i + 1: Erase Ary
>  Loop
>  Close #1
>  MsgBox stCNo & ".txt を読み込みました", 64
>End Sub

ありがとうございました。
希望していた通りにできました。
クエリーに凝り固まっていましたが、柔軟に考えなくてはと反省です。

Jakaさん、ありがとうございました。

今後もよろしくお願い致します。

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