• ベストアンサー

エクセルVBAでテキストを出力したい

エクセルVBAでテキストを出力したいのですが、 やり方がわからないので教えてください。 仮にSheet2のA列に文章があるとして、 シート全体を1つのテキストファイルとして出力し、 ファイル名をSheet1のA1セルにしたいです。 同じような質問もあるのですが、ファイル名に関しては、 ちょっと見当たらなかったので質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

>保存先のパスですが、エクセルブックがあるフォルダと同じ場所にしたいのですが、どうすればいいでしょうか? myPath = "G:\" '保存先パス ↓ myPath = ThisWorkbook.Path & "\"  

siraku
質問者

お礼

回答ありがとうございます。 上手くできました。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

>保存先をエクセルブックがある同じフォルダにしたい ファイルの保存先を明示的に指示するだけですが。 変更前: myfile = worksheets("Sheet1").range("A1").value & ".txt" 変更後の一例: dim myPath as string mypath = activeworkbook.path mypath = iif(mypath = "", "", mypath & "\") myfile = mypath & worksheets("Sheet1").range("A1").value & ".txt"

siraku
質問者

お礼

回答ありがとうございます。 上手くできました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

sub macro1()  dim myFile as string  myfile = worksheets("Sheet1").range("A1").value & ".txt"  worksheets("Sheet2").copy  activesheet.saveas filename:=myfile, fileformat:=xlunicodetext  activeworkbook.close false end sub みたいな。

siraku
質問者

補足

回答ありがとうございます。 テキストファイルがマイドキュメントに保存されたのですが、 保存先をエクセルブックがある同じフォルダにしたい場合はどうすればいいのでしょか? ちなみに、今は、ディスクトップにフォルダを作り、エクセルブックを入れてテストしているのですが、フォルダ名は、毎回違い、また、いつもディスクトップにフォルダがあるとは限りません。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

こんにちは、参考に Sub Sample01()   Dim myPath As String, fn As String   Dim c As Range   myPath = "G:\" '保存先パス   fn = Worksheets("Sheet1").Range("A1").Value '保存ファイル名   Open myPath & fn & ".txt" For Output As #1   With Worksheets("Sheet2")     For Each c In .Range("A1", .Cells(Rows.Count, "A").End(xlUp))       Print #1, c.Value     Next   End With   Close #1   MsgBox "...Done" End Sub

siraku
質問者

補足

回答ありがとうございます。 保存先のパスですが、エクセルブックがあるフォルダと同じ場所にしたいのですが、どうすればいいでしょうか? ちなみに、今は、ディスクトップにフォルダを作り、エクセルブックを入れてテストしているのですが、フォルダ名は、毎回違い、また、いつもディスクトップにフォルダがあるとは限りません。

回答No.1

これは超古典的なQ~~ エクセル セルA1に入力したデータをファイル名にする方法 2011/12/02 16:29 http://setsunanohana.blog105.fc2.com/blog-entry-300.html <<以下、引用>> Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub

関連するQ&A