• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSVファイルの情報をテキストファイルに吐き出したいのです。)

CSVファイルの情報をテキストファイルに吐き出す方法

1050 円(@1050YEN)の回答

  • ベストアンサー
回答No.4

Option Explicit Const DEF_雛形 As String = "C:\aaa\hinagata.txt" Const DEF_DATA As String = "C:\aaa\data.csv" Const DEF_OUT_NAME As String = "kyokumei.txt" Private m_fsoObj As FileSystemObject Sub Main()  Set m_fsoObj = New FileSystemObject  '雛形読込  Dim l_str雛形  As String  l_str雛形 = Get雛形(DEF_雛形)  'データファイル  Dim l_fsoFile  As File  Set l_fsoFile = m_fsoObj.GetFile(DEF_DATA)  '接続する  Dim l_adoCnn As Connection  Set l_adoCnn = Get接続(l_fsoFile.ParentFolder.Path)  Dim l_strSQL As String  l_strSQL = "SELECT * FROM [" & l_fsoFile.Name & "]"  Dim l_adoRec As Recordset  Set l_adoRec = l_adoCnn.Execute(l_strSQL)  Do Until l_adoRec.EOF   Dim l_strBuff  As String     '雛形の文字を置換する   l_strBuff = Replace(l_str雛形, "[アーティスト名]", l_adoRec("アーティスト名"))   l_strBuff = Replace(l_strBuff, "[曲名]", l_adoRec("曲名"))     'フォルダ作成処理   Dim l_strDir As String   l_strDir = l_adoRec("artistname")     Dim l_fsoDir As Folder   On Error Resume Next   'フォルダを作成   Set l_fsoDir = l_fsoFile.ParentFolder.SubFolders.Add(l_strDir)   If (Err.Number <> 0&) Then    Set l_fsoDir = l_fsoFile.ParentFolder.SubFolders(l_strDir)   End If   On Error GoTo 0   Debug.Print l_fsoDir.Path   'テキスト出力処理   Dim l_ts As TextStream   Set l_ts = l_fsoDir.CreateTextFile(DEF_OUT_NAME, True)   l_ts.WriteLine l_strBuff   l_ts.Close   l_adoRec.MoveNext  Loop  MsgBox "終了" End Sub '雛形の取得 Private Function Get雛形(ByVal p_strFile As String) As String  Dim l_fsoFile  As Scripting.File  Set l_fsoFile = m_fsoObj.GetFile(p_strFile)  Dim l_ts As TextStream  Set l_ts = l_fsoFile.OpenAsTextStream(ForReading)  Dim l_strBuff As String  l_strBuff = l_ts.ReadLine  l_ts.Close  Get雛形 = l_strBuff End Function 'フォルダに接続 Function GetConnection(p_strPath As String) As Connection  Dim l_strCnn As String  l_strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & p_strPath & ";Extended Properties='text;HDR=YES;FMT=Delimited'"  Dim l_adoCnn As Connection  Set l_adoCnn = New Connection  l_adoCnn.Open l_strCnn  Set Get接続 = l_adoCnn End Function

toshipoon
質問者

お礼

時間を割いて頂き有り難うございました。 ソースが理解できるよう勉強して行きたいと思います。

関連するQ&A

  • バッチファイルでテキストファイルの中身を置換

    dir C:\*.zip /b /a-d /s > ジップ.txt で作成した、ジップ.txtがあります。 このテキストファイルをパス名を削除してファイル名のみに置換したいのですが、どなたか教えて頂けますか?

  • PHPで複数のテキストファイルを読み込みたい

    PHPを勉強中です。 どうしても自力で解決できないので助けてください。 やりたい事は、 「複数ファイルの内容を読み込み、  それらのデータをcsvのセルに入れたい。」のです。 Aというフォルダに、複数のテキストファイルがあります。 これら各ファイルの内容をそれぞれ取得して 「○○.csv」のB列に上から順々に書き込んでいきたいのです。 Aフォルダに入っているテキストファイルは連番を想定しています。 A/ 0001.txt 0002.txt 0003.txt : フォルダに入っているテキストファイルの数はいろいろです。 3枚のフォルダもあれば100枚のフォルダもあります。 これらのファイルの内容を、それぞれ取得して 用意されているcsvファイルの特定のセルに テキストファイルの数だけ順番に入れていきたいのです。 ○○.csv A列  |  B列  |  C列  | △  |0001.txt内容|  △  | △  |0002.txt内容|  △  | △  |0003.txt内容|  △  | : : プログラムのヒントを教えていただければ嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • EXCEL 2003のVBAでテキストファイルの取り込み方

    EXCEL 2003のVBAでテキストファイルの取り込み方 EXCEL 2003のVBAでテキストファイルのみをとりこむものを組もうと思います。 - 読み込むテキストファイル名は一定の決まりがあります。AAxxxx.txt あるいは ZZxxx.txt といった感じで先頭文字はAAまたはZZで中のxxxは数字の可変(日付)です。 - Directoryはどこに入るか決まりがありません。(このマクロを使用するユーザーがどこのDirectoryにテキストファイルを保存しているかわからないため) FILEN = Application.GetOpenFilename If FILEN = False Then Exit Sub End If Workbooks.OpenText Filename:=FILEN でやると、Directoryの問題は解決しますが、テキストファイル名を絞り込めません いい方法をご教示いただければ助かります。

  • python 外部ファイルのテキスト処理について

    お世話になります。 python を使用して、あるディレクトリ中にあるテキストファイル(ひな形ファイル、複数行)を読み込んで、 これに対してリストやタプル、ディクショナリなどに入った値を連続的に変化させた複数のアウトプットファイルを同一ディレクトリに生成する、という作業を考えています。 たとえばですが、外部のひな形ファイルに ${list1}番のファイル ${list2}のデータ データコード、データ名一覧 -------------+---------- ${list3} -------------+---------- などと作っておきます。{}内はプレースホルダのようなものですがこの形式でなくてもかまいません。 ここに、別途処理して${list2}、${list2}、${list3}を置き換えたファイルを、ファイル番号毎に生成する、というような作業です。 ここで、テキストの単純な置換ならば、stringモジュールのTemplateクラスなどの利用があるようですが、このような複雑な置換にはどう対応していいか分かりません。 上の例で言うと、たとえばlist3には、別の外部ファイルにあるデータ番号、データ名をタプルなどに読み込んで、それを1行ずつ流し込むことをやりたいので、このモジュールの使用は難しそうです。 他に自分で考えた方法としては、ひな形ファイルをファイルオブジェクトとして読み込んで、forを使って順番に処理していく方法ですが、これだとファイルのシーク位置がおかしくなったり、何度も同じような処理が連続してしまってうまくコードに出来ませんでした。 まだプログラミング自体に慣れていませんが、コーディング自体は自分でがんばりますので、方針を教えていただけますとうれしいです。 もし分かりづらかったら補足要求お願いします。

  • テキストファイルの一部置換したファイルをたくさん作りたい

    テキストファイル(a.txt)があるのですが このファイルの一部の文字列aaaをbbbに置換したファイル(b.txt)を作りたいです。 また文字列aaaをcccに置換したファイル(c.txt)も作りたいです。 続けてd.txtやe.txt・・・と作っていきたいですが簡単にできるフリーソフトはないでしょうか? 現状はa.txtを開いてaaaをbbbに置換して、別名で保存するのを繰り返し(10回以上)するので大変です。 このようなことが楽にできるフリーソフトがあれば教えてください。

  • ファイル名からテキスト内文字列の置換

    フォルダ内に tokyo.txt、nagoya.txt、osaka.txt… といったファイル名のテキストファイルがあり そのテキストファイルの中に 地名リンクという文字列があります。 この地名リンクという文字列を各々のファイル名 tokyo.txt、nagoya.txt、osaka.txt…(できれば.txtなしのtokyo,nagoya,osaka) に一括置換したいのですが、何かいい方法はありませんか。

  • バッチ処理でテキストから数値を取り出し、CSVにしたい

    こんにちは。 似非SEです。 2度目の質問です。 現在、あるサーバのディスク容量の増減を管理するため、 以下のバッチをスケジューリングして、容量をファイルに 書き込んでいます。 -------------------------------------------------------- echo D:\ >> DS_D.txt date /t >> DS_D.txt time /t >> DS_D.txt dir D:\ | find "バイトの空き領域" >> DS_D.txt -------------------------------------------------------- 出力されるファイルは次のようになります。 -------------------------------------------------------- D:\ 2008/05/22 09:29 3 個のディレクトリ 39,870,087,168 バイトの空き領域 D:\ 2008/05/23 09:45 3 個のディレクトリ 39,870,087,168 バイトの空き領域 -------------------------------------------------------- 非常に簡単に容量がわかるのですが、これをグラフにするのに 手間がかかってしまっています。 <要望> 1.出力テキストから日付を取得 2.出力テキストから空き容量の数値を取得 3.csvファイルに落とす 出力ファイルは 2008/05/22[TAB]39,870,087,168[リターン] 2008/05/23[TAB]39,870,087,168[リターン] のようにできればベストです。 なにとぞ似非SEを助けて下さいませ!

  • csvファイルを統合する

    あるディレクトリにtest1.txtとtest2.txtというカンマ区切り(拡張子はcsvではないですけど)があったとして、それらのファイルを1行ずつ読み込み、それを追加書き出しで1つのファイルに収めていこうとしています。 そこで以下のようなコードを書いてみたのですが、どうやらtest1.txtしか読み込んで書き出せていないようなのです。その原因が分からずに困っています。 $dir = 'C:/Perl/workdir'; # 対象ディレクトリ名 open MYHANDLE, ">>out.txt"; # 追加書き出しモードでファイルハンドルをオープン opendir DH, $dir or die "$dir:$!"; # ディレクトリを開く while ($file = readdir DH) { # ディレクトリにあるファイル名を取得し、$fileに格納 next if $file =~ /^\.{1,2}$/; # '.'や'..'も取れるので、スキップする open MYFILE, "$file"; # 取得したファイルを開く while (<MYFILE>) { chomp; @dat = split /,/; # 読み込むファイルは「カンマ区切り」としてレコードを読み込む。 $n = @dat; for($i=0; $i<$n; $i++){ print MYHANDLE $dat[$i]; # ファイルに追加書き出し(ファイルがなければ新規作成される) print MYHANDLE ","; # カンマ区切りで書き出していく } print MYHANDLE "\n"; # 1行読み終えるごとに改行 } close MYFILE; # i番目のファイルを読み終えたら閉じる print $file, "\n"; # 読み込み・書き出しをしたファイル名を表示する } closedir DH; close MYHANDLE;

    • ベストアンサー
    • Perl
  • CSVファイルを読み込み、ファイル名を変更。

    CSVファイルを読み込み、ファイル名を変更。 使用言語はperlです。perlは初心者です。 アルゴリズムが、 CSVファイルを読み込み→2次元配列に格納→ファイル名変更 という流れになっているプログラムを作成中です。 CSVファイルの中身は あ.txt , a.txt い.txt , b.txt う.txt , c.txt です。 CSVファイルを読み込み2次元配列に格納するプログラムは以下のようにしました。 ----------------------------------- $i= 0; open IN, "sample.csv"; while (<IN>) { my @data = (); @data = split (/,/); for (0..@data) {$jdata[$i][$_] = "$data[$_]";} $i++; } close IN; ---------------------------------------- 「あ.txt」を「a.txt」に変更しようとして、この中に rename $jdata[0][0] , $jdata[0][1] ; と書いてみましたが、変換されません。 どう書けばよいのでしょうか。よろしくお願いします。

    • ベストアンサー
    • Perl
  • テキストファイルの中身について

    あるフォルダしたのテキストファイルとそのファルダしたのフォルダ中のテキストファイルについて、 例えば、”日本”と言う文字が有ったら、そのテキストファイル名を表示するようなの機能を実現したいです。 何を使ったら、いいですか? サンプルが欲しいです。 教えてください!お願いします。 ーーーーーーーーーーーーー temp-------a.txt |------b.txt |------temp1 |--------a1.txt |--------b1.txt       … などなど、 テキストファイルの中身に、”日本”という文字が存在したら、そのテキストファイル名を出力 ーーーーーーーーーーーーー