[[20220416095730]] 『phpMyAdminのデータを自動取得するマクロで困って』(むっしー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『phpMyAdminのデータを自動取得するマクロで困っています。』(むっしー)

サーバー上のphpMyAdminにアクセスし、指定したSQLのデータをcsv形式でダウンロードするマクロを組んでいます。


  Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer
    objIE.Visible = True
    objIE.AddressBar = False

    Dim auth As String
    Dim sId As String, sPass As String, sIdPass As String
    Dim sURL As String

    sId = "hoge"
    sPass = "hogehoge"
    sIdPass = Call_EncodeBase64(sId & ":" & sPass)

    '■認証情報を作成する
    auth = "Authorization: Basic " & sIdPass & vbCrLf

    '■■ hoges テーブル
    sURL = "https://phpmyadminXXXX.jp/tbl_export.php?db=hoge_01&table=hoges&printview=1&sql_query=SELECT+id%2C+FROM+hoges+WHERE+1%0A%0A&single_table=true"
    '■Basic認証画面を自動ログインする
    objIE.navigate sURL, headers:=auth

    'IEを待機
    Do While objIE.Busy = True Or objIE.readyState < 3
        DoEvents
    Loop
    Application.Wait ([Now() + (2 / (60 * 60 * 24))])

    '■Basic認証後、画面が自動遷移するのでそのアドレスをもとにgetパラメータ等を取得
    ' ※一部のGETパラメーターがPOSTに使用されるため

    '定義
    Dim postData
    Dim Stream

    Dim query As String
    query = Mid(objIE.LocationURL, InStrRev(objIE.LocationURL, "?") + 1) & "&export_type=table&export_method=quick...<POSTする要素を羅列>...knjenc=&xkana="

    'Stremの生成
    Set Stream = CreateObject("ADODB.Stream")
    Stream.Open
    Stream.Charset = "Shift_JIS"  '文字コード
    Stream.WriteText (query) 'POST値をGET形式で指定する
    Stream.Position = 0
    Stream.Type = 1
    postData = Stream.Read
    Stream.Close

    ' ■Cookie情報を取得、セット
    Dim cookie
    cookie = objIE.document.cookie
    auth = "Authorization: Basic " & sIdPass & vbCrLf & _
        "Cookie: " & cookie

    objIE.navigate "https://phpmyadminXXXX.jp/export.php", , , postData, auth


最初はnavigateではなく、実行ボタンの.Clickで動かそうとしていたのですが、(認証情報が送信されていない関係で?)上手くいかず、実行先のアドレスに直接遷移する方法を試していました。

このようにしたところ、phpMyAdminからは「undefined index」というエラーが返ってきており、どうやらPostDataが上手く設定されていない様子です。
(queryの中にしっかり書いてあるパラメーターも「undefined」となってしまうので…)

phpMyAdminの仕様なのかもしれませんが、調べても全然解決できず、困っています。

質問は、
・このマクロの問題点はどこか(なぜPostDataが送信されないのか)
・ほかの方法で同様の結果(csvダウンロード)を得る方法はないか
の2点です。

よろしくお願いいたします。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


>>ほかの方法で同様の結果(csvダウンロード)を得る方法はないか
phpmyadminのエクスポート
[手動^^;]
を使えば簡単ですよDLさえしてしまえばあとは
VBAで煮るなり焼くなり。。。おもいどぉりに。。。A^^;
でわ
m(__)m
(隠居Z) 2022/04/16(土) 12:21

ありがとうございます…。

まあ無理に自動化しなくていいか、と思いつつ、chromeでページを開いてユーザーが自分でクリックする形の手動バージョンも作りました。めっちゃすっきりさっくり動きます笑。

たしかにこれで十分かもしれない、とは思うのですが、やはり自動でやりたい気持ちもあり…。ここまで来ると意地ですね笑。

→ 間をとって SendKeys で作ってみました。かなりの力技ですが、それなりにきれいに動きます笑。
(むっしー) 2022/04/16(土) 15:09


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.