Microsoft Access 掲示板

htmlファイルのインポートについての相談

6 コメント
views
4 フォロー

htmlファイルのインポートについて相談させてください。
VBAは使えないのでマクロのみで小さな仕組みを作ってるのですが行き詰ってます。

対象データは機械設備から出力される稼働情報のデータです。
htmlで勤務帯情報やロット情報、稼働情報が入ったデータが出力されます。
これをマクロで外部データとしてインポートするとhtmlインポートウィザードが立ち上がります。
インポートウィザードで上記情報の見出し毎にTable,Table1,Table2といった具合で表示されるので必要なTableテーブルを選んでは同じマクロを繰り返すといった作業になっており手間が掛かってしまいます。
これを1回のクリックで例えば二つのTableテーブルをインポートしたいと思うのですが、どういった方法あるでしょうか?

teru
作成: 2022/11/30 (水) 18:31:07
通報 ...
1
りんご 2022/12/01 (木) 17:16:40 c564b@0e907

 無意味です。html出力の是非、データベース間接アクセスの是非を見直すべきでは?

2

手作業で、htmlインポートウィザードで設定をして完了をクリックした後、「インポート操作の保存」にチェックをいれて、「名前を付けて保存」にお好みの名前を付けて、「インポートの保存」をクリックします。
これを、必要なテーブルの数だけ繰り返します。

マクロで「保存済みインポート/エクスポート操作の実行」アクションで上記で保存したインポート操作を選択すれば、実行することができます。

VBAなら、
DoCmd.RunSavedImportExport "インポート操作の名前"

3

あるいは、DoCmd.TransferText メソッドでも可能です。

DoCmd.TransferText メソッド (Access) | Microsoft Learn

6

DoCmd.TransferText メソッドを使うなら、下記のような感じです。

Private Sub コマンド1_Click()
    Dim htmlFileName As String
    htmlFileName = "C:\TEST\TEST.html"
    Dim InportTableNames As String
    InportTableNames = "Table,Table1,Table2" 'インポートしたいテーブル名をカンマ区切りで設定

    Dim tbl
    For Each tbl In Split(InportTableNames,",")
        DoCmd.TransferText acImportHTML, , tbl, htmlFileName, True, tbl
    Next
End Sub
4

hatenaさん、アドバイス有難う御座います。
現在、マクロ操作を繰り返す手順でやってますが、改めて考えてみます。
りんごさん、「html出力の是非、データベース間接アクセスの是非を見直すべきでは?」の指摘の意図が良く判りませんでした。詳しく教えて頂ければ幸いです。

5
りんご 2022/12/02 (金) 15:17:51 7ce21@0e907 >> 4

 以下、質問文の限られた情報から回答しています。実情と違う場合は、すみません。
 html画面で見れるようにhtml出力。html出力だから、htmlインポート。htmlインポートだから、見出し毎のテーブル。これでは、机の上の書類を見出し毎のダンボールに詰めただけに見えます。データベースの制約が実装されていなければ、無意味です。
 関係データベースの設計図をきちんと設計しましょう。設計図があるから、CRUD画面のパターンが決まり、データベースの制約に従ってCRUDを実行出来る様になります。データベースは手間がかかるものですし、手間を省くピントもずれているように見えてしまいます。