- ベストアンサー
EXELよりVBAを使ってTXTを書き出すとき
VBA初心者です。 データをテキスト形式に書き出す際、同じ行のものを一列に書き出したいのですが、あるバイト数を越えると出来上がったテキストデータに改行が入ってしまいます。 それをなんとか解消したいのですがどうしたらよいでしょうか? EXELは2000を使っています。どなたかよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1です。 うぉ・・・SaveAsなんですね。 私、純粋にExcelの機能を使うのは苦手で。(^-^; まるっきりVBちっくにならいけるんですが。。。 で、ご提示いただいたロジックでテストしてみたんですが 途中で改行じゃなくて、文字数が全然足りないものに。。。(笑) ・・・笑い事じゃないか。 で、本来なら、SaveAsで、こうすれば出来ますよ、という回答をするべきだと思いますが それはどなたかにお任せするとして・・・(ごめんなさい) こうなら出来たよ、というのを。 Private Sub Test() Dim lngCol As Long Dim strBuff As String Dim fno As Integer strBuff = "" For lngCol = 1 To 4 strBuff = strBuff & Cells(1, lngCol).Value Next fno = FreeFile Open "A:\仕訳データ2.txt" For Output Access Write As fno Print #fno, strBuff Close End Sub
その他の回答 (2)
- mousengoke
- ベストアンサー率50% (197/388)
ひょっとしてテキストエディタの方で一定文字数を超えると見た目改行させて表示しているのではないでしょうか? ウィンドウズ標準搭載のノートパッド(メモ帳)なら 編集(E)→右端で折り返す(W) にチェックが入ってるとか?
お礼
ご協力ありがとうございました。 書式の中にありましたがチェックははいっていませんでした。
補足
たびたびお早いレスありがとうございます・・・。 確かにそういうのも怪しいですね。 恐れ入りますがXP標準搭載のメモ帳では「右端で折り返す」がありません。
現在のコードではどうされてるんでしょう? 勝手に改行・・・なんて思い付かないですけど。。。
補足
ご連絡ありがとうございます! それがなぜか・・・。 ChDir "A:\" ActiveWorkbook.SaveAs Filename:="A:\仕訳データ2.txt", FileFormat:= _ xlTextPrinter, CreateBackup:=False ActiveWorkbook.Close saveChanges:=False たとえばエクセルのAからDまでセルがあったとして、 Dのバイト数を71から72に変えると書き出されたデータが改行されてしまうのです。
お礼
ご協力ありがとうございました。
補足
こちらもご連絡ありがとうございます。 すみません・・・VBはもっとよくわからなくて・・・ せっかく書き込みいただいたのですがどっからどこまで 移し変えていいのかわかりませんでした。 その前にも書き出しがあるので書き足します。 ややこしくてごめんなさい。 あるデータから一部を抽出して一度Aドライブに保存し、それをMYDOC内でバイト数を整理してAドライブ仕訳データ2.txtに保存をしています。この バイト数の指示数によって改行されたりしなかったり。 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