|
お世話になっております。
かわかみまめおと申します。
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のセルは、セル内での改行を利用しており、テキストファイルにおいても、行が分かれるようにしたいのですが、いかがすればよろしいでしょうか。
御教示どうぞよろしくお願いいたします。
|
|