• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ オブジェクト変数Withブロック変数エラ-)

マクロ オブジェクト変数Withブロック変数エラー

このQ&Aのポイント
  • 以前、インターネット上の窓にエクセルの数値を自動で入れたいという質問がありました。
  • VBAを使ってマクロを作成し、実際に動作させることができました。
  • しかし、クロネコの宅急便サイトで同じ方法を試みると、「オブジェクト変数またはWithブロック変数が設定されてません。」というエラーが出てしまいます。何が原因なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

既にki-aaaさんが回答されていますがソースを見なければいけません。 入力欄のソースは <input name="number01" size="20" maxlength="14"> というようになっています。 ID属性は設定されていないのでgetElementByIdは使えません。 Name属性を手掛かりに (例1) .document.getelementsbytagname("input").number03.value = Range("A1").value (例2) .all.tags("input").number01.value = Range("A1").value (例3) .document.all("number01").value = Range("A1").value (例4) .document.all.number01.value = Range("A1").value 等と書くことができます。

kon3914
質問者

お礼

ありがとうございます! 下記にて希望の動作が出来ました! Dim myWindow As Object Dim myUrl As String myUrl = "http://toi.kuronekoyamato.co.jp/cgi-bin/tneko?init" For Each myWindow In CreateObject("Shell.Application").Windows With myWindow If .LocationURL = myUrl Then .document.all.number01.Value = Range("A1").Value .document.all.number02.Value = Range("A2").Value .document.all.number03.Value = Range("A3").Value .document.all.number04.Value = Range("A4").Value .document.all.number05.Value = Range("A5").Value Exit For End If End With Next myWindow 今回はそのHPのソースを見て判断すると言う事を学習させてもらいました。 色々な書き方があるようですが、何がどう違うのか勉強不足でわかりませんが、色々といじりながらまた勉強させて頂きます。 普通は投げ出すところを救っていただき本当にありがとうございます!

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

こんにちわ 似ているようなサイトだからといって、まったく同じではありません。 そのときは、ツールバーから 表示 ソースを押してコードをみます。 '<input name="text1" id="text1" size="50" onkeyup="showLength(value,id);" type="text"> '<input name="number01" size="20" maxlength="14"> text1をnumber01に変えます。

kon3914
質問者

お礼

大変ありがとうございます。 ページのソースを見て input name を探すのですね! そしてそれに準じて書き換えていくのですね。 目からウロコです。 ありがとうございます!

すると、全ての回答が全文表示されます。
回答No.2

#1です。 With myWindow '←For Each の次の行に、これが抜けていませんか?

kon3914
質問者

お礼

ありがとうございます!

すると、全ての回答が全文表示されます。
回答No.1

こんにちは。 >同じ仕組みだと思うのですが何がいけないんでしょうか? はっきり分かりませんが、ただ、私もしますが、手抜きのコードだと思います。 それはどこかというと、 >CreateObject("Shell.Application").Windows この部分です。環境の差にもよるのだと思いますが、ここで、オブジェクトが生成されないのだと思います。そういうエラーが出たら、以下のようにしてみたらいかがですか? 例: Dim myShell As Object Dim myWindow As Object Dim myUrl As String myUrl = "http://toi.kuronekoyamato.co.jp/cgi-bin/tneko?init" Set myShell = CreateObject("Shell.Application") For Each myWindow In myShell.Windows()

kon3914
質問者

お礼

ありがとうございます!こうで宜しいでしょうか? 今度は「コンパイルエラー:参照が不正または不完全です。」と出ます。 Dim myWindow As Object Dim myUrl As String myUrl = "http://toi.kuronekoyamato.co.jp/cgi-bin/tneko?init" Set myShell = CreateObject("Shell.Application") For Each myWindow In myShell.Windows() If .LocationURL = myUrl Then .document.getElementById("text1").Value = Range("A1").Value .document.getElementById("text2").Value = Range("A2").Value .document.getElementById("text3").Value = Range("A3").Value .document.getElementById("text4").Value = Range("A4").Value .document.getElementById("text5").Value = Range("A5").Value Exit For End If End With Next myWindow

すると、全ての回答が全文表示されます。

関連するQ&A