• ベストアンサー

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

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

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

可能性としては以下など考えられます。 1)セル内で改行している箇所はありませんか?  その場合は、セル内改行文字列 vbLf あるいは Chr(10) を  事前に置換で消すなどすれば対応できるかと思います。 2)スペース区切りテキストの.prnファイルでの保存ではないですか?  その場合、1行あたりの文字数に制限があります。240文字です。  ↓こちらを参考に対応してください。  『Excel で書式付きテキスト (.prn) の文字数が 1 行あたり 240 文字に制限される』  http://support.microsoft.com/kb/249885/ja  またはスペース区切りじゃなくタブ区切りのテキスト形式にするとか、  固定長ファイルなら↓こちらを参考にするとか。  http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_055.html

nepinepi1014
質問者

お礼

ご回答ありがとうございます。 2)でご指摘頂いたとおりの状況でした。 項目の桁をゼロ埋めして揃えてからテキストで保存をするというマクロなので、 文字数は240文字を軽くオーバーしていました。 教えて頂いたURLを参考にさせて頂きます。 ありがとうございました。

その他の回答 (1)

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

>Excelシートをテキスト形式で保存するマクロを作成しているのですが、 マクロを作成しているといって、マクロを見せないなら、教えようがありませんから、マクロを書いてください、と言っていただいたほうが良いと思いますが。なお、私は出来る限り、他人のマクロは参照したりしません。 Sub Text_Output_Print()  Dim i As Long  Dim buf As String  Dim FNo As Integer  FNo = FreeFile  Open "TextTemp.txt" For Output As #FNo  For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row   If Cells(i, 1).Value <> "" Then    buf = Replace(Cells(i, 1).Value, vbLf, "")    Print #FNo, buf   End If  Next  Close #FNo End Sub

nepinepi1014
質問者

お礼

ご回答ありがとうございました。

関連するQ&A