
No.2ベストアンサー
- 回答日時:
CSVファイルはデータだけでCell書式等の情報はまったく持ちませんから
Excelの仕様ですので無理ですね。
あとはマクロでも作成して読み込み後に書式変更するしかないです。
それとExcelでCSVを読み込むとき全桁数字項目は自動的に数値と判断するため
コード項目等で前にゼロある場合、数値表示されて前ゼロが消えますから注意が必要です
私の場合は列単位で書式を設定した雛形を作成しておいてマクロにて展開しています
但しデータ量が多いと1Cell単位でセットすると遅いので配列に取り込み一括セットしてます。
Dim wDat(3, 2)
'データの読み込み処理
:
:
'一括セット
Range(Cells(1, 1), Cells(4, 3)) = wDat
分解にはSplit関数を使ってます。
ありがとうございます。
内容が高度すぎてイマイチ理解出来てませんが、
エクセル仕様なのはわかりました。
違うアプローチを考えます。
ありがとうございました。
No.4
- 回答日時:
素人な私ですが、自分のスキルupのために考え作成してみました。
私の勘違いでしたら申し訳ありません。それでは
まず13桁の数値が入力されているCSVファイルをExcelで読み込むと
指数表示になって困る。これは下記の投稿の回答から察するとデータ
の修正等を行うことから「見づらい」や「扱いづらい」理由からと
推測しました。一応確認してみたのですが、Exselで13桁の数値が
入力されているファイルを開いて指数表示になったものをそのまま
保存すると13桁の数字で保存されずに、指数表示のまま保存され
ました。この場合他のプログラムで指数表示の数値を受けつけずに
エラーになる危険性もあるなと思いました。ということをふまえて
素直にgift4yさんの作業が楽になるマクロを考えてみました。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13桁の数値が入力されているCSVを読み込んだときに指数表示
なってしまったすべてのセルの値を数値表示に変換するマクロ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
これで良いのではないでしょうか?ということで書きのソースが
それです。すごく単純なマクロです。
Sub Macro1()
'---ファイル名を取得するためのメソッド------------------
F_name = Application.GetOpenFilename _
(Filefilter:="csvファイル(*.csv), *.csv")
'-------------------------------------------------------
Workbooks.Open Filename:=F_name 'ファイルのオープン
Cells.Select
Selection.NumberFormatLocal = "0_ "
End Sub
No.3
- 回答日時:
私の方の勘違いならすいませんが、他の回答者さんと違う視点で。
>また、拡張子はあくまでcsvにこだわりたいのです。
>そのデータを最終的には他プログラムに取り込みたいので。
もしかして、ここを勘違いされているのかと思い、回答した次第です。
CSVは単なるテキストファイルですから、書式のセットはできない、もしくは、Excelで開いた時に表示されるように出力側で制御する必要がある事は、#1さん、#2さんの回答通りです。
しかし、繰り返しになりますが、CSVそのものはテキストファイルですから、出力時に
1234567890123
と出力したのであれば、Excelで開けば「1.23E+12」のような指数表示になったとしても、CSVをメモ帳やテキストエディタで開けば、
1234567890123
のまま、となっているはずです。
つまり、他のプログラムに引き渡す分には、そのままで何の問題もないのです。
(むしろ、「'」を付ける事で取り込み側のプログラムが不具合を起こす可能性もある)
「それはわかっている」と言う事でしたら、#1さん、#2さん、以外の最適解は無い、と言う事になりますね。
データの吐き出しと取り込みの間に、エクセルでデータを修正という作業をする必要があるのです。
違うアプローチを考えてみます。
ありがとうございました。
No.1
- 回答日時:
数値(標準)のままでは無理
文字列として扱うしかないです
数字の前にアポストロフィー 「 ' 」 を付けましょう(例 '1234567890123)
これで明示的に文字列とすることができます
あるいは、CSVファイルを開くのではなく
CSVファイルを参照するExcelファイルを作ることをお奨めします
この回答への補足
早速の回答ありがとうございます。
すいません、質問が不十分でした。
13桁の数字は、1シートの何千件とあるんです。
その数字にアポストロフィーをつけるのはちょっと厳しいです。
また、拡張子はあくまでcsvにこだわりたいのです。
そのデータを最終的には他プログラムに取り込みたいので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
slk拡張子のエクセルファイルを...
-
OpenOfficeでLotus123は開かない?
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
大量のフォルダからひとつのフ...
-
エクセルのVBAについて とある...
-
バッチでテキストファイルから...
-
win10の「フォト」で、「次へ」...
-
Latexで図番号だけを「図1.1」...
-
バッチファイルの内容を表示さ...
-
これってパソコンの最適化が完...
-
.txtではなく.logの方が良いの...
-
echoの出力の最後のスペースを...
-
virualboxで仮想マシンフォルダ...
-
バッチ処理でファイルの中身を...
-
バッチファイルで文字列削除に...
-
特定フォルダ内のファイルを自...
-
xcopyで特定のファイルのみをコ...
-
一括でフォルダと同じ名前にフ...
-
[teraterm] waitコマンドで停止...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つのファイルの同...
-
Excelで「変更を保存しますか」...
-
slk拡張子のエクセルファイルを...
-
OpenOfficeでLotus123は開かない?
-
Excelの表示設定
-
excelのバージョンについて
-
AccessでクエリしたデータをExc...
-
間違えて上書き保存した場合の...
-
職場で excel2010で保存形式を....
-
フォトショップでPDFファイ...
-
《エクセル》マクロとセルのリ...
-
上書き時間を短縮する方法はあ...
-
複数シートのデータを項目ごと...
-
WinCDRで「***.iso」ファイルか...
-
高画質TIF画像をJPGに変...
-
ExcelファイルからHTMLファイル...
-
エクセルで全角を半角に変換す...
-
ISOファイルをUSBメモリにコピ...
-
CSVデータの数値の表示
-
jpgファイルをaiファイルに戻す
おすすめ情報