Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32 / 12962 ツリー ←次へ | 前へ→

【78760】エクセルの指定セルをテキストデータに書き出したい かわかみまめお 17/1/16(月) 21:02 質問[未読]

【78772】Re:エクセルの指定セルをテキストデータに... かわかみまめお 17/1/23(月) 1:10 質問[未読]
【78774】Re:エクセルの指定セルをテキストデータに... γ 17/1/23(月) 7:09 回答[未読]
【78791】Re:エクセルの指定セルをテキストデータに... γ 17/1/24(火) 7:09 回答[未読]
【78792】Re:エクセルの指定セルをテキストデータに... かわかみまめお 17/1/25(水) 0:56 お礼[未読]

【78772】Re:エクセルの指定セルをテキストデータ...
質問  かわかみまめお  - 17/1/23(月) 1:10 -

引用なし
パスワード
   γ様、ありがとうございます。
その後、少しずつですが、自分でも調べました。

(1)ステップ実行をして、イミディエイトウインドウを見ながら、
SaveDの変化を確認しました。考えてようやく、理解できました。
(自分では、saveD の値が、AAA、次が、AAAタブBBB 次が、AAAタブBBBタブCCC
と累積していく場合に、前の分を書き込んでからでないと、コンピュータは、忘れてしまうのではないか、という考えがあったもので、このような質問をしてしまいました。)

(2)セルの複数行についても、β様からの御教示もあり「タブに関する、エクセルとwindows の違い」なども参考にしました。今の自分では、ちょっと難しいので、
元のエクセルの雛型を以下のようにしました。
  
      A列                B列
1行目 ファイル名となる文字列(XXX) テキストに書き出す内容(セル内複数行)
2行目 ファイル名となる文字列(YYY) テキストに書き出す内容(セル内複数行)

そして、セルの指定は、複数セルの「範囲」ではなく、セル「B1」しか選ばず、XXXファイルを作成する、ことににしました。そのために、
Print #1, SaveD を
Print #1, Replace(SaveD, vbLf, vbCrLf) へ変更することにより、最低限の目的は達成できました。(次の目標は、「B1:B2」を選んで、一気にXXX とYYYのファイルを作成することです。)

本当にどうもありがとうございました。

(3)γ様、もう一点教えて頂きたいことが出てきました。
今回は、テキストファイルが、カレントフォルダに作成されますが、これを常時、元のエクセルがあるフォルダと同じフォルダ内に作成するためには、どのような構文を書き加えたらよろしいでしょうか。

【78774】Re:エクセルの指定セルをテキストデータ...
回答  γ  - 17/1/23(月) 7:09 -

引用なし
パスワード
   > 元のエクセルがあるフォルダと同じフォルダ内に作成するためには、

そのマクロが記載されているブックのフォルダは
ThisWorkbook.Path
で得られます。

テキストファイルの操作にあたって、
「フォルダ名を付けたファイル名」(フルパス名)を使うことです。
間の"\"を忘れないようにしてください。

【78791】Re:エクセルの指定セルをテキストデータ...
回答  γ  - 17/1/24(火) 7:09 -

引用なし
パスワード
   '左上のセルの値をファイル名にする
  File_name = Cells(Selection.Row, Selection.Column).Value '余り感心しないが
  File_fullpath = ThisWorkbook.Path & "\" & File_name & "_j.txt"
  
'ファイルの読み込みと出力
  '''Open File_name & "_j.txt" For Output As #1
  Open File_fullpath For Output As #1

ということです。(変数宣言の追加は省略しました)

【78792】Re:エクセルの指定セルをテキストデータ...
お礼  かわかみまめお  - 17/1/25(水) 0:56 -

引用なし
パスワード
   γ様

御教示どうもありがとうございます。

1.1つ前のγ様の投稿で頂きましたアドバイスを元に自分で試行錯誤の上、

Open File_name & "_j.txt" For Output As #1

Open ThisWorkbook.Path & "\" & File_name & "_j.txt" For Output As #1

に変更したところ、うまく動きました!


2.しかしながら、今回、γ様の投稿で頂きました、
先に、 
File_fullpath = ThisWorkbook.Path & "\" & File_name & "_j.txt"
としておき、後で、
Open File_fullpath For Output As #1
として使う、という記述方法の方が、今後複雑になったときのことを考えると、
応用も効き、より適切なのだと思いました。

次につなげたいと思います。

お陰様で、今回必要なことが自動できるようになりました。
ご丁寧に、御教示頂きどうも有難うございました。

32 / 12962 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free