• ベストアンサー

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

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

    VBA初心者です。 データをテキスト形式に書き出す際、同じ行のものを一列に書き出したいのですが、あるバイト数を越えると出来上がったテキストデータに改行が入ってしまいます。 それをなんとか解消したいのですがどうしたらよいでしょうか? EXELは2000を使っています。どなたかよろしくお願いします。

  • .txt 形式ってどれですか?

    ファイル形式:1行40字のテキストファイル(.txt)形式 という規定があるのですが僕が使っているのは ミ田 ウインドウズ98 mixrosoft word 2000です 保存するときに、 リッチテキスト形式 テキスト テキスト + 改行 エンコードされたテキスト 等あるのです。 他にもあるのですが保存するとメモ帳形式になってしまうのですがどれですか?

  • ExelのVBAでダブルクォートをセルに埋めるには?

    文字列の中にダブルクォートを入れるにはどうするのでしょうか? C言語であれば、\" と書くところですが。 ダブルクォートを2つ続けると、Exel上で見ると期待どおりに表示されますが、 テキスト形式に保存してからファイルをみると、ダブルクォート2つ入ってます。 エクセルでデータベース管理をし、VBAでそれを編集して、 HTMLを自動生成するようなツールを作成したいのですが、 ダブルクォートをテキストに吐き出せなくて困っています。

  • ExelのVBAでダブルクォートをセルに埋めるには?

    文字列の中にダブルクォートを入れるにはどうするのでしょうか? C言語であれば、\" と書くところですが。 Range("A1") = "<img src=""" & DataName & "."">" 、のように、 ダブルクォートを2つ続けると、Exel上で見ると期待どおりに表示されますが、 テキスト形式に保存してからファイルをみると、ダブルクォート2つ入ってます。 エクセルでデータベース管理をし、VBAでそれを編集して、 HTMLを自動生成するようなツールを作成したいのですが、 ダブルクォートをテキストに吐き出せなくて困っています。

  • Exelでデータ数を減らす方法&カレイダグラフ

    テキスト形式のデータがあります。 それをExelなどで開こうとすると、 データ数が多いため、全部開くことが出来ません。 テキストデータの数を見たところ、約10万個データがありました。 こういった場合、読み込ませることは可能なのでしょうか? あるいは適当に抽出してあげて、Exelで読み込ませることが出来る 6万5千個以内のデータ数にすることは可能でしょうか? (データは不連続ではなく、連続に近いものです) 最終的には「カレイダグラフ」というソフトで、読み込ませたいのですが・・・。 こちらのソフト上でも操作できるのであれば、教えてください。 些細な事でもかまいませんので、何か知ってる事があれば教えてください。 よろしくお願いします。

  • VBAでの構築の質問

    VBAの初心者ですが、データの抽出をしたいと考えています。 フォルダの中に、複数のテキストファイル形式のデータがあり、 その中にあるファイル毎の一部データのみ抽出できないかと考えております。 元データ(1)(テキストファイル形式) 10行目にあるデータ A TOKYO 20行目にあるデータ 100 200 1000 2000 (データの間には、スペースがあります。) 元データ(2)(テキストファイル形式) 10行目にあるデータ B Fukuoka 20行目にあるデータ 300 400 3000 4000 (データの間には、スペースがあります。) 編集後のデータは、それぞれのテキストデータ ・10行目データの2番目の抽出 ・20行目データの2番目の抽出 ・20行目データの4番目の抽出 を抽出できないかと考えています。 編集後データ(エクセルファイル形式に出力)は、下記のような感じできないかと考えてます。     (A列) (B列) (1行目)TOKYO Fukuoka (2行目)200 400 (3行目)2000 4000 皆さんからのご回答、 よろしくお願いいたします。

  • WordのテキストデータをEXELに

    Wordのデータ形式が左詰めで、 1行目 名前 2行目 住所 3行目 TEL . . . と言う様に1件のデータが3行で名前、住所、TELと規則的に並んでいます。このようなデータをEXEL等に読み込ませる時、 セルA  B    C 名前  住所  TEL . . . . . . に変換させたいのですが、どうすればよろしいのでしょうか。教えてください。

  • logファイルをexel オートフィルタで並べ替え

    exel97でサイトアクセスデータのlog形式ファイルをオートフィルタで並べ替えする方法を教えてください。 logファイルをexelで「csvカンマ区切り」で保存しても各行のデータが区切りなしの1行になってしまい使えません。 頻繁に作業を行うため、簡単な方法があればうれしいのですが。 よろしくお願いいたします。 WindowsXP

  • VBAでテキストファイルのデータを1つずつ読みたい

    VBでなくVBAなのですが、以下のようなテキストファイルの1,2行目は行単位で、4行目以降は1データずつ読みたいのですが、自分の知識では'Line'を使用しての行単位での読み込みしかできません。方法があれば教えて頂きたく存じます。 DATE 03/03/21 TIME 09:44:21 (空行) 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 ・ ・ ・ このような感じです。よろしくお願い致します。あと、VBAのファイル操作の詳しい解説書なども教えて頂けるとなお助かります。

  • EXCEL VBA テキストボックスを見やすくしたい

    いつもお世話になっております。 EXCEL VBA のユーザーフォーム上の テキストボックスについて教えて下さい。 大きめのテキストボックスを作り 改行を許可して、数十文字を表示させることができたのですが、行と行の間が詰まりすぎていて、見づらいのです。 行間を空ける方法を教えて下さい。

専門家に質問してみよう