Excel VBA質問箱 IV

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

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


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

【13967】CSVファイルの貼り付け 国木田ゴッホ 04/5/18(火) 10:14 質問[未読]
【13969】Re:CSVファイルの貼り付け Asaki 04/5/18(火) 10:19 回答[未読]
【14008】Re:CSVファイルの貼り付け みかん 04/5/18(火) 15:20 回答[未読]
【14017】Re:CSVファイルの貼り付け BOTTA 04/5/18(火) 16:23 回答[未読]
【14026】Re:CSVファイルの貼り付け 国木田ゴッホ 04/5/18(火) 17:29 お礼[未読]

【13967】CSVファイルの貼り付け
質問  国木田ゴッホ  - 04/5/18(火) 10:14 -

引用なし
パスワード
   おはようございます。

とあるフォルダにあるCSVファイル(データ)を、
シートに貼り付けたいのですが、
1件読んで、1行貼り付けるようなことしか知りません。
なにか簡単で便利な方法をご存知の方、
教えてください。

処理結果としては、CSVファイルをエクセルで開いた時と同じ状態です。
(カンマで区切られている各項目が、それぞれ別のセルに貼り付けます。)
但し、別BookではなくVBAを動かしているBookの別Sheetに。

よろしくお願いします。

【13969】Re:CSVファイルの貼り付け
回答  Asaki  - 04/5/18(火) 10:19 -

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

Excelの外部データの取込の機能は利用できませんか?

【14008】Re:CSVファイルの貼り付け
回答  みかん  - 04/5/18(火) 15:20 -

引用なし
パスワード
   ▼国木田ゴッホ さん:

外部データの取り込み作業を一度マクロに記録してみてください。
VBAのソースが出来上がってます。
改良したりして汎用的に使ってはいかがでしょうか?

参考までに以下のソースをつけておきます。
これもマクロで記録したままのソースです。

Public Sub test()
  
  ActiveWorkbook.Worksheets.Add
  With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\work\TEST.csv", Destination:=Range("A1"))
    .Name = "TEST"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 932
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierNone
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
  End With
  
End Sub


ちなみに、取り込んだCSVファイルは以下の内容を取り込みました。

あ,い,う,え,お
か,き,く,け,こ
さ,し,す,せ,そ
た,ち,つ,て,と
な,に,ぬ,ね,の

【14017】Re:CSVファイルの貼り付け
回答  BOTTA  - 04/5/18(火) 16:23 -

引用なし
パスワード
   国木田ゴッホさん、こんにちは。

FileSystemObjectとDataObjectを使います。

Sub aaa()
'<注意>
'Microsoft Forms 2.0 Object Libraryの参照設定が必要です。
'VBE画面で「ツール」→「参照設定」でCheckを入れる。
'見つからない場合は「参照」ボタンを押して、Systemフォルダ内の「FM20.DLL」
'を選択して「開く」を押します。

Dim FSO As Object, objData As Object
Dim strData As String

  Set FSO = CreateObject("Scripting.FileSystemObject")
  With FSO.OpenTextFile("D:\aaa\data.csv", 1)
  '              ↑任意のパス&ファイルに変えてね
    strData = .ReadAll
    .Close
  End With

  strData = Replace(strData, ",", vbTab) 'カンマをTabに変換

  Set objData = New DataObject
  With objData
    .SetText strData
    .PutInClipboard
  End With

  ActiveSheet.Range("A1").PasteSpecial

  Set objData = Nothing: Set FSO = Nothing
End Sub

【14026】Re:CSVファイルの貼り付け
お礼  国木田ゴッホ  - 04/5/18(火) 17:29 -

引用なし
パスワード
   皆様たくさんの回答をありがとうございました。

>但し、別BookではなくVBAを動かしているBookの別Sheetに。
 上記条件が無くなり、別Bookでよくなったので
 皆様の言う外部データ参照でうまくいきました。

  With Workbooks.Add(xlWBATWorksheet)
   Workbooks.Add
   Workbooks.Open Filename
   Set WKBook = ActiveWorkbook
   WkBook.Worksheets(1).Copy After:=.Worksheets(.Worksheets.Count)

   ・・省略

  END With

今回皆様から頂いたご回答は今後の為に役立たせていただきます。
ありがとうございました。

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