何をしたいか
VBAの勉強がし終わったのでスクレイピングなどの勉強のためにVBAによるラクマの自動出品システムを作りたいと思っています。
問題点
ラクマへのログインの後に出品ページに移動して、その際に写真を追加したいのですが、写真をアップロードするところまではいったのですがそのあとの自分で写真を選択するところが全くできていないようです。
コードの紹介
以下のコードが現在書いているものになります。コメントアウトをしてどんな動作を期待しているのかを記載しています。
また、コードを書いていくうえで参考にさせていただいているurl:https://rabbitfoot.xyz/file-dialog-autmation/
Excel
1'---------------------APIの宣言----------------------------------------- 2Private Declare Function FindWindowEx Lib "user32.dll" _ 3 Alias "FindWindowExA" ( _ 4 ByVal hWndParent As Long, _ 5 ByVal hwndChildAfter As Long, _ 6 ByVal lpszClass As String, _ 7 ByVal lpszWindow As String) As Long 8 9Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" _ 10 (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 11 12Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _ 13 (ByVal hWnd As Long, ByVal Msg As Long, _ 14 ByVal wParam As Long, ByVal lParam As Any) As Long 15 16'-------------------処理部分---------------------------------------------- 17Dim photo As HTMLInputElemnt 18Set photo=objIE.document.getElementByName("image_tmp")(1) 'あくまで現在は2つ目の部分をクリックするようにしている 19photo.Click 'ここまでは動作する アップロードする前まで行く 20 21'以下を記入した際にはファイルを自分でアップロードをしたりするまで動かない 22 Dim hInputBox As Long 23 Dim hButton As Long 24 Dim hWindow As Long 25 26 hWindow = FindWindow("#32770", "アップロードするファイルの選択") 27 28 hInputBox = FindWindowEx(hWindow, 0&, "ComboBoxEx32", "") 29 hInputBox = FindWindowEx(hInputBox, 0&, "ComboBox", "") 30 hInputBox = FindWindowEx(hInputBox, 0&, "Edit", "") 31 hButton = FindWindowEx(hWindow, 0&, "Button", "開く(&O)") 32 33'ファイルパス入力' 34Call SendMessage(hInputBox, &HC, 0, "C:\test.jpg") 'きちんと絶対パスを通しておいてもクリックなどされない 35 36'ボタン押下' 37Call SendMessage(hButton, &H6, 1, 0&) 'ボタンをアクティブにする 38Call SendMessage(hButton, &HF5, 0, 0&) 'ボタンをクリックする 39
やったこと
何時間も悩んでmsgboxを使って途中の出力を見てみたのですが、やはりファイルをクリックしたりする処理自体ができておらず、開いたファイルを閉じた後に実行されてしまいます。
また、shellなども使ってみましたが見当違いだと思います。
何かアドバイスいただけると幸いです。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/25 23:44