プロが教えるわが家の防犯対策術!

エクセルの住所ファイル(複数行)を編集して、CSVファイル形式で1件単位に出力したいのですが、よいアイデアはありませんか?

エクセルシートが下記の形式であります。CSV形式で単純出力すると行単位で改行されて出力されますが、複数行をまとめて1件のCSVファイルに出力し、アクセスに取り込みたいのですが、よいアイデア、サンプルPGMはありませんか?エクセルシートには特に関数、制御文字等は指定しておりませんが、1件データの終了行(6行目、11行名…)に制御項目を事前セットすること必要であれば、マクロ等でセットします。
1行目 ××住所録,
2行目 yyyy/mm/DD,(作成日) (※1行目と2行目は取り込まない)
3行目 氏名,田中,社員番号,1234567,所属コード,1000,所属名,営業部
4行目 郵便番号,123-4567,住所,東京都千代田区内神田1-1-1
5行目 電話番号,03-1234-5678,FAX番号,03-1234-5678
6行目 任意コメント欄,重要キーマン,

8行目 氏名,山田,社員番号,1234568,所属コード,2000,所属名,法務部
9行目 郵便番号, 以降約50件のデータが続く(※1行飛ばして、1件4行で編集されているシート)

出力方法
 各行のデータ項目(田中,1234567,1000,営業部,123-4567,(住所),…)を出力

VB若葉マークであり、「FileSystemObject」を活用したらとの助言は頂きましたが、検索しましたが類似機能にヒットしませんでした。よろしくお願いします。

A 回答 (5件)

こんなんじゃだめですか?


(すっごい適当に書いてます。)

Open "aaa.txt" For Output As #fileNum

i = 3

Do Until cells(i, 1) = ""

str = cells(i, 1).value & "," & cells(i, 2).value & _
"," & cells(i, 3).value & "," & cells(i, 4).value & _
"," & cells(i, 5).value & "," & cells(i, 6).value & _
"," & cells(i, 7).value & "," & cells(i, 8).value & ","

i = i + 1
str = str & cells(i, 1).value & "," & cells(i, 2).value & _
"," & cells(i, 3).value & "," & cells(i, 4).value & ","

i = i + 1
str = str & cells(i, 1).value & "," & cells(i, 2).value & _
"," & cells(i, 3).value & "," & cells(i, 4).value & ","

i = i + 1
str = str & cells(i, 1).value & "," & cells(i, 2).value

Print fileNum, str

i = i + 2
Loop

Close #fileNum
    • good
    • 0
この回答へのお礼

sh_hirose様
ありがとうございました。
ポイントはつかめましたので、投稿をベースに加筆しました。

お礼日時:2009/06/01 09:58

表の組み換えは簡単なVBAコードで出きる


Sheet1->Sheet2に組み替え
例データ
Sheet1
A列
aa1
bb1
cc1
dd1
eee1
aa2
bb2
cc2
dd2
eee2
aa3
bb3
cc3
dd3
eee3
aa4
bb4
cc4
dd4
eee4
ーー
Sheet2 結果A-E列
aa1bb1cc1dd1eee1
aa2bb2cc2dd2eee2
aa3bb3cc3dd3eee3
aa4bb4cc4dd4eee4
コード
Sub test01()
Dim sh1, sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
k = 1
For i = 1 To 20 Step 5
For j = 1 To 5
sh2.Cells(k, j) = sh1.Cells(i + j - 1, "A")
Next j
k = k + 1
Next i
End Sub
列数は5としている。
For i = 1 To 20 Step の20は最下行を捉えるコードにしてください
(意識的手抜き)
    • good
    • 0

#3です。


表現を改めます。
「エクセルワークシートで切取移動する」
→4行目~6行目をそれぞれ切取って3行目に移動していき、データを1行にする
をループ処理する。
    • good
    • 0

3行目から7行目(空白行)までのパターンの繰り返しでその構造は一定ですか?


そうなら「エクセルワークシートで切取移動する」か、「全ての項目を配列にして扱う」ってのはいかがですか?
    • good
    • 0

別に「FileSystemObject」を使わなくてもできます。


「vba ファイル書き出し」をキーワードに検索すれば、例がたくさんみつかるはずです。
基本は、OPEN命令で書き出すファイルを開き、PRINT命令で書き出すだけです。書き出す内容はセルのの値を逐次取り出すわけですから、自分で自在にハンドリングします。

この回答への補足

ご返答ありがとうございます。

vbaファイル書き出し等の検索ワードでは、単純に出力する方法は記載があり、OPEN命令、PRINT命令、及びエクセルの先頭・最終セルを判定してループする機能もあり、その範囲程度であれば理解しているつもりです。しかし、書き出しセル(項目)のコントロールする機能(複数行をまとめて出力、項目を選択して出力等)についてはなかなかヒットしません。なにかよいお知恵・サンプル等のリンクがあれば教えていただけないでか?

補足日時:2009/05/29 11:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!