| 
    
     |  | お世話になっております。 かわかみまめおと申します。
 
 1. 下記のようなエクセルファイル(A)があったとします。
 A    B
 1   文字  文字(3行)
 2   文字  文字(3行)
 
 2.選択した範囲の一番左上をファイル名として、テキストファイルに書き出すコードとして、WEBで調べていたら、下記のコードを書いてる方がいらっしゃいました。
 
 ======
 Sub selection_save_txt()
 '
 '選択範囲の左上のセルの値をファイル名にして、選択範囲をTXTとして出力する
 '保存先はカレントフォルダ
 '
 
 Dim i, j As Integer
 Dim d, SaveD As String
 Dim start_row, start_column, end_row, rows_count, columns_count, end_column As Long
 Dim File_name As Variant
 
 '範囲を調べる
 start_row = Selection.Row                '開始行
 start_column = Selection.Column             '開始列
 end_row = start_row + Selection.Rows.Count - 1     '終了行
 end_column = start_column + Selection.Columns.Count - 1 '終了列
 rows_count = Selection.Rows.Count            '範囲行数
 columns_count = Selection.Columns.Count         '範囲列数
 
 '左上のセルの値をファイル名にする
 File_name = Cells(Selection.Row, Selection.Column).Value
 
 
 'ファイルの読み込みと出力
 Open File_name & "_j.txt" For Output As #1
 
 For i = start_row To start_row + Selection.Rows.Count - 1
 For j = start_column To end_column
 d = Cells(i, j)
 SaveD = SaveD & d & vbTab   '1列ごとにTABコード追加
 'Debug.Print SaveD
 Next j
 SaveD = SaveD & vbCrLf       '1行ごとに改行を追加
 Next i
 
 Print #1, SaveD
 Close #1
 End Sub
 
 ===================
 
 3.ご教示頂きたいこと
 
 (1)上記のFor 以下の記述において、
 ■SaveD = SaveD & d & vbTab
 ■SaveD = SaveD & vbCrLf
 の構文(?)の意味がよくわかりませんでした。
 (変数とセルとタブを&でつなげる?)
 
 また、最後に、
 ■Print #1, SaveD
 とありますが、printは記入することだと調べました。
 ループして最後にprintするのでしょうか。1つのセルごとにprintする必要があるのではないのか、と思いました。
 
 なぜ、これで、上手に動作するのか理解できませんでした。
 どなたかご教示頂けないでしょうか。
 
 
 (2)なお、B1のセルは、セル内での改行を利用しており、テキストファイルにおいても、行が分かれるようにしたいのですが、いかがすればよろしいでしょうか。
 
 御教示どうぞよろしくお願いいたします。
 
 |  |