[[20050717092339]] 『エクセルのデータを固定長のテキストに出力する』(ふう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルのデータを固定長のテキストに出力する』(ふう)

おせわになります。
昨日お力を借りて下記のようなデータを作成することができました。

 A	B	C	D	E	F	G	H	I
	1	2	3	4	5	6	7	8
01	▲	○		△			◎	×
02	×	▲	◎	注	○			△

このデータを固定長のテキストに出力するにはどうしたらいいのでしょうか?
上の表の場合、D列01行は空白ですが、
ここにも半角2バイトの空白をセットできるにようにしたいです。
よろしくお願いします。


 csvやタブ区切りのテキストではなく、区切り文字のない固定長のテキストで、となるとマクロで作る必要があると思います。
 csvでいいのなら、下記の方法でもできるかと思います。
 (データのあるシートがSheet1とすると)Sheet2のA1セルに
 =IF(Sheet1!A1="","  ",Sheet1!A1)
 と入れて、必要なところまでコピー&ペースト
 あとはSheet2をcsvファイルで名前を付けて保存とすれば、未入力のセルに半角スペースが2個入ります。
 (nak)


 nakさんありがとうございます。
csvに保存した後で、wordから置換処理をしてカンマを削除しました。
今の私にはこれで十分です。
マクロがあると便利なことが多いことがわかったので
ガイドブックなどを購入してトライしてみたいと思います。


 試しに考えて見ました。
 よければ参考にして下さい。

 Sub TEST()
    ReDim myH(7, 0)
    i = 2
    Do Until Cells(i, 1) = ""
        If Not i = 2 Then
            ReDim Preserve myH(7, i - 2)
        End If
        For j = 1 To 8
            If Cells(i, j) = "" Then
                myH(j - 1, i - 2) = "  "
            Else
                myH(j - 1, i - 2) = Cells(i, j)
            End If
        Next
        i = i + 1
    Loop
    Open "C:\TEST\TEST.txt" For Output Access Write As #1
    For v = LBound(myH, 2) To UBound(myH, 2)
        Write #1, myH(0, v) & myH(1, v) & myH(2, v) & myH(3, v) & myH(4, v) &myH(5, v) & myH(6, v) & myH(7, v)
    Next
    Close #1
 End Sub
 (BB)


 計算式を使う方法です。
 I列の右に以下の作業列を使います。
 J	K	・	Q	R	S
 01	▲	・	◎	×	01▲○  △    ◎×
 02	×	・	  	△	02×▲◎注○    △

 J1=REPT(" ",2-LENB(A1))&A1
   J1をJ1からR2までコピー
 S1=J1&K1&L1&M1&N1&O1&P1&Q1&R1
 S列をコピーしてメモ帳に貼りつければ、固定長のテキストが出来ます。
  [補足]J列の計算式とS列の計算式を合成して1セルのも出来ますが、
         上記のように計算式をコピーするほうが手早くできると思います。
 (ぱっくん)

 ★上記の応用編
 各列で合わせたいバイト数が違う場合に1行目にバイト数を入力して
 そのバイト数を参照して固定長を作る方法です。
 J	K	・	Q	R	S
 2	3	・	4	2	
 01	 ▲	・	  ◎	×	01 ▲○    △       ◎×
 02	 ×	・	    	△	02 ×▲  ◎注○       △

 J2=REPT(" ",J$1-LENB(A2))&A2  *上記計算式の「2」を「J$1」に変更。
 (ぱっくん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.