Excel VBA質問箱 IV

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

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


64239 / 76732 ←次へ | 前へ→

【17074】Re:Array(0,1,2,3,4,....)内を配列でもちたい
回答  Hirofumi  - 04/8/20(金) 20:59 -

引用なし
パスワード
   ファイルで持ちたいという意味が善く解らないのですが?
こんな事なのかな?

マクロの有るBookに、「設定」と言う名前のシートを作成します
例えば、B2からC2、D2、E2・・・の様に横に読み込みたいCSVの列を読み込みたい順番に入力して置きます
ただし、Splitで分割するので、列の番号は、0から始まります

Public Sub ReadTest2()

  Dim dfn As Integer
  Dim strBuff As String
  Dim vntColm As Variant
  Dim vntData As Variant
  Dim vntWrite As Variant
  Dim lngWriteRow As Long
  
  Dim i As Long
  Dim sTXTPATH As String
  Dim sTXTName_i As String
  Dim sNewbook_name As String
  Dim sSheetName As String
  
  
  sTXTPATH = ThisWorkbook.Path & "\"
  sTXTName_i = "TestData.csv"
  sNewbook_name = ThisWorkbook.Name
  sSheetName = "Sheet1"

  '読み込む列番号を配列に読み込み  
  With ThisWorkbook.Worksheets("設定")
    vntColm = Range(.Cells(2, "B"), _
          .Cells(2, "IV").End(xlToLeft)).Value
  End With
  '書き込み用配列の確保
  ReDim vntWrite(1 To UBound(vntColm, 2))
 
  '貼付行設定
  lngWriteRow = 1
  
  'ファイルオープン
  dfn = FreeFile
  Open CStr(sTXTPATH & sTXTName_i) For Input As dfn
    
  'ファイルの終わりまで繰り返し
  With Workbooks(sNewbook_name).Worksheets(sSheetName)
    Do Until EOF(dfn)
      '1行(1レコード)読み込み
      Line Input #dfn, strBuff
      '区切文字(Tab)で文字列を区切配列に格納(列数と添え字が等しい)
      vntData = Split(strBuff, vbTab, , vbBinaryCompare)
      '読み込み列を書き込み用配列に代入
      For i = 1 To UBound(vntColm, 2)
        vntWrite(i) = vntData(vntColm(1, i))
      Next i
      '書き込み位置にデータを書き込み
      With .Cells(lngWriteRow, 1)
        .Resize(, UBound(vntColm, 2)).Value = vntWrite
      End With
      '書き込み行を更新
      lngWriteRow = lngWriteRow + 1
    Loop
  End With
  
  'ファイルを閉じます
  Close #dfn

End Sub

2 hits

【17018】Array(0,1,2,3,4,....)内を配列でもちたい めぎゅ 04/8/18(水) 21:33 質問
【17019】Re:Array(0,1,2,3,4,....)内を配列でもちた... Asaki 04/8/18(水) 21:58 回答
【17072】Re:Array(0,1,2,3,4,....)内を配列でもちた... めぎゅ 04/8/20(金) 19:37 質問
【17074】Re:Array(0,1,2,3,4,....)内を配列でもちた... Hirofumi 04/8/20(金) 20:59 回答
【17080】Re:Array(0,1,2,3,4,....)内を配列でもちた... めぎゅ 04/8/21(土) 0:35 お礼

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