プロが教えるわが家の防犯対策術!

エクセルVBAを使ってセルのデータをtxtファイルで出力したいと考えています。

仮にフォルダAがあり、その中にフォルダB、フォルダCがあります。
(フォルダBの中にはフォルダDがあります)

フォルダCの中には、エクセルブックがあるとします。

以下のような感じです。

フォルダA
    ├フォルダB
    │    └フォルダD(この中にtxtファイルを作りたい)
    │
    └フォルダC
         └エクセルブック

エクセルブック(Sheet1)
セルA1には「日記タイトル」
セルA2には「日記の内容」

があるとします。

エクセルVBAを使って、フォルダDの中に「日記タイトル.txt」のファイルを作りたいです。

日記タイトル.txtの中身は、セルA2の日記の内容です。

エクセルVBAを使いたいのですが、どのように書けばいいか教えてください。

よろしくお願いします。

A 回答 (8件)

No.2のママチャリです。


nao0620さんの回答を理解できれば、もう答えは分かっていますよね。
念のため、プログラムコードを書いておきますが、内容を理解しないと、
応用ができませんよ。

Sub WriteDiary()
ChDir ThisWorkbook.Path
ChDir ".." '一階層上がる
ChDir CurDir & "\フォルダB\フォルダD"

Open CurDir & "\" & WorkSheets("Sheet1").Range("A1") & ".txt" For Output As #1
Print #1, WorkSheets("Sheet1").Range("A2")
Close
End Sub
    • good
    • 0
この回答へのお礼

ママチャリ様

回答ありがとうございます。

内容を理解しないといけませんね。

今回は、本当にありがとうございました。

お礼日時:2016/02/15 23:27

3行の「Open "C:\フォルダA\~」この部分なのですが、フォルダを移動させることがあるので、そうなるとパスが変わってきてしまいます。



この場合の対処法としては、どのようにすればいいでしょうか?
----------------------------------------------------------------------------
一つには、A3せるにフォルダ名(C:\フォルダA\フォルダB\)を入力することです。そして、OPEN文を次のように書きかえればよいのではないでしょうか。

Open Worksheets("Sheet1").cells(1,3).value + Worksheets("Sheet1").Cells(1, 1).Value + ".txt" For Output As #1
    • good
    • 0
この回答へのお礼

nao0620様

回答ありがとうございます。

参考になりました。

今回は、いろいろと勉強になりました。

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

お礼日時:2016/02/15 23:24

失礼しました。

フォルダの指定が抜けていたので、修正しました。

Option Explicit

Sub Nikki()

Open "C:\フォルダA\フォルダB\" + Worksheets("Sheet1").Cells(1, 1).Value + ".txt" For Output As #1

Print #1, Worksheets("Sheet1").Cells(1, 2).Value

Close

End Sub
    • good
    • 0
この回答へのお礼

nao0620様

何度も回答していただき本当にありがとうございます。

だいたい思っていたことができました。

VBAの基本的な事が分かっておらず本当の苦労しているのですが、最後のもう一つだけ教えていただけると助かります。

3行の「Open "C:\フォルダA\~」この部分なのですが、フォルダを移動させることがあるので、そうなるとパスが変わってきてしまいます。

この場合の対処法としては、どのようにすればいいでしょうか?

何度もお手数おかけしますが、教えていただけないでしょうか?

よろしくお願いします。

お礼日時:2016/02/15 19:02

お待たせしました。

これでどうでしょうか。

Option Explicit

Sub Nikki()

Open Worksheets("Sheet1").Cells(1, 1).Value + ".txt" For Output As #1

Print #1, Worksheets("Sheet1").Cells(1, 2).Value

Close

End Sub
    • good
    • 0

少し時間を下さい。

コーディングを考えてみます。
    • good
    • 0

こんな感じですかね。


後半の出力部分は、No,1さんのパクリです。

Sub WriteDiary()
ChDir ThisWorkbook.Path
ChDir ".." '一階層上がる
ChDir CurDir & "\フォルダB\フォルダD"

Open CurDir & "\日記タイトル.txt" For Output As #1
Print #1, Range("A2")
Close
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ちょっと言葉が足らなかったのですが・・・
Open CurDir & "\日記タイトル.txt" For Output As #1
ここの日記タイトル.txtですが、セルA1の値を入れたいです。
(A1.txt)

申し訳ありませんが、どのように書けばいいか教えていただけないでしょうか?
よろしくお願いします。

お礼日時:2016/02/15 09:27

どこかにありましたよ、バッチファイルを作成して実行するマクロが。


VBA バッチファイル作成 で検索したらヒットしました。
http://ameblo.jp/hobbyse/entry-10646440916.html
ファイル作成だけで止めて、実行部分は削除しとけばいいのです。ファイル名も好きなものにして。
ファイルの中身は、例えば
.WriteLine Cells(1,"A").Value
と書けばA1セルの中身を書き出します。
    • good
    • 0

以下のやり方でどうでしょうか。


open "C:\フォルダA\フォルダB\日記タイトル.txt" for output as #1
print #1, セルA2を指定
close
セルA2の指定の仕方は、いくつかやり方があるので、省略させていただきます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
申し訳ありませんが、もう少し詳しく教えていただけないでしょうか?
よろしくお願いします。

お礼日時:2016/02/14 21:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!