
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロ作成初心者です。CSVファイルの日付データについて 3 2022/12/14 06:02
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) エクセルのAltを押すと「自動保存」「上書き保存」・・・に白抜きの「1」「2」・・・が出る。 2 2023/08/11 11:39
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの表示設定
-
excelのバージョンについて
-
エクセルで二つのファイルの同...
-
複数シートのデータを項目ごと...
-
上書き時間を短縮する方法はあ...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
'msimg32.lib'は通常どこにある...
-
これってパソコンの最適化が完...
-
binファイルを解凍したいの...
-
win10の「フォト」で、「次へ」...
-
住所録の新旧統合の仕方?
-
iTunes データ移動に失敗しました
-
ファイルオープンの速度を速く...
-
コマンドプロンプトの「%1」と...
-
エクセル フォルダの画像を画...
-
おすすめのtex執筆環境は?
-
MacOSXへのApache2のインストー...
-
同名のフォルダを検索・削除したい
-
C言語でのファイルの読み込み方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つのファイルの同...
-
Excelで「変更を保存しますか」...
-
slk拡張子のエクセルファイルを...
-
OpenOfficeでLotus123は開かない?
-
間違えて上書き保存した場合の...
-
AccessでクエリしたデータをExc...
-
PDF変換
-
Excel2000でわからないところが...
-
《エクセル》マクロとセルのリ...
-
ISOファイルをUSBメモリにコピ...
-
イラストレーターで
-
職場で excel2010で保存形式を....
-
WinCDRで「***.iso」ファイルか...
-
MP3のデータの中のファイル名の...
-
フォトショップでPDFファイ...
-
CSVファイルををリネームしてxl...
-
エクセルで全角を半角に変換す...
-
ExcelファイルからHTMLファイル...
-
jpgファイルをaiファイルに戻す
-
エクセルにてデータを数ごとに...
おすすめ情報