• ベストアンサー

エクセルVBAで、数字をテキストファイルに書き出したい

print #1,cells(1,1) のようにセルの値をテキストファイルに書き出しています。 セルには、6が入力されていて、表示は6.00 にしてありますが、書き出すと当然6になってしまいます。セルの書式を、文字列にすればいいのでしょうが、入力や計算の都合で、数値のままにしたいのです。見えている通りにテキストに書き出すには、どのようにしたら良いですか? よろしくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >print #1,cells(1,1) のようにセルの値をテキストファイルに書き出しています。 >表示は6.00 にしてありますが そうでしたら、 Cells(1,1).Text 'たぶん、Cells(i,j) などとなると思いますが。 と、プロパティに.Textを使用してください。そうすれば、見えている通りに出力されます。

cmc32000
質問者

お礼

ありがとうございます。できました。右端にスペースが一つ入りますが、これは何とかなりそうです。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。それではCells(1,1)の書式をTEXT関数に使用する方法ではいかが?  wk = application.text(Cells(1,1),Cells(1,1).NumberFormatLocal))  Print #1 , wk

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

書式が決まっているのであればTEXT関数で文字列にしてから書き出したらどうでしょうか。元のセルはいじりません  wk = Application.Text(Cells(1,1),"0.00")  Print #1 , wk

cmc32000
質問者

補足

ありがとうございます。 確かにそうだと思いますが、必ずしも書式が決まっているとも限らないのです。他のセルも含めて、見えたとおりに文字列にしたいのですが、無理でしょうか?

関連するQ&A

  • Excel VBAでのテキスト出力について

    excel vbaでの文字列出力について エクセルからテキスト(メモ帳とか)に出力したいのですが 下記のように出力できなくて困っております。 どなたか教えてほしいです。 ●入力エクセル AAA BBB CCC DDD EEE セル(1,1)~(1,5)にそれぞれ文字列が入っている状況です。 これを下記のように出力したいのです。 ●テキスト出力 "AAA","BBB",CCC,"DDD",EEE CCCとEEEをダブルクォーテーションを付けないで出力したいのです。 出力の方法でwriteとprintがありますが writeで Write #1, Cells(1,1),Cells(1,2),Cells(1,3),Cells(1,4),Cells(1,5) やると、自動で全ての文字がダブルクォーテーションで囲まれて、カンマが自動でつき "AAA","BBB","CCC","DDD","EEE" のようになってしまします。CCCとEEEのダブルクォーテーションが不要です。 printで Print #1, CStr(Cells(1,1)), & "," CStr(Cells(1,2)), & "," Cells(1,3), & "," CStr(Cells(1,4)), & "," Cells(1,5) とすると "AAA", "BBB", CCC, "DDD", EEE となり、カンマの後ろに空白が何個か入った状態になります。 (ブラウザでは空白が分かりづらいですが、テキストですと入っております。) Trim関数でTrim(",")とか色々試しましたが上手くいきません。 どうしたら望み通りの出力ができるでしょうか。 ぜひ教えて頂きたいです。 よろしくお願いします。

  • エクセル 文字列で入力した数字を数値にする

    エクセルで、文字列の設定で入力した数字は、[セルの書式設定]で、数値として設定しても、文字列のままになります。 (セルの左上に、文字列と分かる緑の三角が付いたままになり、表を作ってもグラフの表示は出来ません。) 数値として数字を入力をした後、[セルの書式設定]で文字列にして、再び[セルの書式設定]で数値にすると、数値にはなります。 (この場合、文字列にしても、セルの左上に緑の三角が付かず、このまま表を作ると数値(小数点以下が0の場合は小数点以下が削除されます。)の扱いとなりグラフの表示が出来ます。) 文字列で入力した数字は、数値にはならないのでしょうか? よろしくお願いいたします。

  • エクセルでテキストからコピペして分数表示

    エクセル(2003)で、テキストファイルの数値「1/4」などの分数をコピー&ペーストで貼り付けて、分数表示で数式バーは「0.25」などとして計算したいのですが、どうすればよいでしょうか。 セルの書式設定を「分数」にして、分数を入力すれば上記の表示・値となりますが、コピーペの場合「1月4日」で表示され、数式バーは「2007/1/4」などとなってしまいます。 基本的なことかもしれませんが、宜しくお願い致します。

  • Excel VBAについて

    セルAG列(AG12以降)に許可証NOが入っており、その数値(ランダム)から最大値を求めて、 最大値 + 1の値をUserForm1のTextBox1に代入したいと思っています。 lastrw1 = Sheet1.Range("AG11").End(xlDown).Row A = Application.Max(Sheet1.Range(Cells(12,33),Cells(lastrw1,33))) TextBox1.Text = A + 1 許可証NOが「1」「2」・・・と数値であれば上記ロジックで問題なく動くのですが、許可証NOは「001」「002」と3桁で表示したいため、 登録の歳、許可証NOは「'001」という形式でセルAG列に登録しています。 そのため、文字列として認識され、上記ロジックではうまく動きません。 どのようにしたらよいのかご教授下さい。

  • エクセル 12桁以上の数字の入力について

    エクセルのセルに12桁以上の数字を入力(貼り付けも含む)すると 1.23457E+11 のように表示されます。入力したとおりに表示させるにはどのような設定をすればいいか教えてください。 セルの書式設定の表示形式を「数値」などに変更するか ’を付けて文字列として入力すればいいのは分かっていますが面倒なので何もしないで最初から123456789012 のように表示させたいのです。セルの幅を広げても1.23457E+11のままです。 数式バーには 123456789012 のように正しく表示されています。セルの書式は「標準」になっていてサンプルは1.23457E+11となっています。 よろしくお願いします。

  • エクセルで半角数字には数値と文字列がある?

    http://okwave.jp/qa/q6473596.html の質問を見て私も納得がいかず質問させていただきます。 たとえば、A1セルの書式を文字列に設定してから半角で数字を打ち込むと数字は数値でなく文字列としてセルに入ります。 この入力後、A1セルの書式を標準や数値に直してもそのセルの中の数字は左に寄ったままで文字列のままでいるようです。 (でもこれをセルの中でエンターキーを押したりすると数値になってしまいますが) 次にB1セルの書式を標準あるいは数値にして数字を打ち込むと、当然のことですが数字は数値としてセルに入ります。 この入力後、B1セルの書式を文字列に変えると数字は左に寄りますから一見文字列になったように見えます。 ところが上記のセルとこのセルをA1=B1で試してみるとFALSEが返ります。 逆に同じ数字を数値として打ち込んだセルと=で試すとTRUEが返ります。 これはA1とB1は同じ文字列としての数字ではないという証拠だと思います。 B1セルの書式を標準に戻すとまた数字は右よりにもどりますから、セルの中の数字は数値のままのようです。 つまり、半角の数字にはセルの書式にかかわらず文字列と数値の二つがあるということなのでしょうか? だとしたらこの二つはどうやって区別すればいいのでしょうか?

  • 【Excel】セルの書式設定で標準と文字列の違い

    「セルの書式設定」の「表示形式」での「標準」と「文字列」の違いについてです。 「文字列」は「[文字列]は、数値も文字列として扱います。セルには入力した値がそのまま表示されます」 とあります。 しかし「文字列」に数値を入力するとセルの左上に、グリーンの▼印がでてきて、「数値が文字列として保存されています」というエラー表示がでます。 数値も文字列として扱われるはずですがなぜなのでしょう。いちいち「エラーを無視する」にしなければならないので面倒だなと思いますので、今度は「標準」で入力しようと思いますが、 「標準」は「セルの値に対して一般の書式を適用します(特定の書式を指定しません)」 とのことです。一般の書式、特定の書式が何を指すのか分かりません。 文字列が、数値として扱われない理由と、「標準」「文字列」のそれぞれの特徴を教えてください。

  • エクセルで数字の頭0をつけるには?

    既に入力されているデータで、頭に0をつけて8桁にそろえたいと思っています。 セルの書式設定で文字列にしても、入力済みデータでは変更できません。 また、表示形式で"00000000"←このように0を8ついれるのでは 見た目は変わりますが、セルの実際の数値は変わりません。 セルの数値を変更するにはどのようにすればよいでしょうか? 入力されている数値は7桁のものもあれば、5桁のものもあります。 7桁の場合は、頭に0ひとつ、5桁の場合は頭に0をみっつつけるように したいのですが、どなたか方法をご存知でしたら教えて いただけると助かります。どうぞよろしくお願いします。

  • excel vba 17桁の数字が表示できません。

    毎度お世話になります。 EXCEL VBA で、CSVファイルを読み込み マクロで17桁数字を表示したいのですが、どうしても出来ません。 Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "00000000000000000" 上記ですと15桁制限のため下2桁がゼロになってしまい Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "@" ですと1.2345E+16となってしまい Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "'00000000000000000" ですと'12345678901234500 となってしまいます。 セルの書式設定はあらかじめ文字列にしてありますが、これも vbaで何らかの指定が必要なのでしょうか? 初心者でわからないことだらけですが、よろしくお願いします。

  • エクセルVBAのファイル保存(日付のスラッシュ)

    ユーザーフォームのコンボボックス(年月を選択)の値をセルC2に入力し、 そのC2セルの入力内容を元にファイル名を付けて特定の場所に保存するマクロを考えています。 ※↓コンボボックスの値を元にC2セルに年月を入力する。 With Worksheets("sample_list") .Cells(2, 3).Value = UserForm1.ComboBox1.Text & "年" & UserForm1.ComboBox2.Text & "月" .Cells(2, 3).Font.Size = 16 .Cells(2, 3).Font.Bold = True 上記マクロにより C2セルには2021年11月 と表示されます。 実際の値は2021/11/1になっているようです。 ※↓ファイルの保存 その後 ネットワーク上のNASの共有フォルダに、 SavePath = "\\192.168.11.252\Share\マクロ生成データフォルダ" Nengetsu = Range("C2").Value Application.DisplayAlerts = False ActiveWorkbook.SaveAs _ Filename:=SavePath & "\データ_" & Nengetsu, _ FileFormat:=xlOpenXMLWorkbook Application.DisplayAlerts = True ActiveWorkbook.Close として保存しようとすると、 C2の値に 「2021/11/1」 の 「/」が入ってしまうために うまく保存することができませんでした。 そこで 文字列として入力したいので、 下記の様に変更してみましたがダメでした。 .Cells(2, 3).Text = UserForm1.ComboBox1.Text & "年" & UserForm1.ComboBox2.Text & "月" 2021年11月とセルに入力すると、日付として取り扱われるため うまくいかないと推測しましたが、 どのようにすれば、 日付として扱われないで、 保存することができますか? よろしくお願いします。

専門家に質問してみよう