• ベストアンサー

EXELよりVBAを使ってTXTを書き出すとき

VBA初心者です。 データをテキスト形式に書き出す際、同じ行のものを一列に書き出したいのですが、あるバイト数を越えると出来上がったテキストデータに改行が入ってしまいます。 それをなんとか解消したいのですがどうしたらよいでしょうか? OSはWIN-XP、EXELは2000を使っています。どなたかよろしくお願いします。 (VBの方でご協力いただいた方は重複してしまうかもしれませんが申し訳ありません。)

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

  • ベストアンサー
  • yomo3
  • ベストアンサー率32% (88/269)
回答No.3

#2です。 ちょっくらはずしていましたな。 えーと、テキスト出力のモードがプリンター出力になっているから改行されているのですよ。 xlTextWindows,xlTextMSDOS,xlTextMacのいずれかを指定してください。

liunyan
質問者

補足

すみません。早速のお返事ありがとうございます。 試してみましたが xlTextPrinterの部分をxlTextWindowsに変えると 「’Save As’メソッドは失敗しました。 '_Workbook'オブジェクト」と出ます。 試し方間違えてます???

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.4

#2,3です。 そうですか。対応してませんか……。 xlCSV,xlSYLKをお試しください。 '"'とか、','とか余分な文字が入りますが、改行はされないでしょう。 これでだめなら、#2の方法です。 スクリプトの考え方が全然違いますが。

liunyan
質問者

お礼

ありがとうございました。 余計な文字が入ってしまっては次のアプリで 利用できないので#2を参考にさせていただいて、 勉強しなおします。 ご親切にありがとうございました。大変勉強になりました。何が悪いのかがわかったことは大収穫です。 またご機会あればよろしくおねがいします。

すると、全ての回答が全文表示されます。
  • yomo3
  • ベストアンサー率32% (88/269)
回答No.2

こんばんは。 初めに、 複数カテゴリへの掲載は禁止事項です。ご注意ください。 問題の出来事は、Excel(cが抜けてますよ)のテキストバッファに限りがあることが原因です。 どのようなスクリプトを書いているのか不明なので、具体的にコードで説明するのは困難ですが、例えば、純粋にシーケンシャルファイル書き出しで対処するというのも一つの手です。 書式は、 open "filename.txt" for output #1 for 文などでループ print #1,書き出しデータ1; print #1,書き出しデータ2; : : print #1,最終書き出しデータ next close #1 for文などのループの間が1行になるようにスクリプトを書きます。 書き出しデータ1とか2の後のセミコロン';'はデータを改行なしでつなげるという意味です。だから、最終データにはセミコロンを付けません。 この方法でも、漢字コードに制御文字が入るなどの原因で文字化けしてしまうとか、ちょっとした不具合が発生する場合があります。やってみて、一つずつつぶしていくしかありません。

liunyan
質問者

お礼

すみません、かなり焦ってて禁を犯してしまいました。 ご指摘ありがとうございます。気をつけます。 ご指導いただいた通りを試してみます。ありがとうございました。

すると、全ての回答が全文表示されます。
noname#6392
noname#6392
回答No.1

あまり自身が無いのですが 改行って、キャリッジリターンが付加されるという事ですか? Windows XP & Excel 2000 の同一環境で かなり長い文字列を出力するコードを書いた事がありますがそんな事は無かったのですが ちなみに、長い文字列は、半角で「256×10=2560」です。 具体的にテキストファイルに書き出し コードはどのようにしてるんでしょうか? コードをUPした方が、解決が早い気がします。 あまり参考にはならないかと思いますが 不可能な事ではありませんので

liunyan
質問者

補足

お返事ありがとうございます。大変助かります。 詳細は あるデータから一部を抽出して一度Aドライブに保存し、それをMYDOC内でバイト数を整理してAドライブ仕訳データ2.txtに保存をしています。この バイト数の指示数によって改行されたりしなかったり。一行370くらいで改行されてしまうラインがあります。 よろしくおねがいします。 ChDir "A:\" ActiveWorkbook.SaveAs Filename:="A:\リファイル新.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWorkbook.Close saveChanges:=False ChDir "C:\My Documents\BMSEXCEL" Workbooks.Open Filename:="C:\My Documents\BMSEXCEL\仕訳データ1.xls", _ UpdateLinks:=1 Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>", Operator:= _ xlAnd ChDir "A:\" ActiveWorkbook.SaveAs Filename:="A:\仕訳データ2.prn", FileFormat:= _ xlTextPrinter, CreateBackup:=False ActiveWorkbook.Close saveChanges:=False

すると、全ての回答が全文表示されます。

関連するQ&A