• ベストアンサー

EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。

Excel VBAにて質問があります。 E列に「01」と表示させたくで 'E列を「文字列」にする Columns("E:E").Select Selection.NumberFormatLocal = "@" と記述しました。 その後、名前を付けて保存でCSV形式にて保存します。 保存されたCSV形式のファイルを開くと「1」のままになってしまいます。 なぜでしょうか?何か他に記述しなければいけないのでしょうか? わかる方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • pulsa
  • ベストアンサー率57% (34/59)
回答No.3

まず、保存した時は、『0』が生きてるはずです それをエクセルで読み込んだ時に、『0』が取れます CSVファイルをメモ帳で開いて見てください そして、表示形式がG/標準のとき『01』と入力しても『0』が消えます つまり、読み込むときに表示形式が指定されていないと上手く行きません 簡単な方法としては 文字の先頭にシングルコーテーション『'』を付けます ABC,123,01,02→'ABC,'123,'01,'02 ただし、常にこの『'』を意識しなくてはなりません 「『'』に続く文字を文字列として読め、という【文字】」ですので… あとは、手動でTEXTファイルを読み込む操作をマクロの記憶で取って、出てきたソースを改造してみると、CSVファイルに手を加えなくても良い方法が見えてくるかも知れません ファイルの拡張子を『.txt』にして試し、出来上がったら、CSVファイルを読み込む際、拡張子を『.txt』に変更したコピーを作るマクロと合体させ『.txt』を読み込みます 手動でのやりかた↓ http://www.relief.jp/itnote/archives/000839.php 最後は、自動オープンなどに頼らず、ファイルオープンからマクロを組む事かな? http://officetanaka.net/excel/vba/file/file08.htm とか http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110.html 辺り いきなりシートに展開するのではなく、一旦変数に受けて、文字としてセルに入力することで、『0』が取れるのを防止します 出来なくはありません 実際業務で発生しますし使ってもいます ですが、結構大変と思った方が良いですよ Openメソッドは奥が深いんで^^; がんばってくださいね

kuro1019
質問者

お礼

pulsaさん わかりやすい説明ありがとうございました。 初心者の私にはかなり難しいという事がわかりました。 もう1度、自分なりに勉強してみます。 ありがとうございました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

CSVは単なるテキストファイルなので、列の表示形式などは記録されません。 従って、数値と認識される文字列(数字、符号、小数点)は数値として扱われます。 CSVで保存し、Excelで参照する限り回避手段はありません。

kuro1019
質問者

お礼

nda23さん お忙しい所、回答して頂きありがとうございました。

回答No.1

文字を入力してから表示方法を変えるのでなく、 表示方法を変えてから、文字(01)を入力してみてください。

kuro1019
質問者

お礼

olive_surfさん お忙しい所、回答して頂きありがとうございました。

関連するQ&A

  • csvファイルを取り込み指定の形式にする

    EXCELでcsvファイルを取り込み指定の形式にして、csvファイルとして 保存するマクロを組みたいです。 途中までマクロの記録機能を使い作ったものです。 Sub csvファイルの取り込み() 'Windows("a.csv").Activate '←ここでファイルを選択する形式にしたい。 Columns("C:H").Select Selection.ClearContents Columns("A:A").Select Selection.Delete Shift:=xlToLeft Range("A1").Select ActiveCell.FormulaR1C1 = "Number" Rows("2:2").Select Selection.Delete Shift:=xlUp Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>C*", Operator:=xlOr, _ Criteria2:="=C1*" ', Operator:=xlOr, Criteria2:="=AABC*" Rows("4:13").Select '←ここをフィルタで選択された行を削除するように変更したい。 Selection.Delete Shift:=xlUp Selection.AutoFilter Field:=1 Range("A1").Select End Sub マクロの流れとして ・まずcsvファイルを取り込む ・C列からH列までを削除(もしくは数値をクリア) ・その後、A列を削除 ・A1セルに文字があるのでその文字を"Number"に変更 ・A列にある指定の文字列をフィルタで抽出してその行を削除  (抽出文字列は以下の3パターン。) Cで始まらない文字を抽出 or C1で始まる文字を抽出 or AABCで始まる文字を抽出 ・以上の作業を終了したら取り込んだファイル名の 左から11文字+"ABC"の文字をあわせてファイル名として CSVファイルで保存する 長くなってすいません。助けてください

  • csvをVBAを使ってエクセル形式で保存したい

    タイトルのとおりなのですが、csvをVBAを使ってエクセル形式で保存したいのですが、その際ひとつ条件がありまして作成するエクセルファイルをcsvと同じ名前にしたいと思っています。  csvのファイル名は都度変わってしまうため私の現在の知識ではVBAを作成することができません。  教えて下さい。よろしくお願いします。

  • CSV形式での保存時に”文字列引用符”にしたい(エクセル)

    データのアップデートに、CSV形式でのファイルから一括アップロードができるのですが、データ内容に条件があり、文字列についてはダブルコーテーションで括ることになっています。 ”千代田区日本橋”,”1丁目1-1”, といった感じなのですが、エクセルから保存する時に一括で「”」が入る方法はあるでしょうか? 普通にCSVで保存すると、入りません。

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?

  • ExcelVBA CSV読込書き込み

    ExcelVBAです。Excelバージョンは2003,2007です。 CSVファイルを読み込み、書き換えて、別のファイル名で保存します。 一通りできるのですが、次の場合どの様にしたら良いでしょうか? CSVのデータ項目が、20桁ほどの数値、住所などの文字列、5桁ほどの数値となっています。 20桁ほどの数値は文字列扱いにしたいのですが、Excelでは指数表示になってしまいます。 そのままCSVとして保存すると指数で保存されてしまいます。 これを文字列として表示し、CSV保存でも文字列として保存したいのです。 よろしくお願いします。

  • ExcelのCSV形式について

    ExcelデータをCSV形式で保存するとき文字列はダブルコーテーション、数字列はそのままでカンマ区切りしたいです。確か123のCSV形式はそうなってたと思います。お手数ですが御回答、宜しくお願い致します。

  • 表示形式を文字列にして、 8070-10 と入

    よろしくお願いいたします。 表示形式を文字列にして、 8070-10 と入力。 CSVで保存して、 再度開くとOct-70 に代わって表示されてしまいます。 どのようにすれば8070-10のままひらくことができるのでしょうか? 保存はCSV指定です。 よろしくお願いいたします。

  • CSVで保存するとセルの書式が継続しません。

    (質問) EXCELをCSV形式で保存した時に、"0000199"という文字列(数字?)のままにしたい場合、どのようにマクロに記述をしたらよいでしょうか。 ActiveWorkbook.SaveAs FileFormat:=xlCSV (状況) EXCELのセルに"0000199"という文字列(数字?)がはいっています。 |0000199 | セルのイメージ (セルの左側に数字がよっているということは、文字列の形式でしょうか?) これを、CSV形式にして保存すると、先頭の0000がとれてしまい、次のようになってしまいます。 | 199| (セルの左側に数字がよっているということは、数字の形式でしょうか?) 以上 よろしくお願い致します。

  • CSV保存について

    EXCELファイルを「名前を付けて保存」でCSVファイルに保存をするときに、「・・・置き換えますか?」というメッセージが出てきます。 既にあるファイルの名前に変更、さらに同じフォルダーの中なので出てくるのは当たり前だとは思うのですが、このメッセージをVBAで自動的に「はい」を選択するようにするにはどうしたらいいのでしょうか? よろしくお願い致します。

  • CSV保存の際に余計なダブルクオテーション

    教えてください。 エクセルファイルをCSV形式で保存する際に、"(ダブルクオテーション)を各文字列の前後に挿入した上で保存しています。 しかし、保存したファイルをテキストファイルで開いてみると、"(ダブルクオテーション)の数が増えてしまっています。 例: EXCELで開いている際には、"a"として表示されている。 しかしCSV保存後にテキストで開くと、"""a"""となっている。 これを、CSV保存後にも、"a"のままとしたいです。 どのようにしたら良いでしょうか?

専門家に質問してみよう