• 締切済み

エクセルVBAで

いつもお世話になっています。 エクセルVBAでセルのデータを読み込んでテキストファイルを出力するプログラムを書いています。 その際に、セル内のデータで「00」や「01」などのデータを読み込んで、そのままテキスト出力させたい場合関数の指定をStringにした場合「0」や「1」と出てしまいます。 「00」や「01」でテキスト出力させる方法を教えてください。 よろしくお願いいたします。

  • homma
  • お礼率84% (744/884)

みんなの回答

回答No.3

こんばんは。 これは、CurrentRegionで、囲まれる四角の中のデータを出力するものです。 出力場所は、Excelのデフォルト・フォルダか、マクロを動かしているファイルのフォルダーです。 出力ファイル名は、「Output.txt」 例えば、こんな風にすることです。不具合があれば、また考えます。 '// Sub Test1()  Dim rng As Range  Dim fNo As Integer  Dim r As Variant  Dim c As Variant  Set rng = Range("A1").CurrentRegion  'rng.Select '範囲の確認用  fNo = FreeFile()  Open "Output.txt" For Output As #fNo '<--FreeFile()から。  For Each r In rng.Rows   For Each c In r.Cells    buf = buf & "," & c.Text '<-このように、Textプロパティを使います。セパレータは「,」カンマ区切り   Next c   Print #fNo, Mid(buf, 2)   buf = ""  Next r  Close #fNo End Sub '//

回答No.2

こんにちは。 >セル内のデータで「00」や「01」などのデータを読み込んで、そのままテキスト出力させたい 要するに、Format関数で整えて出力するよりも、Text プロパティの値なら目で見たままですから、それを出力させればいいはずです。 エクスポートは、ほとんど、出回っているコードのままでいいです。 Open "Output.txt" For Output As #fNo '<--FreeFile()から。 Print #fNo, [ここの値が問題] Close #fNo

homma
質問者

お礼

WindFaller様 回答ありがとうございました。 keronjin様の回答に補足で書かせていただきましたとおりマクロの追加で変更してテキスト出力しました。 今回WindFaller様からいただきました回答の[ここの値が問題]という部分を今少し詳しく教えてもらえないでしょうか。 時間がたってしまい申し訳ありませんがなにとぞよろしくお願いいたします。

  • keronjin
  • ベストアンサー率50% (83/166)
回答No.1

もう少し詳しく記載して質問されると回答も付きやすいかと思いますよ。 あなたがどういうプログラムを書いているのかなんて誰にもわかりませんからね。 支障が無い程度に現状のソースの一部を記載するとアドバイスしやすいかと思います。 単純に文字列として保存すればいいように思いますが。。。 そもそもそのセル内に表示されているデータ「00」や「01」は文字列ですか?。 もしそれが”数値”で、セルの書式設定によって頭に0が付いているのなら テキストに書き出した際に「0」や「1」になってしまうのは当たり前の話です。 値の形式をよく確認してみることをおすすめします。

homma
質問者

補足

keronjin様 回答ありがとうございました。 返信を返していたつもりでしたが送っていなかったようです。 確かにセルの書式設定で「0」や「1」などを「00」や「01」となるようにひょうじしていました。 当然セルの値は「0」や「1」です。 そこで以下のマクロを追加して解決しました。 if a=0 then a=00 if a=1 then a=01 ・ ・ ・ という感じです。 セルのビジュアルがそのままテキストデータと思いこみ変な質問をしてしまいました。 keronjin様の回答で自分の間違いを認識できました。 ありがとうございました。

関連するQ&A

  • エクセルVBAを利用してのデータまとめに関して

    よろしくお願いします。 エクセルVBAを利用してデータまとめ の方法が学べる手段(HP、本)の紹介をお願いします。 エクセルを用いて測定データの集計を行っています。 エクセル関数はある程度理解出来ており、 関数で出来ること、出来ないことの判別もつくようになってきました。 関数で出来ないことをVBAで行いたいと考えています。 VBAは全くの初心者です。 自分なりに調べてみましたが、これだ!というものが見つかりません。 やってみたいことは、自動で他のエクセルファイルの指定のセルをコピーして、本体のエクセルファイルの指定のセルに貼り付ける 等です。   よろしくお願いします。

  • エクセル2003のVBAを教えてパート3

    kドライブのVBA練習フォルダにある、全てのテキストデータファイル(拡張子.txt)を、エクセルに繋げて取り込こむ(指定のエクセルの1シートに全テキストデータを繋げて取り込む)方法がわかりません。どなたか教えてください。データは、A列にのみに入ります。 テキストデータファイルの数は、1~4ファイルと色々な場合があります。また、行数も1ファイル10行~ 400行と色々です。 次のように、決められた1つのデータなら、プログラムに「元データ.txt」と入力する方法で出来るのでっすが。 Sub テキストファイルの読み込み() '1ファイルのとき  Dim buf As String  Dim cnt As Long  Open "k:\VBA練習\元データ.txt" For Input As #1   Do Until EOF(1)    Line Input #1, buf    cnt = cnt + 1    Cells(cnt, 1) = buf   Loop End Sub

  • excel vbaでのxml出力がわかりません

    EXCEL VBAでAPIを使い、XMLファイルを出力するプログラムを作っているのですが、うまくいきません。 機能としましては、指定したセルの範囲内にユーザーが入力した値を、XMLファイルとして出力するというものです。 ただXMLファイルを出力するだけなら自力でできたのですが、XMLファイルにセルの値を入れることができません。 どなたかご教授願います。

  • エクセル VBA

    いつも、皆々様にはお世話になり、大変役立たせていただいております。 エクセルのデータについての質問です。 セルごとに A,B,C,D,E...... イ,ロ,ハ,ニ,ホ,ヘ,ト... と並んでいるデータがあるとします。 それをテキストデータとして取り出して、 A B C D E . . イ ロ ハ . . . と 各データを改行して取り出すことは可能でしょうか。 行列の変換ではありません。 各セルのデータをひとつずつ取り出して、 テキストデータとして1行ずつ取り出す方法なのです。 VBAで別のシートに1個ずつデータを移して、 ちまちまやっていれば出来そうなのですが、 一発でやる方法はないでしょうか。 よろしくお願い申し上げます。 なぜこのようなことが必要かと申しますと、 歯科のレセ電のプログラムの一環であります。

  • VB.netで表示中のExcelファイルのパスの取得

    お世話になります。 現在VB.net(2005)を使い、任意のExcelファイルを表示するプログラムを作成済みです。 プログラムを実行後、いったん閉じ、再度プログラムを実行した際に前回開いたExcelファイルにデータを上書きするというプログラムを組みたいので、Excelファイルが開かれた段階で現在のパスをテキストファイルに書き込んでおき、そのテキストファイルを使いExcelファイルの指定を行おうとしているのですが、関数等を検索しているのですがなかなか思うような情報がないのでここで質問させていただいております。 Excelファイルのパスをテキストファイルに記述しておくという方法以外にも、「最近使ったファイルによる操作」という方法を考えたのですがVBAの情報しか見つけることができず・・・ どなたかお力添えをお願いいたします。

  • Excel VBAでの関数の使い方を教えてください

    いつもお世話になっております Excelシートのあるセルに、 =COUNTIF(K321:K336,"○") のような関数を挿入してあります。 行挿入する毎に、K321:K336の範囲指定部分を 1つずつ増やしていきたい(k322:k337のように・・)のですが VBAでは、どのように記述すればよいのでしょうか よろしくお願いします

  • excelのシートからVBAを除いて書き出し

    特定のExcelのシート(以後、出力シート)だけを予め指定したファイルへexcel形式で書き出したいです。 そのとき、出力シートにはボタンやボタンに関連付けされたVBAプログラムがあるのですが、それらのボタンやシートに関連付けされたVBAは書き出さずに、純粋に各セルに記載されている内容と罫線情報だけを書き出したいです。 出力シートにはVBAを残したくないのが理由ですが、上記のような書き出しをするにはどのようにすればよいのでしょうか。

  • エクセルVBAでテキストを出力したい

    エクセルVBAでテキストを出力したいのですが、 やり方がわからないので教えてください。 仮にSheet2のA列に文章があるとして、 シート全体を1つのテキストファイルとして出力し、 ファイル名をSheet1のA1セルにしたいです。 同じような質問もあるのですが、ファイル名に関しては、 ちょっと見当たらなかったので質問しています。

  • excel vba 一番効率の良い方法を教えてください。

    こんにちは。よろしければ教えてください。 VBAで、テキストデータから読み込んだ日付「20080825」を、 エクセルシートに貼り付ける際(又は貼り付けた後)に、 「2008/08/25」と表示すると同時に「日付」として認識できる形 にしたいのです。(つまりシリアル値に変換したいということに なるのかな?) ○読み込むデータは8ケタの数値です。 ○当然ながら、セル1つにつき1つの日付です。 ○データが多いので、一つ一つ変換すると時間がかかります。   (しかしこの方法しか思いつきません;) ○VBAでもワークシート関数でも…方法は問いません。 一番適している方法を教えてください。 よろしくお願い致します。

  • エクセルの文字抜き取り

    エクセルでも、エクセルVBAでも結構ですので 何方かお知恵をお貸しください。 文字と数字の混在したテキストデータ(複数行)を エクセルに取り込む際に、任意の場所で区切り それぞれを、セルに格納したいのですが どうすれば良いか分かりません。 例としては、   123456AAAAAAA888888ZZZZZ のテキストデータをエクセルに取り込む際に 自動で指定した位置で区切り、各セルに格納を行いたい。   12345 AAAAAAA 88888 ZZZZZZ 区切る位置は固定です。 テキストファイルを取り込む際の処理でも良いですし 一旦、連続したデータをエクセルに取り込んでからの 処理でも結構ですので、宜しくお願い致します。

専門家に質問してみよう