• ベストアンサー

vbcript csvファイルの内容変更

watabe007の回答

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

>コードのv(0)~v(2)がA,B,C列だと認識しています。 その通りです。 >質問に記載している表よりも列も行も大量にあるため B列のデータの有無を確認するので2列以上あれば大丈夫です。 行も10000行でテストしましたが問題なく処理できました。 Option Explicit Dim objArgs, Fso, Arg, buf, FilePath, i, v Set objArgs = WScript.Arguments Set Fso = CreateObject("Scripting.FileSystemObject") If objArgs.Count < 1 Then WScript.Quit For Each Arg In objArgs FilePath = Arg With Fso.OpenTextFile(FilePath) buf = .ReadAll .Close End With buf = Split(buf, vbCrLf) For i = 0 To Ubound(buf) v = Split(buf(i), ",") If Ubound(v) < 2 Then ElseIf v(1) = "" Then v(1) = "新規" buf(i) = Join(v, ",") End If Next buf = Join(buf, vbCrLf) With FSO.OpenTextFile(FilePath, 2) .Write buf .Close End With Next MsgBox "終わり"

tyarutiru
質問者

お礼

何回もご回答していただき、お手数をかけしました。ご教示頂きました最新のコードのお陰でうまくいきました。 ありがとうございました!

関連するQ&A

  • vbs csv 編集

    vbsを実行し下記のようにcsvを編集することは可能でしょうか。 ドラッグアンドロップでvbsを実行することとします。 <実行前> A列 B列  C列 名前 性別 出身地 田中 男  北海道 佐藤 女  沖縄 伊藤 女  東京 桜井 男  東京 <実行後> A列 B列  C列  D列   E列 田中 男  北海道 000001 学生 佐藤 女  沖縄  000002 学生 伊藤 女  東京 100000 社会人 桜井 男  東京  100001 社会人 編集箇所としては、 ・一行目を削除し、二行目を先頭にする。 ・D列には000001~999999まで連番で値を追加 ・E列には、D列の値が「~99999」の場合は、学生。  それ以上は、社会人と記載するようにする。 宜しくお願いします。

  • [VBscript] csvファイルを編集

    D&DでcsvファイルをD&Dした後、 下記のような内容に変更し、保存する コードをご教示頂けないでしょうか。 <変更前> 名前 処理 担当    田中 更新 製品 佐藤 更新 サービス 伊藤 更新 製品 桜井 削除 サービス <実行後> 名前 処理 担当   処理内容 田中 更新 製品   更新処理 佐藤 更新 サービス 更新処理 伊藤 更新 製品   更新処理 桜井 削除 サービス 削除処理 <csv変更内容> ・[処理]列に「更新」という値がある場合、[処理内容]列に「更新処理」という値を入れる ・[処理]列に「削除」という値がある場合、[処理内容]列に「削除処理」という値を入れる 宜しくお願いします。

  • ExcelへのCSVファイルの取り込み

    当方のExcelの環境は、Excel 2003/2007/2010 が混在しています。 CSVファイルをExcelに取り込んだ際、各セルへ下記のような当方の意図した形式で取り込む方法をご教示頂きたくお願い致します。 下記のようなダブルクォーテーション( " )で囲まれたカンマ( , )区切りのCSVファイルがあるとします。 ※[改行]の部分は、実際には改行コードが入っています。 ※[スペース]の部分は、実際には半角/全角スペースのいずれかが入っています。 "登録番号","登録名","登録内容","部署コード" "0001","山田一郎","・テスト[改行][スペース][スペース]ホゲホゲ,"01" "1002","鈴木次郎","・テスト2","10" "0102","佐藤三郎","","10" このファイルをExcelで開くと、A1~D4の各セルに下記の内容で表示されます。 =========== A1セル:登録番号 B1セル:登録名 C1セル:登録内容 D1セル:部署コード A2セル:1 B2セル:山田一郎 C2セル:・テスト       ホゲホゲ D2セル:1 A3セル:1002 B3セル:鈴木次郎 C3セル:・テスト2 D3セル:10 A4セル:102 B4セル:佐藤三郎 C4セル: D4セル:10 =========== これを下記のようにA2やD2、A4セルの数字部をデータ通りに表示したいです。 =========== A1セル:登録番号 B1セル:登録名 C1セル:登録内容 D1セル:部署コード A2セル:0001 B2セル:山田一郎 C2セル:・テスト       ホゲホゲ D2セル:01 A3セル:1002 B3セル:鈴木次郎 C3セル:・テスト2 D3セル:10 A4セル:0102 B4セル:佐藤三郎 C4セル: D4セル:10 =========== データの取り込みにて区切り文字を"カンマ"にして、A列やD列を"文字列"として読み込む事を考えましたが、「登録内容」の部分に改行が入っている為、下記のように改行後の文字列がA列に入ってしまい、意図した内容での表示が出来ません。 =========== A1セル:登録番号 B1セル:登録名 C1セル:登録内容 D1セル:部署コード A2セル:0001 B2セル:山田一郎 C2セル:・テスト D2セル: A3セル: ホゲホゲ" B3セル:1 C3セル: D3セル: A4セル:1002 B4セル:鈴木次郎 C4セル:・テスト2 D4セル:10 A5セル:0102 B5セル:佐藤三郎 C5セル: D5セル:10 =========== A列、D列は文字列の状態で読み込みつつ、C列の改行は当該セル内で実行する方法をご教示頂きたくお願い致します。

  • エクセルの検索機能について

     エクセルの詳しい方に質問です。  まず下記のようなデータがあります。  A列  B列  安部  10  佐藤  20  佐藤  30  佐藤  25  田中  10  このデータをもとに下記のような表をつくりたく思っています。  A列  B列  C列  D列  安部  10  佐藤  20   30   25  田中  10 なお、A列はこちらで入力し、B列~D列に式を入力しておき自動計算するようにしたいのです。 わかる方のお力添えをよろしくお願いします。  

  • EXCELマクロVBAについて

    Excel2007、XPを使用しています。 AからE列に下記のような情報が入力されています。 A / B / C / D / E ID / 名前 / 住所 / 電話 / 注文日 11111 / 田中 / 東京都 / 00000000000 / 2012/08/10 11111 / 田中 / 東京都 / 00000000000 / 2012/08/09 11111 / 田中 / 東京都 / 00000000000 / 2012/08/18 11112 / 佐藤 / 京都府 / 00000000000 / 2012/08/10 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/11 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/15 A列のIDでくくったとして、 E列の注文日が最大のみの行を表示させたいです。 A / B / C / D / E ID / 名前 / 住所 / 電話 / 注文日 11111 / 田中 / 東京都 / 00000000000 / 2012/08/18 11112 / 佐藤 / 京都府 / 00000000000 / 2012/08/10 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/15 このようなことはマクロで可能なのでしょうか? 恐れ入りますがご教授お願い致します。

  • excel2003 2列のデータを1列に

    エクセル2003にて 下記のように2列のデータを1列に表示させたいと思っております。 A列  B列              C列 田中 佐藤              田中 鈴木 池田 このように>      鈴木 後藤 内藤              後藤                     佐藤                     池田                     内藤 C列に入れる数式をお教えください。 よろしくお願いします。

  • エクセルのデータ並べ替え(抽出)の方法

    エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。   A    B    C   D 1 田中  東京  千葉  福岡 2 山田  京都  滋賀 3 佐藤  奈良  青森  USA 4 鈴木  カナダ 愛媛 A列は名前、B列以降は文字列です。B列以降はC列までの行、D列までの行とさまざまです。重複セルはありません。 これを下記のように並べ替えたいです。   A    B    C   D 1東京  田中 2千葉  田中 3福岡  田中 4京都  山田 5滋賀  山田 6奈良  佐藤 7青森  佐藤 8USA   佐藤 9カナダ 鈴木 10愛媛  鈴木 こういうことは可能でしょうか??? 教えてください。 よろしくお願いします。

  • エクセルでひもづいて表示させるには

    エクセルで、シート1とシート2をつくり、シート2には、 A  B   C 1  佐藤 5214 2  田中 3562 3  木村 2235 という、番号と名前、コードを表にします。 シート1のA列に「1」(番号)を入れると、B列にそれにひもづいた「名前」、C列に同じく「コード」を表示させるには、どうすればよいでしょうか。 よろしくお願いいたします。

  • エクセルで、2つの列を比較して判定する方法。。。

    宜しくお願いします。 2つの列を比較して、判定結果を表示させる方法はないでしょうか? 例えば A         B 田中      加藤 佐藤      志村 吉田      吉田  のような列があった場合、 A列の文字がB列にもあった場合は1 A列の文字がB列になかった場合は0 をかえす式は作れないでしょうか? A         B     C 吉田      加藤     1(”吉田”はB列にあるので1)  佐藤      志村     0(佐藤はB列にないので0) 田中      吉田     0(田中はB列にないので0) やり方を教えてください。 宜しくお願いします。

  • エクセルシート間の照合について

    エクセルシート間で照合をしたいと思っています。 照合する項目は2つ。2つともあえばそのA列のデータを表示するというものです。 データは シート1(前年) A  B  C  D 1  田中 123 東京都・・ 5  佐藤 124 千葉県・・ 3  山本 128 埼玉県・・ シート2(今年) A  B  C  D   山本 128 埼玉県・・   佐藤 124 北海道・・   田中 123 東京都・・ C列とD列を照合し2つともあえばシート2のA列にシート1のA列のデータを入力する。なければ「なし」と入力できるようにしたいのです。 上の場合は山本のA列に「3」佐藤には「なし」田中には「1」と入るのうになればと思います。 入力されている列は同じですが順番はばらばらです。データ数は1万件を超えています。 どなたかアドバイスいただければと思います。よろしくお願いします。