Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : その他)
外部サイトへの自動ログイン及び自動入力について
投稿日時: 21/09/22 12:04:56
投稿者: t.camellia

現在、ACCESSから佐川急便のe飛伝Web(https://e-hidenweb.sagawa-exp.co.jp/)というサイトへ自動ログイン及び氏名や住居等の自動入力が出来るように下記のVBAが組まれているのですが、此度佐川急便のシステムが変更(www.e-service.sagawa-exp.co.jp)になったことにより、組み替えないといけなくなっています。しかし、今までACCESSを管理していた職員がおらず、他の職員も詳しい者が今いない為、困っております。
最初の部分は作成出来たのですが、その続きがどう当てはめれば良いのか、調べてもよく分かりませんでした。どなたかご教示頂けないでしょうか。
Private Sub 佐川_Click()
      Dim Driver As New ChromeDriver
        Driver.AddArgument "disable-gpu"
        Driver.AddArgument "start-maximized"
      Driver.Start "Chrome"
      Driver.Get "https://www.e-service.sagawa-exp.co.jp/"
 
 
・現在のVBA
Private Sub 佐川_Click()
      URL = "https://e-hidenweb.sagawa-exp.co.jp/"
      Dim objIE As Object
      Set objIE = CreateObject("InternetExplorer.application")
       
objIE.Visible = True
objIE.Top = 0
objIE.Left = 0
objIE.Height = 800
objIE.Width = 1024
objIE.AddressBar = False
objIE.MenuBar = False
objIE.Toolbar = False
objIE.StatusBar = False
objIE.Resizable = False
 
objIE.Navigate URL
    
 
      '表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ
    Do While objIE.Busy = True
        DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
    Loop
    Do While objIE.ReadyState <> 4
        DoEvents '特に何もしないで.ReadyStateの状態が4に変わるまで待つ
    Loop
     
    objIE.Document.all.ctl00_cphMain_txtUserId.Value = "xxxxxx"
    objIE.Document.all.ctl00_cphMain_txtPassWord.Value = "xxxxxx"
    objIE.Document.all.ctl00_cphMain_imgLogin.Click
    
    
      '表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ
    Do While objIE.Busy = True
        DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
    Loop
    Do While objIE.ReadyState <> 4
        DoEvents '特に何もしないで.ReadyStateの状態が4に変わるまで待つ
    Loop
     
URL = "https://e-hidenweb.sagawa-exp.co.jp/PVCO0100.aspx"
      objIE.Navigate URL
       
      '表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ
    Do While objIE.Busy = True
        DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
    Loop
    Do While objIE.ReadyState <> 4
        DoEvents '特に何もしないで.ReadyStateの状態が4に変わるまで待つ
    Loop
       
 
       
     Dim YUBIN, NAME, TEL, JUU1, JUU2, TEMP
     
    YUBIN = Me!郵便番号
    NAME = Me![氏名(漢字)]
    TEL = Me!電話番号
    JUU1 = Me![住所1]
    JUU2 = Me![住所2]
 
 
    If Len(JUU2) > 0 Then
        TEMP = NAME
        NAME = JUU2
        JUU2 = TEMP
    End If
     
  
     
    objIE.Document.all.ctl00_cphMain_txtYubin.Value = YUBIN
    objIE.Document.all.ctl00_cphMain_ImgbtnYubin.Click
       
            '表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ
    Do While objIE.Busy = True
        DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
    Loop
    Do While objIE.ReadyState <> 4
        DoEvents '特に何もしないで.ReadyStateの状態が4に変わるまで待つ
    Loop
     
 
    NAME = Replace(NAME, "", "株式会社")
    NAME = Replace(NAME, "", "有限会社")
    NAME = Replace(NAME, "?", "高")
    NAME = Replace(NAME, "?", "崎")
 
If JUU2 <> "" Then
    JUU2 = Replace(JUU2, "", "株式会社")
    JUU2 = Replace(JUU2, "", "有限会社")
    JUU2 = Replace(JUU2, "?", "高")
    JUU2 = Replace(JUU2, "?", "崎")
End If
     
     
    objIE.Document.all.ctl00_cphMain_txtName1.Value = NAME
    If JUU2 <> "" Then objIE.Document.all.ctl00_cphMain_txtName2.Value = JUU2
    If TEL <> "" Then objIE.Document.all.ctl00_cphMain_txtTelNo.Value = TEL
     
     
    TEMP = objIE.Document.all.ctl00_cphMain_txtTyomei.Value
    JUU1 = TEMP & Right(JUU1, (Len(JUU1) - Len(TEMP) + 1 - InStr(1, JUU1, TEMP)))
    objIE.Document.all.ctl00_cphMain_txtTyomei.Value = JUU1
       
       
    'SendKeys "%{F4}", True
       
  
End Sub

回答
投稿日時: 21/09/22 13:35:16
投稿者: QooApp

Accessのマクロは専門外なので直接的なことはわかりかねますが、
1行目から書き直すほどの全面改修案件なんでしょうか。
 
・ウェブサイトの仕様がどのように変更になったのか
 掲載されているウェブページが変わった・クリックボタンの位置が変わったなど
 
・元々のソースコードの場合、どこまで正しく進められるのか
 ログインはできるが、伝票入力ページに進めないなど
 
・元々のソースコードを作成した人物は退職した社内の人物ですか?外注されている仕様ではないですか?
 外注の場合、その会社にご相談することをお勧めします。
 
・作成者に連絡が取れないのか
 退職者なら当然費用は必要でしょう
 
・ご自身がどのレベルで躓いているのか
 エラー箇所の対処方法が知りたければエラー内容とエラーが発生する箇所を提示してください
 ブレークポイントを設置するなど1行毎にプログラムの状態を確認することを推奨します
 
・当サイト(モーグ)の利用規約に記載がある通り、作成を依頼するような内容だとまずいです。
 

引用:
商用を目的とした発言
 商用活動及びそれに準ずる投稿はご遠慮ください。
 
コード制作依頼
 「●●●を実行するようなマクロを作りたいのですが」「●●●をする方法を教えてください」といった、コード制作依頼ともとれるような質問はおやめください。

回答
投稿日時: 21/09/24 17:46:46
投稿者: いちご

私も専門外なので直接の回答ではありません。
 
やろうとされていることを想像するに、
1_佐川急便のe飛伝Webからスマートクラブへの変更
2_ブラウザをIEからChromeへの変更
の2つがあるかと思います。
 
1についてはスマートクラブでの入力欄等のID(ctl00_cphMain_〜の部分)やURLを調べて書き換えればIEで動くかもしれません。動かない場合でもQooApp様のアドバイスにあるようにちゃんと説明すれば識者の方々から何かしらのアドバイスがいただけるはずです。
 
問題は2ですが、VBAでブラウザを操作する場合、MS一族のIEと一族外のChrome相手では書き方等が全く違ってくるようです。移行までに時間があるなら別ですが、期限が迫っているならお勧めしません。(ブラウザ操作部分は全面改修になるかな。)
ちなみにできたという最初の部分だけで、ログイン画面でてきますか?
 
がんばってください。

トピックに返信