VBA開発

VBAでIE操作「ファイルダイアログからアップロードする」

ファイルダイアログからファイルをアップロードする

Excel VBAマクロでIEの自動制御にて、ローカルにある画像データ等をアップロードしたいケースがあります。
Webサイトではドラッグアンドドロップなどでファイルを選択するサイトも多いですが、
本記事ではファイルダイアログからファイルを選択する場合の方法を纏めています。

no-drag-and-drop-yes-file-dialog

ファイルダイアログ表示し、ファイル選択するサンプルコード

ヤフーオークションの出品データ作成をサンプルにコード作成しています。
ヤフオクで出品する際、画像をファイルダイアログで選択可能です。

'■InternetExplorerでファイルダイアログを使用し、ファイルをアップロードする
Sub sample_IE_FileDialog_Upload()
    Dim objIE As InternetExplorer

    '■IEを起動
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
 
    '■該当ページへ遷移
    objIE.navigate "https://auctions.yahoo.co.jp/sell/jp/show/submit?category=0"
    Call Call_IE_WaitTime
        
    '■クリップボードへアップロードするファイルを「フルパス」でコピー
    Call call_ClipBoardSave("C:\testdata\sample.png")
    
    '■ファイルダイアログを表示する
    objIE.Document.parentWindow.execScript "window.setTimeout(""document.getElementsByClassName('ImageUpload__hide')(0).click();"",10);"
    Application.Wait Now() + TimeValue("00:00:02")
    
    '■Ctrl + V でアップロードするファイルをペースト→Enterで確定する
    SendKeys "^v", True
    Application.Wait Now() + TimeValue("00:00:02")
    SendKeys "{ENTER}", True
    Application.Wait Now() + TimeValue("00:00:02")

End Sub

HTMLコードサンプル

'20/08/30時点のHTMLコード

<div id="ImageUpload" class="ImageUpload u-marginB10">
	<label class="ImageUpload__label js-dragdrop-area" for="selectFileMultiple">
	<span class="ImageUpload__hide">ドラッグ&ドロップまたはファイルを選択</span>
	<span class="ImageUpload__text"><span class="js-dragdrop-num">10</span>枚まで</span>
	</label>
</div>

注意点

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました