- ベストアンサー
access2000VBAで外部ファイルにデータを書き込む方法
- access2000 VBAで外部ファイルにデータを書き込む方法について教えてください。
- 具体的には、sample.htmlを自動作成し、tableテーブルのデータを書き込みたいです。
- 現在、VBAでの操作に取り組んでいますが、うまくいっていません。アドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
質問文に書かれてある内容はご自分で理解できてますか? rst でテーブルを開く。 rst の先頭から最後のレコードまでループさせながら 1件分のレコード内の [種類]、[名前]、[URL] フィールドの値をテキストファイルに出力する。 上記動作が理解できているのなら多少楽でしょう。 次にHTMLですが、HTMLはご自分で書けますか? 今回のようなサンプルなら2列、または3列のシンプルなテーブルを書ければ大丈夫です。 まずは手作業でHTMLファイルを作成しましょう。 作成ツールを使っても構いません。 頭の中にHTMLファイルのソースコードが浮かんでくるなら良いのですが、普通の人なら最初に自分で雛形を作成してみることだと思います。 例として以下のようなものを作成してみました。 --------------------------- <html> <head> <title>出力結果</title> </head> <body> <table border='1' width='450'> <tr> <td width='150' align='center'>種類</td> <td width='300' align='center'>名前</td> </tr> <tr> <td align='center'>検索</td> <td><a href='http://www.google.co.jp'>Google</a></td> </tr> <tr> <td align='center'>質問</td> <td><a href='http://www.okweb.ne.jp'>OKWeb</a></td> </tr> </table> </body> </html> --------------------------- あとはこれを1行ずつテキストファイルに出力するようにプログラムを書きます。 「1回しか書かないブロック」 「何度も繰り返すブロック」 この見極めをしてください。 レコードから取り出す値の周辺はループで何度も出力されそうですよね。 「検索」や「質問」という文字は [種類] フィールドに入っている文字です。 「Google」や「OKWeb」という文字は [名前] フィールドに入っている文字です。 「http://www.google.co.jp」や「http://www.okweb.ne.jp」という文字は [URL] フィールドに入っている文字です。 この周辺がループしそうです。 ベタに書くと下のようになります。 --------------------------- Dim cnc As ADODB.Connection Dim rst As ADODB.Recordset Set cnc = CurrentProject.Connection Set rst = New ADODB.Recordset rst.Open "MyTable", cnc If Not rst.EOF Then Open "sample.html" For Output As #1 Print #1, "<html>" Print #1, "<head>" Print #1, "<title>出力結果</title>" Print #1, "</head>" Print #1, "<body>" Print #1, "<table border='1' width='450'>" Print #1, "<tr>" Print #1, "<td width='150' align='center'>種類</td>" Print #1, "<td width='300' align='center'>名前</td>" Print #1, "</tr>" Do Until rst.EOF Print #1, "<tr>" Print #1, "<td align='center'>" & rst!種類 & "</td>" Print #1, "<td><a href='" & rst!URL & "'>" & rst!名前 & "</a></td>" Print #1, "</tr>" rst.MoveNext Loop Print #1, "</table>" Print #1, "</body>" Print #1, "</html>" Close #1 End If rst.Close Set rst = Nothing cnc.Close Set cnc = Nothing --------------------------- 一応このコードでシンプルなHTMLファイルは出力できます。 しかしブラウザで開いてみると本当に味気ない。 そこで色や文字の大きさなどを変えたくなるわけですが、これも最初にHTML作成ツールを使ってサンプルを作ってみる。 作ったHTMLのソースコードがどうなっているのかを調べ、VBAから同じように出力するようプログラムを修正していきます。 がんばってください。
お礼
できました。ありがとうございます。 sample.htmlを""で囲ってなかったのが原因でした。 ネットでいろいろ検索してみたものの、html出力をaccessを使って説明しているサイトが見つけられませんでした。Openをヘルプで検索しても自分に理解できる実用例もありません。理解に自信がなく、OpenやWriteの使い方が間違っているのか、それとも何かほかの処理が必要なのか、迷ってしまいました。 でもこれで一歩前進することができました。 ありがとうございました。 (html や ADOのDB接続 等は理解しています)