質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1452閲覧

(VBA)エクセルデータをIEへ転記する方法について

js_boy

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/09/20 02:23

編集2020/09/20 04:40

【動作環境】
OS : windows10
ブラウザ : IE
IEバージョン : 11.1082.18362.0

【質問内容】
エクセルデータをIEで開いたページへ転記するVBAを作り、前までちゃんと転記できていたのに、急に転記されなくなりました。
ウィンドウが見つからない場合に動作する「入力するページが見つかりません」が表示されてしまいます。
サイトのURLも一致しているのですが、なぜできなくなってしまったのかがわかりません。
アドバイス頂けないでしょうか?

VBA

1Sub ie_test2() 2 3 Dim colSh As Object 4 Dim win As Object 5 Dim objIE As Object 6 Set colSh = CreateObject("Shell.Application") 7 8 '開いているすべてのウインドウに対して処理する 9 For Each win In colSh.Windows 10 11 '開いているファイルの種類がHTMLなら処理を実行する 12 If TypeName(win.document) = "HTMLDocument" Then 13 14 '開いているサイトのURLが下記だったら 15 If win.document.Url = "https://www.shopjapan.co.jp/shop/customer/entry" Then 16 17 '開いているファイルの「タイトル」にYahooが含まれているなら 18 'If InStr(win.document.Title, "ショップジャパン") > 0 Then 19 20 'このウインドウをobjIEとして指定する 21 Set objIE = win 22 23 objIE.document.getElementsByName("postCd")(0).Value = Range("D2").Value 24 objIE.document.getElementsByName("address1")(0).Value = Range("E2").Value 25 objIE.document.getElementsByName("address2")(0).Value = Range("F2").Value 26 objIE.document.getElementsByName("address3")(0).Value = Range("G2").Value 27 28 29 30 End If 31 32 End If 33 34 35 '処理を中断してFor~Nextを終了する 36 Exit For 37 38 Next 39 40 'ウインドウが見つからなければ 41 If objIE Is Nothing Then 42 43 'メッセージを表示して 44 MsgBox "入力するページが見つかりません" 45 46 '処理を終了する 47 Exit Sub 48 49 End If 50 51 Range("A2").Interior.Color = RGB(255, 0, 0) 52 53End Sub

以上になります。
宜しくお願い致します。

【補足】
ちゃんと転記できるときと、できないときがあります。
原因は不明です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

URL一致判定を以下の通り修正してみてください。

VBA

1If win.LocationURL = "https://www.shopjapan.co.jp/shop/customer/entry" Then 2'If win.document.Url = "https://www.shopjapan.co.jp/shop/customer/entry" Then

追記
Exit For の位置を変更してみました。

VBA

1'開いているすべてのウインドウに対して処理する 2For Each win In colSh.Windows 3 4 On Error Resume Next 'Window取得エラー対策 5 '開いているファイルの種類がHTMLなら処理を実行する 6 If TypeName(win.document) <> "HTMLDocument" Then 7 Else 8 '開いているサイトのURLが下記だったら 9 If win.LocationURL = "https://www.shopjapan.co.jp/shop/customer/entry" Then 10 'If win.document.Url = "https://www.shopjapan.co.jp/shop/customer/entry" Then 11 12 'このウインドウをobjIEとして指定する 13 Set objIE = win 14 15 objIE.document.getElementsByName("postCd")(0).Value = Range("D2").Value 16 objIE.document.getElementsByName("address1")(0).Value = Range("E2").Value 17 objIE.document.getElementsByName("address2")(0).Value = Range("F2").Value 18 objIE.document.getElementsByName("address3")(0).Value = Range("G2").Value 19 20 '処理を中断してFor~Nextを終了する 21 Exit For 22 End If 23 End If 24 On Error GoTo 0 25Next

投稿2020/09/20 03:06

編集2020/09/20 08:19
TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

js_boy

2020/09/20 04:36

ご回答ありがとうございます。 修正したのですが、ダメでした。
TanakaHiroaki

2020/09/20 07:48

Exit For を をEnd If の前(URL一致判定の中)に変更してみてください。
js_boy

2020/09/20 23:29

おぉ!できました!!! とても嬉しいです!!!! ありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問