ACCESSでクエリーを読み取ってhtmlファイルに出力するVBA

このQ&Aのポイント
  • 特定のクエリーのデータを順に読み取り1行づつデータが終わるまで出力しhtmlファイルを作成するプログラムをACCESSのVBAで組もうとしておりますが、VBAでクエリーのデータを読み込む手順が判らず困っております。
  • クエリー"q0001"を読み込んで、Cドライブ直下に"test01.html"というファイルを作成するプログラムをACCESSのVBAで組もうとしておりますが、VBAでクエリーのデータを読み込む手順が判らず困っております。
  • ACCESSのVBAで特定のクエリーのデータを順に読み取り、1行ずつデータが終わるまで出力しhtmlファイルを作成するプログラムを組もうとしていますが、クエリーのデータを読み込む方法が分からず困っています。
回答を見る
  • ベストアンサー

ACCESSでクエリーを読み取ってhtmlファイルに出力するVBA

特定のクエリーのデータを順に読み取り1行づつデータが終わるまで出力しhtmlファイルを作成するプログラムをACCESSのVBAで組もうとしておりますが、VBAでクエリーのデータを読み込む手順が判らず困っております。 (次の例はクエリー"q0001"を読み込んで、Cドライブ直下に"test01.html"というファイルを作成するというもの) 何卒宜しくお願いいたします。 Sub hemlwrite() 'htmlを書き出すプログラム Dim fNAME As String 'ファイル名格納用 fNAME = "c:\test01.html" '作成するhtmlファイル名と格納場所の指定 Open fNAME For Output As #1 'ファイル番号1で新規作成 'データ書き込み、 Print #1, "<html>" Print #1, ----- -- 'ここにクエリー"q0001"のデータを順に読み取りそのフィールドの内容を出力する Print #1, "</html>" Close #1 '閉じる MsgBox fNAME & "を作成しました。" End Sub

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

Access2000なら、既定はADOなので、こちらが参考になると思います。 ADOのレコードセットを開く - Openメソッド : ADO入門講座 http://www.accessclub.jp/ado/08.html

tommy-t
質問者

お礼

早速のご回答、重ねて有り難うございます。 早速ご指導頂いたサイトを拝見しましたところ、まさしく知りたかったことそのものが掲載されておりました。 一気に解決です。 しっかりADOを理解しながら取り組んで行こうと思います。 このたびは本当に有り難うございました。

その他の回答 (1)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

Accessのバージョンは? ADO なり DAO なりを使えば、テーブル Or クエリのデータを 読み込む?ことはできます。

tommy-t
質問者

補足

早速のご返答有り難うございます。肝心な情報が漏れており申し訳ありません。Accessのバージョンは2000です。(近々最新バージョンに移行する予定ですが)宜しくお願い致します。

関連するQ&A

  • EXCELVBAでファイルにあるデータをtxtファイルに出力しようと考えています。

    EXCELVBAでファイルにあるデータを txtファイルに出力しようと考えています。 txtファイルに出力することはできましたが、 エクセルのデータを参照しません。 どうすればいいのでしょうか。 よろしくおねがいします。 ********************************** 作成したVBA ********************************** Sub test_Click() Dim fNAME As String 'ファイル名格納用 fNAME = "c:\test.txt" Open fNAME For Output As #1 **************************************************** ここにB1からB10までの値をいれようと考えています。 ループのさせ方もよくわかりません。 **************************************************** Print #1, "test1=" & Range("B1").Select & " Print #1, "test2=" & Range("B2").Select & " … Print #1, "test10=" & Range("B10").Select & " Close #1 End Sub

  • EXCELVBAでデータをテキストファイルで出力したいと

    EXCELVBAでデータをテキストファイルで出力したいと考えています。 ***************************** 作成したVBA ***************************** Sub test_Click() Dim fNAME As String fNAME = "c:\test.txt" Open fNAME For Output As #1 i = 1 Print #1, "<test=" & Cells(1, i) & "," & Cells(2, i) & "," & Cells(3, i) & "," & Cells(4, i) & "," & Cells(5, i) & ">" Close #1 '閉じる End Sub ***************************** エクセルの値 ***************************** A列 1 2 3 4 5 ***************************** 出力されたテキストファイル ***************************** <test=1,2,3,4,5> このようになっていますが、 エクセルが A列 1 2 のように、2個しかないと、 <test=1,2,,,> のようになってしまいます。 <test=1,2> ↑のようになるように、エクセルの値に応じて、 「,」が出力しないようにしたいです。 どうしたらよいのでしょうか。 よろしくおねがいします。

  • Access VBA クエリパラメーターについて

    Access VBA についてご質問させていただきます。 AccessVBAにてフォームを起動したときに、ユーザーで作成したクエリにおいて各クエリのデータ件数を取得するプログラムを作成いたしました。 '各クエリの件数をカウントする処理 Public Sub Data_Count() 'カウント用変数を宣言して、初期化する Dim i, j As Integer: i = 0: j = 11: b = 0: Dim rs As Recordset: Dim str(1) As String Dim Fname As Form: Set Fname = Forms!F99_メイン Dim mydb As Database: Set mydb = CurrentDb 'クエリ名・エクセル名用配列を初期化する Erase QName: Erase EName: Erase Count 'クエリの数だけ繰り返す For Each myqer In mydb.QueryDefs If Left(myqer.name, 1) = "Q" And Left(myqer.name, 3) <> "Q0_" Then 'クエリ名用変数の要素数を変更し、クエリ名を格納する ReDim Preserve QName(i): QName(i) = myqer.name 'エクセル用変数の要素数を変更し、エクセルファイル名を格納する ReDim Preserve EName(i): EName(i) = QName(i) & ".xlsx" '件数用配列の要素数を変更する ReDim Preserve Count(i) 'クエリを開く Set rs = CurrentDb.OpenRecordset(QName(i)) 'クエリのレコードが0件の場合 If rs.EOF Then 'クエリの件数を保存する Count(i) = 0 'クエリのレコードが1件以上の場合 Else 'クエリの最終行に移動してクエリ件数を保存する rs.MoveLast: Count(i) = rs.RecordCount End If End If rs.Close i = i + 1 End If Next End Sub 上記のコードを実行してみたところ、ユーザーで作成したクエリを開く際に、 実行時エラー'3061':パラメーターが少なすぎます。1を指定してください。というエラーが発生してしまいました。 どのように修正すればよろしいでしょうか?

  • データがないときにエラーメッセージを出したい

    クエリの結果をHTMLファイルで出力するようなAccessVBAを作成しました。クエリのデータがあれば問題ないのですが、 データがない場合にエラーメッセージを出そうと考えていますが、 うまくできません。どうしたらいいのでしょうか。 よろしくおねがいします。 ****************************************************** 作成したVBA ****************************************************** Private Sub test_Click() Dim fNAME As String fNAME = "c:\test.html " Open fNAME For Output As # Print #, "<html>" Print #, "<head>" Print #, "</head>" Print #, "<body>" Print #, "<table>" mySQL = "SELECT ……;" Set myRS = CurrentDb.OpenRecordset(mySQL) ****************************************************** ここに、クエリのデータがなければ、 エラーメッセージを出そうかと考えています。 ↓のようにしたらだめでした。 If mySQL <> False Then MsgBox "入力した日付のデータはありません。" End If ****************************************************** Do Print #, "<tr><td>" & myRS(1).Value & "</td></tr>" myRS.MoveNext If myRS.EOF Then Exit Do Loop Print #, "</table>" Print #, "</body>" Print #, "</html>" End Sub

  • アクセスVBA 追加クエリ

    下記クエリが一つあります。 [Q_商品] ID 商品名 価格 色 サイズ 重さ 送料 備考 [Q_商品]から、[T_テスト]をテーブルの作成から作りました。 [T_テスト]は、毎回利用する時に、すべてデリートして、[Q_商品]のデータを追加したいです。 [T_テスト]のデータの、すべてデリートは下記VBAでできました。 Private Sub コマンド40_Click() 'システムメッセージの非表示 DoCmd.SetWarnings False DoCmd.RunSQL "DELETE FROM T_テスト" 'システムメッセージの表示 DoCmd.SetWarnings True End Sub [Q_商品]のデータを追加するVBAを教えて下さい。 よろしくお願い致します。

  • ACCESSVBAで日付の表示を2007/12/31から2007年12月31日に変更したい

    ACCESSVBAでdate関数を使って、 ファイルを出力すると、 2007/12/31 のような表示になります。 2007年12月31日 の表示で出力させたいのですが、 どうしたらいいのでしょうか。 宜しくお願いします。 ***************作成したVBA*********** Private Sub test_Click() Dim fNAME As String fNAME = "c:\test.htm" Open fNAME For Output As #1 Print #1, "<html>" Print #1, "<head>" Print #1, "</head>" Print #1, "<body>" ****ここで日付を表示させる***** Print #1, "<p>" & Date & "</p>" … … Print #1, "</body>" Print #1, "</html>" Close #1 '閉じる End Sub

  • アクセス2007VBAのクエリのエキスポート

    お世話になります。 以下の様にアクセス2007のクエリを エクセルにエクスポートのVBAを作成したところ うまく動作しません。 どこか構文が間違ってるのでしょうか? Private Sub トグル2_Click() Dim acc1 As String Dim exce1 As Variant acc1 = "q_有給付与後" ecxe1 = "G:\MOCF05602\大信\エクスポートテスト.xlsx" DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel12Xml, acc1, exce1, True MsgBox "エクスポート完了★" End Sub

  • Access2010クエリーのExcel出力書式

    Access2010で作成したクエリーをそのままの書式でEXCELに出力するVBAを組みたいと思っています。VBAは下記のとおり書いてみましたが、クエリーで表示される書式(ある列はカンマ、ある列は日付形式など)をそのまま移すことができません。このVBAをどのように変更したら、クエリーそのままの書式で出力できますでしょうか? '''''QUERYを指定 Dim varQE1 As Variant varQE1 = "QE1_List" 'QUERY名 '''''日付つきファイル名を指定 Dim varExcelPass As Variant varExcelPass = "C:\List_" & Format(Now(), "yyyymmdd") & ".xls" '''''ファイル変換出力 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, varQE1, varExcelPass, True

  • VBAのバイナリ出力について

    この度はお世話になります。 VBAについて、調べながらやっているのですが・・・うまくいかずに悩んでいます。 エクセルのVBAでバイナリファイル(xxx.bin)を出力したいのですが 思った出力が出ないでいます。 エクセルの方でDEC2HEXをした512文字を、そのままの状態でバイナリファイルを生成をしたいです。 そこで、まずはtxtで書き出せるかやってみまして・・・ Sub test() fnsave = "1.txt" Worksheets("Sheet1").Activate numff = FreeFile Open fnsave For Output As #numff temp = Range("C3") Print #numff, temp Close #numff End Sub (Sheet1のセルのC3に512文字入っています。) これをOutputをBinaryにして・・・Putで書く? 多分2文字を取り出して・・・書き込む?ような感じなのですが それをプログラムに起こす書き方がわからず困っています。 申し訳ございませんが、ご教授よろしくお願いします。。。

  • アクセスのクエリでSplit関数は使えないのですか

    レコードにaaa/bbb/cccと入っていて、 クエリで SELECT Split([テーブル1]![フィールド1],"/") AS test FROM テーブル1; とすると、 式に未定義関数 <関数名> があります。(Error 3085) になります。 VBAでやるとしたら Sub test() Dim str As String str = "aaa/bbb/ccc" Debug.Print Split(str, "/")(1) End Sub のような事がしたいのですが クエリでは無理なのでしょうか?