ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4033870 EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。
質問者:kuro1019 Excel VBAにて質問があります。
E列に「01」と表示させたくで
'E列を「文字列」にする
Columns("E:E").Select
Selection.NumberFormatLocal = "@"
と記述しました。
その後、名前を付けて保存でCSV形式にて保存します。
保存されたCSV形式のファイルを開くと「1」のままになってしまいます。
なぜでしょうか?何か他に記述しなければいけないのでしょうか?
わかる方教えてください。
困り度:
  • 困っています
質問投稿日時:
08/05/19 14:40
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.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メソッドは奥が深いんで^^;
がんばってくださいね
回答者:pulsa
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
08/05/20 01:09
この回答へのお礼pulsaさん
わかりやすい説明ありがとうございました。
初心者の私にはかなり難しいという事がわかりました。
もう1度、自分なりに勉強してみます。
ありがとうございました。

回答

ANo.2 CSVは単なるテキストファイルなので、列の表示形式などは記録されません。
従って、数値と認識される文字列(数字、符号、小数点)は数値として扱われます。
CSVで保存し、Excelで参照する限り回避手段はありません。
回答者:nda23
種類:回答
どんな人:専門家
自信:参考意見
回答日時:
08/05/19 18:00
この回答へのお礼nda23さん
お忙しい所、回答して頂きありがとうございました。

回答良回答10pt

ANo.1 文字を入力してから表示方法を変えるのでなく、
表示方法を変えてから、文字(01)を入力してみてください。
回答者:olive_surf
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/05/19 17:45
この回答へのお礼olive_surfさん
お忙しい所、回答して頂きありがとうございました。