• ベストアンサー

excelで作成した文書をVBAを使用してテキストに書き出した場合クオーテーションマークが勝手に付く

お世話になります。 excelで作成した文書をVBAを使用して、下記ソースのように、変数に文字を保存、その変数を利用して、テキストに書き出した場合出力先にクオーテーションマークが勝手に付くのです。 調べますと、空白や改行があるとテキストに書き出した場合、クオーテーションマークが自動でつけられるみたいなのですが、これを、クオーテーションマークがない元のまま書き出すことは可能なのでしょうか? **********ソース 保存データ=" O " open 書き出し先テキスト.txt for output as #1 write #1,保存データ close #1 ******** 出力結果が「0」ではなく、「"0"」 大変お手数ですがなにとぞよろしくお願いします。

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

  • ベストアンサー
  • SePapa
  • ベストアンサー率50% (47/94)
回答No.2

以下のサンプルでいかがでしょうか。 一旦保存データを書き込んだ後、 それをインプットとしてダブルクォーテーションを 一括置換する方法です。 当然ながらすべてのダブルクォーテーションが なくなってしまうので注意は必要です。 ******************* 保存データ = "あ" Open "c:\test.txt" For Output As #1 Write #1, 保存データ Close #1 '保存ファイルをinputで開く Open "c:\test.txt" For Input As #2 'output用ファイルを開く Open "c:\test2.txt" For Output As #3 Do While Not EOF(2) Line Input #2, textline 'データ行を読み込みます  'ダブルクォーテーション(Chr(34))を置換します Print #3, Replace(textline, Chr(34), "") Loop Close #2 Close #3

その他の回答 (1)

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.1

こんにちは 詳しいことは、VBAマクロのヘルプを見ていただくとして.. INPUT#ステートメントで再現性をもって読み込む必要がない場合は、PRINT#ステートメントを使うべきでしょう。

関連する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(",")とか色々試しましたが上手くいきません。 どうしたら望み通りの出力ができるでしょうか。 ぜひ教えて頂きたいです。 よろしくお願いします。

  • VBAでUTF-8テキストファイル作成したい

    VBA,文字コードなどにあかるくない初心者です。 VBAを利用して、エクセルのとあるセルに記載されている文字を UTF-8形式でテキストファイルに出力させたいと考えています。 (多言語対応のため・・・、韓国語や中国語でセルに記載された文字を  UTF-8形式でテキストファイルに文字化けしないよう出力させたいためです。) どのように実現が可能か、いくつか検索をしてみましたが 難しくてわかりませんでした。 VBAのサンプルコードを教えていただけないでしょうか。 もしくは、初心者でもわかりやすい実現方法が記載されたサイトを教えていただけないでしょうか。 よろしくお願い致します。 ※今文字コードを意識せずに下記のようなVBAを書いています。(簡略化して記載しています。) Sub test() Open "C:\Sample\Data.txt" For Output As #1 'ファイルを新規作成 'データ書き込み Print #1, Cells(1, 1) Close #1 End Sub

  • ワークシートの内容をテキストファイルに書き込む際に、テキストファイルでは改行が”↑”と表示されるだけで困っています

    エクセルのデータをテキストファイルに出力させたいのですが、テキスト出力の際に"↑"が表示されるだけで改行がうまくできません。 マクロの組み方でアドバイスをいただけないでしょうか? ------------------------------ <↓具体的に、、、、。> ・エクセルデータは、同一セル内に改行させたデータがあります。      列A   列B   行1 No,1  1-111111              1-1111       行2 No,2  2-2222    ←セル"B1"と"B2"のデータを     2-22222    テキストでも改行させて表示したい。 ・テキストでは、下記のように出力させたい ◆No,1 1-111111 1-1111 ◆No,2 2-2222 2-22222 ---------------------- <↓私が試しているコードです。> 'Test.txt 開く Open "C:\Test.txt" For Output As #File_Number '列Aのセルに空白文字列が入るまで、処理を繰り返す i = "3" Do While Worksheets("sheet1").Cells(i, 1) <> "" Print #File_Number, "◆" & Cells(i, 1) Print #File_Number, Cells(i, 2) i = i + 1 Loop 'Test.txt を閉じる Close #File_Number このマクロだとテキストでは ◆No,1 1-111111↑1-1111 ◆No,2 2-2222↑2-22222 となります。 アドバイスの程、よろしくおねがいします。

  • エクセル VBA テキストデータ書きだし

    お世話になっております。 エクセルのデータに記入したデータをテキストに書き出したいのですが、検索した結果、 A列だけテキスト化には成功したのですが、複数列(A-U)までコピーしたいのです。 シート名"メール" テキスト名"テキスト" 申し訳ございませんが、よろしくお願いします。 Sub テキスト() Dim StrFN As String StrFN = ActiveWorkbook.Path & "\テキスト.txt" Dim i As Long, LngLoop As Long Dim IntFlNo As Integer Worksheets("メール").Activate LngLoop = Range("a65536").End(xlUp).Row IntFlNo = FreeFile Open StrFN For Output As #IntFlNo For i = 1 To LngLoop Print #IntFlNo, Cells(i, "A") Next i Close #IntFlNo End Sub

  • Excel VBA 固定長のテキストの作成方法

    Excel2003のデータを固定長のテキストに書き出す方法について 質問させてください。 ■仕様: A列・・・文字列データ(1バイト文字 最大4桁、それ未満のデータあり) B列・・・数字データ(1バイト文字 最大6桁、それ未満のデータあり) A列の値が最大桁数に満たない場合、右側に空白を挿入し4桁とする B列の値が最大桁数に満たない場合、左側にゼロを挿入し6桁とする A・B列合わせて、1件10バイトで改行するテキストデータを作成したい と考えています。 ■補足: B列の下2桁は小数点以下であり、Excelの書式設定で"ユーザー定義" の"種類"に"0000.00"と設定されている。テキスト生成時には、この小数 点を消したい(123.45 → 012345) ■その他仕様 ・Excelのデータ件数は毎回変化 ・上記の内容をCドライブ中の特定のフォルダに書き込み ・テキストデータのファイル名は固定 3冊ほど本を見てみたのですが、固定長出力の記述が無く、また ネット上のお手本を元に作成したものは、A・B間に無用のブラ ンクが挿入されたり、桁数がバラつき、10バイト固定長になら ずに困っております。 ■追記 上記、”補足”の箇所は、計算用の列を挿入して、そこで100倍した 値を使ってはどうかと思うのですが、より洗練された方法があれば知 りたいと思いました。

  • ファイルの作成と書き込み

    今始めてPerlを書いているのですがつまづいている部分があります。 変数に記録されたデータをテキストファイルとして出力する部分なのですが保存するテキストファイルを上書きしないようにしてほしいのです。 私が希望する流れを簡単に説明すると・・・。 変数「$txt」にデータを記録。 ↓ フォルダー「log」に移動。(開く。) ↓ ファイル「1.txt」の存在を確認。 ↓ (存在しなければ) 「1.txt」を作成。中身は「$txt」 ↓ (存在すれば) 「2.txt」の存在を確認。 ・ ・ ・ これを10回ループ ・ 「12.txt」の存在を確認。 (存在しなければ) 「12.txt」を作成。中身は「$txt」。 (存在したら) 「1.txt」を「$txt」で上書き 説明下手なのですがどなたかわかるかたソースを教えていただけませんか?

    • ベストアンサー
    • Perl
  • エクセルVBAにてテキスト出力がうまくいきません

    エクセルシートの1列に以下のような文字列を打ち込みました。 - a aa aaa aaaa aaaaa - b bb bbb bbbb bbbbb - c cc ccc cccc ccccc - 「-」の2行後をテキストを出力した際のファイル名とし、ファイル名を含んだ次の「-」までの文字列をそのテキストの中に出力したいです。なお、全体の行数は分かっています。 例えば上の文字列に対して実行すると、 a.txt b.txt c.txt というファイルができ、それぞれの中には a aa aaa aaaa aaaaa などがそれぞれ出力されるようにしたいです。 Sub tepa() Dim strFilename As String Dim FileNumber As Integer Dim strREC As String j = 1 For i = 1 To 70 If Cells(i, 1) = "-" Then strFilename = Cells(i + 2, 1) & ".txt" Do While Cells(i + j, 1) <> "-" If i > 70 Then Exit Sub End If FileNumber = FreeFile strREC = Cells(i + j, 1) Open strFilename For Append As FileNumber Print #FileNumber, strREC Close j = j + 1 Loop End If i = i + j Next End Sub さきほど初めてVBAなるものを知り、見よう見まねで書いてみましたが・・・ループに陥ったりテキストファイルが1つめしか出力されなかったりとうまくいきません。 改善点など教えていただけたら嬉しいです。 よろしくお願いします。

  • Rubyでテキスト内容を別のテキストに一度に出力したいのですが、どのよ

    Rubyでテキスト内容を別のテキストに一度に出力したいのですが、どのようにすればよいのでしょうか。 rubyはさっきはじめたところです。 一通り検索しましたが、やり方がヒットしませんでした。 a.txtの内容: aaaaa bbbbb ccccc ... を、ファイルコピーではなくoutput.txtに出力したいのですが、 a = open("a.txt") o = open("output.txt",w) ??? a.close o.close で、???の部分にどのような処理を書けばよいのでしょうか。 putsやwriteで書いてみたのですが、(o.write a) #<File:0x28a4450> と出力され、(ファイルオブジェクトのアドレス?)、a.txtの内容が出力出来ませんでした。 a.xxx のようにするのかな、と予想しますが、方法は問いませんので、ご教示いただけないでしょうか。

    • ベストアンサー
    • Ruby
  • Excelシートをテキスト形式で保存するマクロを作成しているのですが、

    Excelシートをテキスト形式で保存するマクロを作成しているのですが、 Excelでは1行なのに、出来上がったテキストでは途中で改行されてしまいます。 ExcelにはAからDEまでデータが入力されています。 途中で改行されてしまう原因は何なのでしょうか。 ご回答よろしくお願い致します。

  • Access2010 テキストの連結

    よろしくお願いします。 Access2010を使用しております。 非連結のフォームに入力した情報を、 保存ボタンで、テーブルに追加しております。 そこで、サブフォームにある複数のテキストボックスをボックス毎に改行して、 一つのフィールドに入れたいと思っております。 一つ一つのテキストボックスは別テーブルを作っておりますが、メインにしているテーブルには、一つのフィールドに入れたいのです。 txt箱1、txt箱2、…txt箱20の空白ではないテキストボックスを改行して、一つのフィールドに追加したいです。 テキストボックスが、ランダムに記入されていたり、空白が間にあると、 うまく一つのフィールドに入れることができません。 改行が何個も入った箇所ができてしまいます。 間に空白があっても、改行を綺麗に入れて、 一つのフィールドに入力させるには、どうしたらよろしいでしょうか。 お世話になりますが、よろしくお願いします。

専門家に質問してみよう