• 締切済み

エクセルファイルの1レコード(1行)を1csvファイルへ変換マクロ

エクセルファイルの1レコード(1行)を1csvファイルへ変換し、エクセルファイルにあるレコード数分だけあるフォルダに自動作成するマクロを教えて下さい。 因みに、csvファイル名は、エクセルデータの『a列.csv』となるようにしたいです。 【例】 本日2007/11/13 ○○.xls A列 B列 C列 111 1 356 13 1 2 ・ ・ ・ ・ ・ ・ 111.CSV "2007/11/13(火)","1","356,"","","" 13.CSV "2007/11/13(火)","1","2,"","","" 変換後のcsvの中身は 1列目に、本日の日付 2列目に、1 3列目に、変換元のエクセルファイルの3列目 4、5、6列目に空白 という形式です。 どなたかお分かりになるかた、ご教授願います。

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

> マクロを教えて下さい。 それで、、分らないとこはどこなの? とか一応言ってみた。。 この手の内容は調べればすぐサンプルありそうです。Open ステート メント辺りをキーワードで調べてみて下さい。下記は、TextStream を使いましたけど、たいして変わりません。 A 列にファイル名に使用できない文字があるとか、同名ファイルが 有った場合はどうするのかとか、本当はもっとしっかりと仕様を決め、 エラートラップしないといけないのですが、とりあえず動く程度の ものです。ご参考までに。 Sub SampleProc()   Const DQ = """"   Const ForWriting As Long = 2      Dim fso     As Object ' // FileSystemObject   Dim ts     As Object ' // TextStream   Dim sDir    As String   Dim sBaseName  As String   Dim sFileName  As String   Dim i      As Long   Dim Buf()    As String   Set fso = CreateObject("Scripting.FileSystemObject")   ' // 保存フォルダのパス   sDir = ActiveWorkbook.Path   ' // データ読み込み開始行(行カウンタ)   i = 1   ' // A 列が空になるまでループ   Do     ' // ファイルのベース名     sBaseName = Cells(i, "A").Text     If Len(sBaseName) = 0 Then       Exit Do     Else       sBaseName = sBaseName & ".csv"     End If     ' // パスと連結させてファイル名を生成     sFileName = sDir & "\" & sBaseName     ' // 同名ファイル確認(ホントに確認のみだけど)     If fso.FileExists(sFileName) Then       MsgBox "同名ファイルあるけど上書きするのだ(・∀・)ノ" & vbLf & _           "[" & sBaseName & "]", vbInformation     End If     ' // テキストファイルを開く(作成)     Set ts = fso.OpenTextFile(Filename:=sFileName, _                  IOMode:=ForWriting, _                  Create:=True)     ' // 書き込む内容を準備     ReDim Buf(5)     Buf(0) = DQ & Format$(Now(), "yyyy/mm/dd(aaa)") & DQ     Buf(1) = DQ & Cells(i, "B").Text & DQ     Buf(2) = DQ & Cells(i, "C").Text & DQ     Buf(3) = DQ & DQ     Buf(4) = DQ & DQ     Buf(5) = DQ & DQ     ' // Join でカンマ区切りに連結してテキスト書き込み     ts.WriteLine Join$(Buf, ",")     ' // テキストファイルを閉じる     ts.Close     ' // 行カウンタ加算     i = i + 1   Loop   Set ts = Nothing   Set fso = Nothing End Sub

Macro-Chan
質問者

お礼

有難う御座いました! 出来ました!

関連するQ&A

  • 大量のCSVファイルをExcel形式に変換する

    お世話になります。 大量のCSV(.csvファイルをExcel(.xls)ファイルに変換したい と考えております。 リネームソフトを使って、(.csv)⇒(.xls)の一括変換を したところ、拡張子は確かに.xlsに変換されたのですが、 中身はCSVのままとなっておりました。 (↑ファイル名とシート名が同期を取っているので) このCSVを確実にエクセル形式へと変換したいのですが、 どなた様かいいお考えをお持ちでしたら教えてください。 ググってみたところ、そういったアドインがあるのですが、 できれば費用をかけずに行いたいです…。

  • エクセルのマクロの記録でcsvファイルを開いたら日付が変わった

    エクセル2000のマクロの記録で「xxx.CSVファイルを開く」を作ってオート実行したところ、ある日付の列、2008/7/15 などがすべて2001/7/15、2025/7/1などとんでもない日付に変わってしまいます、手動で開くと正常です。一度手動で開いてファイルをxxx.xlsで保存してマクロを記録し、オートで実行すると正常です。セルの書式を見ると日付になっています、どこに問題があるのでしょうか。よろしくお願いします。

  • エクセルマクロの質問です。

    例えば、A.xlsというファイルに01.csv,02.csv,・・・,20.csvといういくつかのファイルからデータを取り出すのですが、A.xlsのシート1の1列目に01.csvの1列目を貼り付けて、01.csvの2列目はA.xlsのシート2の1列目に貼り付けるようにシートをずらして行って、02.csvの1列目はA.xlsのシート1の2列目、02.csvの2列目はA.xlsのシート2の2列目というようにしたいのですが、どのようなプログラムがよいのでしょうか? エクセルマクロ初心者なので説明が不十分かも知れませんがよろしくお願いします。

  • エクセルファイルをCSVファイルに変換する方法

    初歩的な質問ですいません。 時間のある方教えてください。 今、エクセルで保存しているものをCSVファイルへ変換するマクロを教えていただきたいのですが、 たとえばマクロを実行すると waka.xlsというファイルが、 waka.csv になるというだけなのですが、よく分からないので よろしくお願いします。

  • csv形式のテキストファイルをexcelでCSV化するマクロについて

    今、ひとつのフォルダに大量にCSV形式で保存されているテキストファイルを excelのマクロを使って、ひとつのexcelにCSV形式(.xls)で保存するものを作成している のですが、今までマクロを使ったことがないため、まったく歯が立ちません。 もう少し詳しく書くと、テキストファイルの中身は、 01,54521,18:01:02,110230 というようになってます。 これを、excelのマクロを使い、カンマ区切りで取り込むような感じです。 すみませんが、回答お願いいたします。

  • エクセルのマクロについての質問です。

    ファイルA.xls __A__B__C 1_______1 2_______5 3_______7 4_______4 5_______5 6_______6 ファイルB.csv __A__B__C 1_1__5 2_5__6 3_7__7 ファイルC.csv __A__B__C 1_6__5 2_7__8 3_6__8 のような3つのファイルがあったとして ファイルA.xlsからマクロを実行して __A__B__C 1_1__5__1 2_5__6__5 3_7__7__7 4_6__5__4 5_7__8__5 6_6__8__6 ファイルB.csvをファイルA.xlsのA列とB列に ファイルC.csvをその下の最終行に貼り付けたいと思うのですが どのようにすればいいのでしょうか? 注意点としては、 (1)今は例として3行、3行の6行ですが、実際は1000行以上あり 毎回行数は変わります。 (2)ファイルA.xlsのC列には実際は関数が入っていて、 ファイルB.csvとファイルC.csvを張り付けた情報を計算して表示する ようになっています。

  • csvファイルからの変換

    csvファイルに20030627と、テキストで数字が入っています。 これをExcelファイルに変換すると、形式が日付にならないので、2003/06/27となるようにしたいのですが(文字列ではなく)、簡単にはいきません。 いい変換方法はないでしょうか。

  • エクセル97で作成したファイルをcsvファイルに変換すると?

    エクセル97で作成したファイルをcsvファイルに変換すると住所の地番を入力したセルが、日付に変換されてしまいます。どのように設定をすればいいのでしょうか。 一つのセルに 1-3-5 と入力をして、csvファイルに変換すると 2001/3/5 となってしまいます。もちろんエクセルでのセルの書式設定は、文字列に設定しております。 1-3-5と変換されるためには、あとどのように設定すればいいのでしょうか?よろしくお願いいたします。

  • エクセルVBAでCSVファイルから取り込みたいのですが・・・

    CSVファイルのデータを取り込むコードを教えていただけないでしょうか。 「共有フォルダ」の中に「作業用.xls」と「090820.csv」があります。csvファイルは日によって名前が変わりますが、必ず一つしか入れないことにしています。 CSVファイルの1行目は見出しです。2行目以降がデータになっています。 A2からI列最終行を「作業用.xls」のsheet1のA6にコピー(取り込み)したいのですが、よろしくお願いします。

  • エクセルのマクロでCSVからxlsx形式にしてから

    A.csvというファイルをB.xlsx形式に変換後、列が10、行はランダム行あるファイルにフィルタをかけて 並び替えるような一連の動作ができるマクロはどのように作成すればよろしいでしょうか。 ご教示いただけますようお願いいたします。

専門家に質問してみよう