• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでブックのデータをテキストファイルに)

エクセルVBAでブックのデータをテキストファイルに

このQ&Aのポイント
  • エクセルVBAを使用して、Excel2003ブックのデータを仕分けし、HTML形式のテキストファイルを作成する方法について。
  • 住所録(全国一覧表)のデータを住所ごとに分けて、個別のテキストファイルを作成し、地域コードを除いた会社名、住所、電話、FAX、担当者の情報をHTML形式で表示する方法について。
  • 作成するテキストファイルのファイル名は地域コード(英数字)とし、テキストファイルの種類はHTMLファイルとする。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

DOUGLAS_ です。 > 早速試してみたのですがエラー表示が出て先に進めませんでした。  ここで躓かれているようでしたら、ちょっと後が心配ですが。。。 myPath = Environ("USERPROFILE") & "\Desktop\Hoge\" の行で、作成された htmlファイル の保存場所を指定しています。  上の例ではデスクトップに「Hoge」というフォルダを予め作成しておかなければ、「パスが見つかりません。」となるのは当然です。  ですから、「Environ("USERPROFILE") & "\Desktop\Hoge\"」の部分を、oshiete100goo さんが、実際に htmlファイル を保存したいと思っていらっしゃるフォルダのフルパスに書き換えてください。  ただし、一番最後に「\」を付けてくださいね。 例) myPath = "C:\Users\user\Documents\Hoge\" myPath = "D:\oshiete100goo\html\"

oshiete100goo
質問者

お礼

できました。完璧です。ありがとうございます。 ご指摘どおりフォルダーを作成してみたところ、 見事に、やりたいことが完全に実行されております。 最初に回答してくださった方には、 「そもそも質問になっていない」とか「外注に頼めばよい」 といった内容でしたので、当初は場違いのことをしてしまったのかと 心配しておりました。 実際に外注業者探しをしている中、望みどおりの結果を得ることができ、 本当に感謝しております。 文句なしに「ベストアンサー」です。有難うございました。

その他の回答 (3)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

平成生まれで自営業ですか。。。 「献身的なボランティア」ではありませんが、こんな感じでしょうか? Option Explicit Sub Macro1()   Dim myPath As String   Dim i As Long   myPath = Environ("USERPROFILE") & "\Desktop\Hoge\"   Range("A:F").Sort Key1:=Range("F2"), Header:=xlYes, MatchCase:=False, _     Orientation:=xlTopToBottom   For i = 2 To Range("F1").End(xlDown).Row     If Range("F" & i).Text <> Range("F" & i - 1).Text Then       Open myPath & Range("F" & i).Text & ".html" For Output As #1       Print #1, "<!DOCTYPE html>" & vbNewLine _         & "<html lang=""en"">" & vbNewLine _         & "<body>" & vbNewLine _         & "<div class=""span3"" id=""sidebar"">" & vbNewLine     End If     Print #1, "<div class=""widget"">" & vbNewLine _       & "<h4 class=""widgetTitle"">" & Range("A" & i).Text & "</h4>" & vbNewLine _       & "<ul><li>" & Range("B" & i).Text & "</li>" & vbNewLine _       & "<li>" & Range("C" & i).Text & "</li>" & vbNewLine _       & "<li>" & Range("D" & i).Text & "</li>" & vbNewLine _       & "<li>" & Range("E" & i).Text & "</li></ul></div>" & vbNewLine     If Range("F" & i).Text <> Range("F" & i + 1).Text Then       Print #1, "</div>" & vbNewLine & "</body>" & vbNewLine & "</html>"       Close #1     End If   Next   ActiveWorkbook.Close False End Sub

oshiete100goo
質問者

お礼

ありがとうございました。早速試してみたのですがエラー表示が出て先に進めませんでした。 (その時の画像は当方のブログにあります。)

回答No.2

> 質問の内容が具体的すぎて今回の回答になりましたでしょか。 そうではありません。そもそも質問になっていないのです。 どこで躓いているかわからないので、じゃあその通りに作ればいいじゃないですか、となります。 仮に、VBAの経験がまったくなくて、何から調べて良いのかもわからないのであれば、 No.1の回答がヒントになるかと思います。

oshiete100goo
質問者

お礼

アドバイスありがとうございます。 エクセルVBAの書籍を買いに行ってみます。

回答No.1

他にも方法はありますが、基本的なテキストファイルへの書き出しは Open Print Close の3つのステートメントを使用します。用法はVBAのヘルプ等で確認してください。 これでセルの内容を順次書き出していくことになります。 望みの機能の完成品が欲しい場合は、どこかに外注するか、献身的なボランティアの登場を待ちましょう。

oshiete100goo
質問者

お礼

早々の回答ありがとうございます。 質問の内容が具体的すぎて今回の回答になりましたでしょか。 ご指摘どおり外注の方法を検討してみます。 引き続き献身的なボランティアの方からの回答も待ってみたいと思います。