Excel VBA質問箱 IV

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

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


6593 / 13646 ツリー ←次へ | 前へ→

【44361】CSVファイルを条件により、エクセルに反映 さくら 06/11/14(火) 11:29 質問[未読]
【44366】Re:CSVファイルを条件により、エクセル... 06/11/14(火) 13:33 質問[未読]
【44368】Re:CSVファイルを条件により、エクセル... さくら 06/11/14(火) 14:22 発言[未読]
【44373】Re:CSVファイルを条件により、エクセル... 06/11/14(火) 15:38 発言[未読]
【44375】Re:CSVファイルを条件により、エクセル... さくら 06/11/14(火) 16:00 発言[未読]
【44374】Re:CSVファイルを条件により、エクセル... Kein 06/11/14(火) 15:46 回答[未読]
【44376】Re:CSVファイルを条件により、エクセル... さくら 06/11/14(火) 16:04 お礼[未読]

【44361】CSVファイルを条件により、エクセルに...
質問  さくら  - 06/11/14(火) 11:29 -

引用なし
パスワード
   VBA初心者のです。

エクセルのシート1を開いた状態で対象のCSVファイルを選択し、
ある条件のデータを抽出し、結果をシート1へ反映したのですが、
どなたかご教授頂けますでしょうか。

過去の結果を検索してもわかりませんでした。

――――――――――――――――――――――――――――――――――――
*****【CSVファイル名:C:\tmp\aaaYYYYMMDD.csv】*
YYYYMMDDは日付により変わります。
――――――――――――――――――――――――――――――――――――
*****【CSVファイル内容】**********************
101,11,3AA1,1,200,A,1,300,1,5,001
201,ZZ,3BB2,2,200,2,2,200, ,2,002
301,22,3BB2,2,200,2,2,200, ,2,002
Z01,55,3EE5,5,500,B,5,B00,5,5,005
401,44,3CC3,A,400,4,4,400,4,4,00A
Z01,ZZ,0EE1,5,A00,5,5,B00,5,5,000 ←抽出対象データ
Z01,55,3EE5,5,500,B,5,B00,5,5,005
Z01,ZZ,0EE2,5,C00,5,5,D00,5,5,000 ←抽出対象データ
501,55,3FF6,5,C00,5,C,500,C,5,005
601,66,3GG7,8,800,8,8,800,8,8,008
Z01,ZZ,0EE3,5,E00,5,5,000,5,5,00F ←抽出対象データ
Z01,ZZ,0EE4,4,000,5,5,G00,5,5,00H ←抽出対象データ
Z01,FF,3EE5,5,500,B,5,B00,5,5,005
701,77,3GG7,8,800,8,8,800,8,8,008
Z01,ZZ,0EE5,5,J00,5,5,K00,5,5,000 ←抽出対象データ
――――――――――――――――――――――――――――――――――――
*****【エクセル結果内容】**********************
[Sheet1] ( 抽出結果 )
  A   B   C   D   E   F 
1 |項目1 項目2 項目3 項目4 項目5 項目6
2 |Z01  ZZ  0EE5 A00  B00  000
3 |Z01  ZZ  0EE5 C00  D00  000    
4 |Z01  ZZ  0EE5 E00  000  00F 
5 |Z01  ZZ  0EE5 000  G00  00H
6 |Z01  ZZ  0EE5 J00  K00  000

――――――――――――――――――――――――――――――――――――
●CSVファイル(aaaYYYYMMDD.csv)を1件づつ読込み、
 1行目の項目が"Z01"で2行目の項目が"ZZ"のデータを抽出し、
 エクセルの抽出結果シートに項目設定する。
 ※項目は前ゼロがある可能性があります。

 <項目設定>
  1.csvの1列目の項目をエクセルのA列の項目に設定
  2.csvの2列目の項目をエクセルのB列の項目に設定
  3.csvの3列目の項目をエクセルのC列の項目に設定
  4.csvの5列目の項目をエクセルのD列の項目に設定
  5.csvの8列目の項目をエクセルのE列の項目に設定
  5.csvの11列目の項目をエクセルのF列の項目に設定
  ※csvがゼロ件の場合は処理を行いません。

【44366】Re:CSVファイルを条件により、エクセ...
質問    - 06/11/14(火) 13:33 -

引用なし
パスワード
   >過去の結果を検索してもわかりませんでした。
どのように分からなかったのですか?
CSV関係は過去ログにゴマンとあります。

やり方も様々です。
・Open Input
・QueryTables
・FileSystemObject
・ADO
・DAO

【44368】Re:CSVファイルを条件により、エクセ...
発言  さくら  - 06/11/14(火) 14:22 -

引用なし
パスワード
   ▼注 さん:
>どのように分からなかったのですか?
CSVで検索しましたが、私の知識では
やりたい事をコードに変換する事ができませんでした。
>CSV関係は過去ログにゴマンとあります。
色々と検索して試してみます。
ありがとうございました。

【44373】Re:CSVファイルを条件により、エクセ...
発言    - 06/11/14(火) 15:38 -

引用なし
パスワード
   「VBA CSV」でググって見てください。
解説付きのものも沢山見つかります。
まずは条件無しで読み込めるようになってください。

【44374】Re:CSVファイルを条件により、エクセ...
回答  Kein  - 06/11/14(火) 15:46 -

引用なし
パスワード
   ま、こんな感じで。

Sub Get_CSV_Data()
  Dim FSO As Object, MyCSV As Object
  Dim MyF As String, Buf As String
  Dim GetR As Long, i As Long
  Dim Ary As Variant

  With Application
   MyF = .GetOpenFilename("CSVファイル(*.csv),*.csv")
   If MyF = "False" Then Exit Sub
   .ScreenUpdating = False
  End With
  Set FSO = CreateObject("Scripting.FileSystemObject")
  GetR = FSO.OpenTextFile(MyF, 8).Line
  If GetR = 1 Then
   MsgBox "そのファイルにはデータがありません", 48: GoTo ELine
  End If
  Worksheets("Sheet1").Activate: Cells.ClearContents
  Set MyCSV = FSO.OpenTextFile(MyF, 1)
  Do Until MyCSV.AtEndOfStream
   Buf = MyCSV.ReadLine
   Ary = Split(Buf, ",")
   If Ary(0) = "Z01" Or Ary(0) = "0Z01" Then
     If Ary(1) = "ZZ" Or Ary(1) = "0ZZ" Then
      i = i + 1
      Cells(i, 1).Resize(, 6).Value = _
      Array(Ary(0), Ary(1), Ary(2), Ary(4), _
      Ary(7), Ary(10))
     End If
   End If
   Erase Ary
  Loop
  MyCSV.Close: Set MyCSV = Nothing
  MsgBox "データの抽出を終了しました", 64
ELine:
  Set FSO = Nothing: Application.ScreenUpdating = True
End Sub

【44375】Re:CSVファイルを条件により、エクセ...
発言  さくら  - 06/11/14(火) 16:00 -

引用なし
パスワード
   ▼注 さん:
>「VBA CSV」でググって見てください。
>解説付きのものも沢山見つかります。
>まずは条件無しで読み込めるようになってください。
⇒了解致しました。
 「VBA CSV」と検索して自分なりの
 コードを作成してみます。
 ありがとうございます。

【44376】Re:CSVファイルを条件により、エクセ...
お礼  さくら  - 06/11/14(火) 16:04 -

引用なし
パスワード
   ▼Kein さん:
>ま、こんな感じで。
>
Kein殿

Keinの作成して頂いたコードを元に
自分なりのコードも作成してみます。
私は初心者なので、まず理解してからですけど・・・。
大変、ありがとうございました。

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