• ベストアンサー

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

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

  • siraku
  • お礼率54% (276/508)

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

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

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

siraku
質問者

お礼

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

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答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/7940)
回答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

  • エクセルVBA テキストに出力、名前を付けて保存

    エクセルVBA テキストに出力、名前を付けて保存    A  B   C   D 1  aa  bb  cc  =A1&B1&C1 2  dd  ee  ff  =A2&B2&C2 3  gg  hh  ii  =A3&B3&C3 上記エクセルのD列の内容(セルA1~C3が連続したもの)を1行毎にテキストに出力し、 B列の内容をファイル名にしてテキストファイルを多量に自動生成したいのです。 上記エクセルのように3行なら下記の3つのファイルが生成されるといったVBAがほしいのです。 ファイル名がbb.txtで、テキストの内容はaabbcc。 ファイル名がee.txtで、テキストの内容はddeeff。 ファイル名がhh.txtで、テキストの内容はgghhii。 実際は数千行あるので、数千ファイルを一気に生成させたいのです。 どうぞよろしくお願いいたします。

  • VBAでエクセルからのファイル名とテキスト化を自動で実行する方法

    マクロを実行して、エクセルのセルからファイル名とテキストファイルを自動で出力したいのですが、VBA初心者なのでプログラムの書き方がわかりません。 どうかVBAのプログラムの書き方を教えて下さい。 【マクロ実行前のエクセル状態】 1.エクセルのA列にファイル名1を入力 2.エクセルのB列にファイル名2を入力 3.エクセルのC列にテキスト出力させたい文字列を入力 【期待のマクロ動作】 ファイル名1+ファイル名2のファイル名でC列の文字列をテキストファイルで出力。 《例》 A B C 1 2 あ ⇒マクロ実行⇒ファイル名『12』テキスト内容『あ』 3 4 い ⇒マクロ実行⇒ファイル名『34』テキスト内容『い』 5 6 う ⇒マクロ実行⇒ファイル名『56』テキスト内容『う』 7 8 え ⇒マクロ実行⇒ファイル名『78』テキスト内容『え』 ・ ・ ・ ・ 上記の様に、一回のマクロ実行で入力されている列のセル全て がファイル名付きのテキストファイルとして出力をさせたいです。 申し訳ありませんが、よろしくお願いいたします。

  • エクセルのVBAでタブ区切りのテキスを出力したい。

    エクセルのVBAでテキスト出力をしたいのですが、 ・タブ区切りで保存 ・A列の最終行×1行目の最終列の範囲指定が対象 ・範囲内の空欄もタブ区切りにする(最終列には必ず数値あり) ・出力テキストはシートと同じフォルダ内へ格納 ・テキストファイル名はシート名 という感じにしたいのです。 いろいろ検索はしているのですが、これといった回答やサンプルは 見つかっておりません(><) ちなみに、私は、自動記録をしたものを改良して少し使えるレベルです。 よろしくお願いします。

  • エクセルのマクロでHTMLファイルを出力するには

    エクセルのマクロでHTMLファイルを出力するには 下記アドレスのソースをもとに、エクセルでHTMLファイルを複数出力できたらと考えています。 内容は、sheet1のA列にテキストが入っていると、それを任意のファイル名(ダイアログ)でテキストとして保存が可能になるソースです。 ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html 出来ればこれを以下のように変えたいと考えております。 ●シート名「1」~「50」の計50シートのA列のテキストを、 それぞれのシート名+任意の文字列で保存をしたい。 ●ファイル名の任意の文字列については、シート内のセル (例:sheet1のA4)に記載されている内容としたい。 ●ファイル形式は、HTML形式で保存をしたい。 ●保存先のフォルダは任意のディレクトリ内 (例:C:\Documents and Settings\All Users\デスクトップ)の配下に、 シート内のセル(例:sheet1のA3)に記載されている内容を フォルダ名として、新規に作成し、その中に保存したい。 恐れ入りますが、ご回答よろしくお願いいたします。

  • エクセルVBAにてテキスト出力がうまくいきません

    エクセルシートの1列に以下のような文字列を打ち込みました。 - a aa aaa aaaa aaaaa - b bb bbb bbbb bbbbb - c cc ccc cccc ccccc - 「-」の2行後をテキストを出力した際のファイル名とし、ファイル名を含んだ次の「-」までの文字列をそのテキストの中に出力したいです。なお、全体の行数は分かっています。 例えば上の文字列に対して実行すると、 a.txt b.txt c.txt というファイルができ、それぞれの中には a aa aaa aaaa aaaaa などがそれぞれ出力されるようにしたいです。 Sub tepa() Dim strFilename As String Dim FileNumber As Integer Dim strREC As String j = 1 For i = 1 To 70 If Cells(i, 1) = "-" Then strFilename = Cells(i + 2, 1) & ".txt" Do While Cells(i + j, 1) <> "-" If i > 70 Then Exit Sub End If FileNumber = FreeFile strREC = Cells(i + j, 1) Open strFilename For Append As FileNumber Print #FileNumber, strREC Close j = j + 1 Loop End If i = i + j Next End Sub さきほど初めてVBAなるものを知り、見よう見まねで書いてみましたが・・・ループに陥ったりテキストファイルが1つめしか出力されなかったりとうまくいきません。 改善点など教えていただけたら嬉しいです。 よろしくお願いします。

  • ExcelのVBA

    Aというフォルダ内にあるEXCELファイルにてC列を参照(C列にはAフォルダ内にあるテキストファイルのファイル名が記載されている)し、 D列にC列に記載されているテキストファイルの内容(15文字程度)をVBAで出力したいと思っています。 Googleで色々と調べてみたのですが、同じような内容が発見できなかったので、質問致しました。 非常に困っていますので、どなたか教えていただけませんでしょうか? よろしくお願いします。

  • EXCEL VBA でTEXT出力する場合

    EXCEL VBAでCSVファイルにTEXT出力したいのですが、 Write # ステートメントで出力すると出力文字列の前後に 勝手に'"'(ダブルクォーテーション)が入ってしまいます。 これを回避する方法はあるのでしょうか。

  • エクセルのセルをテキストファイル出力する方法教えてくれませんか。

    初心者ですが、 どなたか、エクセルのセル1つを、 テキストファイル出力できる方法をご存知ですか? 詳細には、 エクセルファイルの列Aの内容がテキストファイル名で、 列Bの内容が本文であるテキストファイル出力を 約3000個、順次したいと考えています。 例えば、エクセルファイルに以下のようなデータを保持しているとします。 列A  列B 001  あいうえお 002  かきくけこ 003  さしすせそ この場合、001.txtは本文が「あいうえお」、 002.txtは本文が「かきくけこ」、 003.txtは本文が「さしすせそ」というように、 エクセル1行についてテキストファイルを1つ作成したいと考えています。 このような処理を短時間で実施するのに適した方法をご存知の方がいらっしゃいましたらご教示いただければと思います。 どうぞよろしくお願いいたします。

  • VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。

    VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。 お世話になっております。 VBAで下記を行いたいと考えております。 全体の流れとしては、テキストを読み込み⇒エクセル上で編集⇒テキスト保存です。 そのエクセル上で編集⇒テキスト保存で悩んでおります。 編集した複数のシートを、個別にタブ区切りのテキストファイルに保存したいと考えております。 出力する際に、小数点の「,」⇒「.」に変換します。 ※小数点を「,」として利用しています(海外対応) 編集するシートは全てのセルが文字列形式になっており、列も行も読み込むテキストによって可変なので、統一されているわけではありません。 最終行はA列ではなくB列でカウントします。 全てのセルに値が入っているわけではなく、空白もあります。 また、各セルには「0.00000」や「02.24」等の数値も入っており、数値形式にしてしまうと0が消えてしまうので、全てのセルを文字列形式として編集しています。 なお、小数点以下の桁数も可変です。 つまり、小数点が「,」となっているのを「.」になおし、タブ区切りのテキストファイルとして保存したいのです。 出力する際に、いったん別ブックに保存⇒不要なシートを削除⇒タブ区切りで保存はできたのですが、自分があまりVBAに詳しくないせいか、これでは文字列形式で保存されなかったため、シートを新規ブックにコピー⇒タグ区切りで保存に変更しました。 しかし、これではcells.replace ~で置換すると、「00,000」が「0」になってしまいました。 ※「22,222」等は問題ないのですが……何故かは分かりませんでした。 ファイルとしては20000万行~25000行程度です。 列としては40列前後になります。 あまりVBAには詳しくないので、まとはずれな事を言っているかもしれません。 何か良い方法はありますでしょうか? 宜しくお願いいたします。

  • excel vbaでテキスト出力

    A行=ファイル名 B~D行=テキスト内容 としてテキストファイルを出力したいのですが、やり方を教えていただけないでしょうか? A2から空白にあたるまでテキストを順々に出力したいのですが・・・ よろしくお願いします

専門家に質問してみよう