Excel VBA質問箱 IV

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

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


76529 / 76732 ←次へ | 前へ→

【4624】Re:".txt"ファイルの必要な列だけを読み込みExcelに貼り付けられませんか?
回答  Hirofumi E-MAIL  - 03/3/29(土) 10:13 -

引用なし
パスワード
   横から失礼します
列を抜き出して書き込むならこんなやり方も有るよ
Split関数を仕様しているので、Excel2000以降じゃないと使え無いけど
ただし、Excel97でもSplit関数の代替を作れば遅く成るけど可能
Split関数の代替は必要なら考えて見ます
>不規則な部分の項目(列)
と有りますが、これも条件が解れば組み込み可能かもしれません

Public Sub TextRead()

  Dim i As Long
  Dim vntFileName As Variant
  Dim dfn As Integer
  Dim strBuff As String
  Dim vntColm As Variant
  Dim vntData As Variant
  Dim vntWrite As Variant
  Dim lngWriteRow As Long
  Const cstrFilter As String _
      = "テキスト (*.txt),*.txt,CSV (*.csv),*.csv,全て (*.*),*.*"
  Const cstrTitle As String = "読み込みファイルの選択"
  
  '読み込む列の指定
  vntColm = Array(15, 16, 42)
  vntColm = Array(2, 4, 6)
  '書き込み用配列の確保
  ReDim vntWrite(UBound(vntColm))
  
  '読み込むファイル名を指定
  vntFileName _
    = Application.GetOpenFilename(cstrFilter, 1, cstrTitle)
  If vntFileName = False Then
    Exit Sub
  End If
  'ファイルをInputモードで開く
  dfn = FreeFile
  Open CStr(vntFileName) For Input As dfn
  
  '書き込み行の初期値を設定
  lngWriteRow = 1
  'ファイルの終わりまで繰り返し
  Do Until EOF(dfn)
    '1行(1レコード)読み込み
    Line Input #dfn, strBuff
    '区切文字(Tab)で文字列を区切配列に格納(列数と添え字が等しい)
    vntData = Split(strBuff, vbTab, , vbBinaryCompare)
    '読み込み列を書き込み用配列に代入
    For i = 0 To UBound(vntColm)
      vntWrite(i) = vntData(vntColm(i))
    Next i
    '書き込み位置にデータを書き込み
    With Cells(lngWriteRow, 1)
      Range(.Offset(, 0), .Offset(, _
              UBound(vntColm))).Value = vntWrite
    End With
    '書き込み行を更新
    lngWriteRow = lngWriteRow + 1
  Loop
  
  'ファイルを閉じる
  Close #dfn
  
End Sub

2 hits

【4603】".txt"ファイルの必要な列だけを読み込みExcelに貼り付けられませんか... めぎゅ 03/3/28(金) 11:10 質問
【4617】Re:".txt"ファイルの必要な列だけを読... Jaka 03/3/28(金) 16:12 回答
【4622】Re:".txt"ファイルの必要な列だけを読... めぎゅ 03/3/28(金) 18:34 質問
【4624】Re:".txt"ファイルの必要な列だけを読... Hirofumi 03/3/29(土) 10:13 回答
【4636】さらに・・・もう一つ めぎゅ 03/3/31(月) 13:30 質問
【4643】Re:さらに・・・もう一つ Hirofumi 03/3/31(月) 19:24 回答
【4664】ありがとうございます。さらにもう一点・・・ めぎゅ 03/4/1(火) 16:31 質問
【4667】Re:ありがとうございます。さらにもう一点・・・ Hirofumi 03/4/1(火) 20:27 回答
【4631】Re:".txt"ファイルの必要な列だけを... ポンタ 03/3/30(日) 18:16 回答
【4632】Re:".txt"ファイルの必要な列だけを読... Jaka 03/3/31(月) 10:28 回答
【4639】Re:".txt"ファイルの必要な列だけを読... めぎゅ 03/3/31(月) 14:05 質問
【4640】ごめんなさい。 Jaka 03/3/31(月) 16:27 回答
【4641】ちょっとびっくり。 Jaka 03/3/31(月) 16:35 発言
【4682】ありがとうございました! めぎゅ 03/4/2(水) 17:40 お礼

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