マンガでよめる痔のこと・薬のこと

(質問)
EXCELをCSV形式で保存した時に、"0000199"という文字列(数字?)のままにしたい場合、どのようにマクロに記述をしたらよいでしょうか。

ActiveWorkbook.SaveAs FileFormat:=xlCSV

(状況)
EXCELのセルに"0000199"という文字列(数字?)がはいっています。
|0000199| セルのイメージ
(セルの左側に数字がよっているということは、文字列の形式でしょうか?)

これを、CSV形式にして保存すると、先頭の0000がとれてしまい、次のようになってしまいます。
| 199|
(セルの左側に数字がよっているということは、数字の形式でしょうか?)


以上 よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

> セルの左側に数字がよっているということは、文字列の形式でしょうか?



文字列の形式にしないと先頭に0はつけられません。

> これを、CSV形式にして保存すると、先頭の0000がとれてしまい、次のようになってしまいます。

CSVにしたからとれるのではなく、CSVファイルをエクセルで開くから、その瞬間にとれるのです。ためしに拡張子を.txtにかえてメモ帳で開いてみてください。

この回答への補足

なるほど!
txtにして開いたら、先頭に0000がついていました。

そうすると、CSVファイルをエクセルで開く瞬間に"0000"が、とれないようにするためのマクロ記述方法はあるのでしょうか?

それとも、
ANo.1 x1vaさんにご紹介頂いたテキストファイルウィザードのような方法しかないのでしょうか?

補足日時:2007/01/17 18:10
    • good
    • 0

テキストファイルウィザードを使いましょう。


http://hp.vector.co.jp/authors/VA014071/tips/txt …
この方法では拡張子をtxtに変更すると書かれていますが、そんなことしなくても
データ→外部データの取り込み→テキストファイルのインポート
からウィザードが始まります。

この回答への補足

あっ!!!!!!よくわかりました。
Excel が勝手に(?)判断してデータ型を決めてしまうことが原因だったのですね。

ただ、.csvのファイルをEXCELで開こうとすると、ウィザードが出る前にCSVファイルが開いてしまうため、本ウィザードが利用できませんでした。

やり方がまずかったのでしょうか?

補足日時:2007/01/17 17:59
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELからCSVへ変換すると0が消えてしまいます

こんにちは。こちらでは、いつもいろいろな問題を解決していだたきまして、お世話になっています。

初心者の質問で申し訳ございませんが教えてください。

エクセルで作成したデータをCSV形式に変換した際、数字の頭についている0が見事にずべて消えてしまいました。内容は郵便番号などですが、エクセルからの簡単な設定で、CVS形式に変換した場合に、頭の0が消えないようにする方法はありますか?
とても困っています。教えてくださいm(__)m

Aベストアンサー

CSVにする時は消えないハズです。
メモ帳とかエディタで開いて見てください。

問題は開く時です。CSVはExcelに関連付けされているのでダブルクリックとかで普通に開くとそうなります。
仕様だと思います。
CSVにする理由がなければ、Excel形式にしておけば良いだけです。
データの受け渡し用ならExcelで開かなければ良いだけです。

どうしてもExcelで後から編集する必要があるなら、事前に拡張子をcsvからtxtに換えて、ファイル-開くからtxtを指定するとウィザードが立ち上がるので、0落ちしたくない列を「文字列」にします。

QExcelで作成した表の数値がcsvで保存すると指数表示になる

エクセルで16桁(12345678・・・)の数値入力した表(表示形式は文字列に設定)をCSVで保存すると、指数表示(8.86E+15)になりました。CSVで16桁の数値を表示するにはどうすれば良いですか?又いくつものセルの表示を同時に直す事は出来ますか?よろしくお願い致します。
OSはWinNT Officexp Personalです。

Aベストアンサー

指数表示のままで保管すると表示のままになります。

>>いくつものセルの表示を同時に直す事は出来ますか
数値が入っているセル(列又は行全体でも可)を選択して
ツールバーにある「,」のアイコンをクリックすれば16桁表示されます。
カンマが不要なら、セルの書式設定→表示形式→ユーザー定義
から「0」を選択して下さい。

QExcel(csv) で入力した文字が日付になってしまいます。

Excel(csv)で住所を管理しています。
一つのセルに1-1-1のように入力をし、
次回そのファイルを開くと2001/1/1と表示され、
セルの書式設定の表示形式をみると日付になっています。

文字列にしてみても、36892というような
数字にしかならず、元の打ったデータがなんだったか
わからなくなってしまいます。

なんとかこの現象を回避する方法はありますでしょうか?
よろしくお願いします。

Aベストアンサー

ファイル→開くからではなくて、
データ→外部データの取り込み→テキストファイルのインポート
でテキストファイルを開いてやると、ウィザードの3番目で列ごとに書式設定ができますので、そこで番地の入っている列のデータ形式を文字列にすればOKです。

QExcelで指数表現しないようにする方法

こんにちは。
csvファイルに 10E098 という文字列がある場合、
このファイルをダブルクリックしてExcelで表示すると
1.00E+99 のように指数形式で表示されてしまいます。
(セルのプロパティも「指数」になっています)
そのまま 10E098 という文字列で表示するようにしたいのですが
どのようにすればよいのでしょうか?
ちなみに、該当のセルの表示形式を「標準」にしても「文字列」に
しても 1E+99 と表示されてしまって出来ませんでした。
よろしくお願いいたします。

Aベストアンサー

CSVファイルを読み込むときに普通に読み込むと数値を見なして1E+99になりますので、文字列として読み込んだらいかがですか

「データ」→「区切り位置」を選択し「カンマやタブなどの…」を選択する。ウィザード2/3画面で区切り文字「カンマ」にチェックを入れ、3/3画面でその数値のある列を「文字列」にします

この文字列を数値にするなら以下のような式で可能です
=VALUE(LEFT(A1,FIND("E",A1)-1))*10^VALUE(RIGHT(A1,LEN(A1)-FIND("E",A1)))

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

どうぞよろしくお願いいたします。

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

Qエクセルで数字の頭に0を追加する方法はありますか?

エクセルのVLOOKUP関数を使って検索をしようと思いますが、
検索する番号が一つが6桁の番号で表示されており、もう片方が7桁の番号で表示されています。
つまり、6桁は頭に0が付いていなくて、7桁には頭に0が付いています。
【例】 6桁=123456、7桁=0987654

ですから同じ表示にしたいのですが、出来れば6桁の頭に0を付けたいのです。
【例】 6桁=123456 → 7桁=0123456

どうすれば、変換できるかよい方法がありましたら教えて下さい。よろしくお願いいたします。

なお、対象セルは3千個程あるので、とてもじゃないけど一個づつは出来ません。
また、当方素人なので出来れば判り易い方法でお願い致します。

Aベストアンサー

範囲選択をして右クリック
セルの書式設定
 ↓
表紙形式
 ↓
ユーザー定義
 ↓
種類のところに 0000000
と記入すれば頭に0が付きます。

QEXCEL VBAでのCSV出力について

EXCELに入力されたデータをCSV出力するプログラムを作成しました。データには日付が入っており年月日がYYYY/MM/DDの形で入力されています。これをハンド作業で名前をつけて保存でCSVに出力すると年月日はそのままの状態で保存されますが、VBAで保存するとMM/DD/YYYYの形になってしまいます。この状態で保存されると、次にEXCELで読み出すと年月日が文字列扱いになってしまいます。新しいマクロの記録で行っても結果は同じでした。
VBAで保存する際、YYYY/MM/DDで保存する方法はないでしょうか。
また、MM/DD/YYYYで保存されたCSVを日付としてEXCELに認識させる方法はあるでしょうか。
教えてください。よろしくお願いします。

Aベストアンサー

#01です。
私のPC(XP Pro+Office2003)でテストを行ったときは、YMD形式で書き込めましたよ。またMDY形式のデータも正しく読み込めました。
となると、Officeのバージョン、マクロ、PC環境などの何かが異なるのでしょう。でも補足にもそれを判断する材料が全く書かれていないので、何とも回答のしようがありません

私がテストしたデータはA列に日付を入力しただけのものです
 A列
2008/1/1
2008/1/2
2008/1/3
2008/1/4
 以下続く

そのデータに対して
ActiveWorkbook.SaveAs Filename:="C:\Book1.csv" ,FileFormat:=xlCSV ,Local:=True
の1行だけを実行したらどうなりますか?
やはりダメなら先のURLにあるようなPC環境(日付のプロパティ等)も確認してください

読み込みで「文字列になる」も再現しませんのでコメントできません。「データ」→「外部データの取り込み」で読み込む手段もありますから試してみてください。

#01です。
私のPC(XP Pro+Office2003)でテストを行ったときは、YMD形式で書き込めましたよ。またMDY形式のデータも正しく読み込めました。
となると、Officeのバージョン、マクロ、PC環境などの何かが異なるのでしょう。でも補足にもそれを判断する材料が全く書かれていないので、何とも回答のしようがありません

私がテストしたデータはA列に日付を入力しただけのものです
 A列
2008/1/1
2008/1/2
2008/1/3
2008/1/4
 以下続く

そのデータに対して
ActiveWorkbook.SaveAs Filename:="C:\...続きを読む

QVBSでEXCEL⇒CSV変換で日付の書式が変わる

いつもお世話になっております。

標題の件なのですが、Excelで"2011/04/28"と入っている項目を
VBSでCSVに変換して出力すると、"4/28/2011"と出力されます。

objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true

とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力されるという記事を見つけたのですが、"4/28/2011"と出力されてしまいます。

解決方法をご教授願います。よろしくお願い致します。

Aベストアンサー

言語設定の「短い形式」が"yyyy/mm/dd"になっているにも関わらず、
"mm/dd/yyyy"で保存される現象が問題なのでしょうか。

だとすると、VBSに限った話ではありません。
Excelでも手動保存時は発生せず、VBAの場合に同現象が発生します。

ExcelVBAで確認してください。
Sub test1()
  With Workbooks.Add
    With .Sheets(1)
      .Range("A1").Value = "2011/4/28"
      .Range("B1").Value = "'2011/04/28"
    End With
    .SaveAs Filename:="C:\temp\test1.csv", FileFormat:=xlCSV
    .Close False
  End With
End Sub

Sub test2()
  With Workbooks.Add
    With .Sheets(1)
      .Range("A1").Value = "2011/4/28"
      .Range("B1").Value = "'2011/04/28"
    End With
    .SaveAs Filename:="C:\temp\test2.csv", FileFormat:=xlCSV, Local:=True
    .Close False
  End With
End Sub

SaveAsメソッドのヘルプを参照の事。
>Local   省略可能です。バリアント型 (Variant) の値を使用します。
>Excel の言語設定 (コントロール パネルの設定を含む) に合わせてファイルを保存するには、
>True を指定します。
>Visual Basic for Applications (VBA) の言語設定に合わせてファイルを保存するには、
>False (既定値) を指定します。
>通常この設定は、Workbooks.Open を実行する VBA プロジェクトが Excel バージョン 5
>または 95 の各国語版で作成されたプロジェクトでない限り、英語 (U.S.) になります。

という事で、
>objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true
>とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力される...
VBSでの引数Localの指定の仕方が少し違います。
objExcel.ActiveWorkbook.SaveAs ファイル名, 6, , , , , , , , , , True

言語設定の「短い形式」が"yyyy/mm/dd"になっているにも関わらず、
"mm/dd/yyyy"で保存される現象が問題なのでしょうか。

だとすると、VBSに限った話ではありません。
Excelでも手動保存時は発生せず、VBAの場合に同現象が発生します。

ExcelVBAで確認してください。
Sub test1()
  With Workbooks.Add
    With .Sheets(1)
      .Range("A1").Value = "2011/4/28"
      .Range("B1").Value = "'2011/04/28"
    End With
    .SaveAs Filename:="C:\temp\test1.csv", FileFormat:=...続きを読む

Qcsvファイルでの日付設定「yyyy/mm/dd」が保存すると元に戻ってしまいます

Excelでcsvファイルの「2004/2/9」を「2004/02/09」としたいのですが、
「セルの書式設定」の「ユーザ定義」で「yyyy/mm/dd」で変換して保存し、またcsvファイルを開くと「2004/2/9」に戻ってしまいます。
どうしてもわかりません。
OSはWIN MeでExcel2000を使用しています。
すいませんが誰か教えてください!

Aベストアンサー

Excelはcsvファイルを開くときに独自の解釈を加え、数値のように見
えるデータや日付や時刻のように見えるデータは勝手に変換して標準
書式を割り当てる困ったチャンなソフトなので、csvの中身の確認に
は使えません。

csvの中身を見たかったらメモ帳などを使いましょう。

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング