質問: エクセルのデータをwebフォームに転記したい エクセルに数字の羅列があるのですが、直接webに手入力していくにはとても大変で困っております。 こちら(gooですが・・・)http://oshiete.goo.ne.jp/qa/5739589.htmlにぴったりのことが書いてあるのですが実際に使用してみると「activexコンポーネントはオブジェクトを作成できません」とか怒られます。解決方法を教えていただければ幸いです。 追加ですがwebフォームがエクセルのようにセル状になっていて、指定の場所に転記する場合はどうしたらよろしいのでしょうか?
回答: >こちらにぴったりのことが書いてあるのですが お示しの url の回答者です。 >実際に使用してみると「activexコンポーネントは >オブジェクトを作成できません」とか怒られます。 それは、sleipnir を インストール しておられないからですね。 「ぴったりのことが書いてある」ということは、「クロネコヤマトの荷物お問い合わせシステム」でも使っていらっしゃるのでしょうか? 私は、もう何年も前から、同サイト の「お問い合わせ伝票番号」を エクセル の ワークシート から自動で入力するという vba を書いて使っております。 実際に、「答えてねっと」という qaサイト に私が投稿した vba の コード を書き換えて利用している方もいらっしゃいます(http://www.tokyocafe.net/slog/?eid=48)。 同じ方が、内容を更新していらっしゃいますので、お使いの ブラウザ が internet explorer の場合は、こちら(http://www.tokyocafe.net/slog/?eid=226)をご覧ください。 なお、念のため、基本形の最も簡単な コード をお示しいたしますので、スキル に応じてお書き直しください。 ただし、internet explorer の バージョン は 7 以上でいけると存じます。 option explicit sub tneko_for_ie() dim lastrow as long 'a列最終行番号 dim strurl as string '「クロネコヤマトの荷物お問い合わせシステム」のurl dim objshell as object 'タブカウント用の shellオブジェクト dim swc as long '最後のタブのインデックス dim objie as object 'ieオブジェクト dim track_no as integer '問い合わせ伝票番号の行番号 lastrow = range("a" & rows.count).end(xlup).row strurl = "http://toi.kuronekoyamato.co.jp/cgi-bin/tneko?init" '予め、shellオブジェクト の ウィンドウ の数を調べておく。 set objshell = createobject("shell.application") swc = objshell.windows.count 'internet explorer の起動 '「クロネコヤマトの荷物お問い合わせシステム」の読み込み set objie = createobject("internetexplorer.application") with objie .navigate2 strurl while .busy or .readystate <> 4: doevents: wend end with '「お問い合わせ伝票番号」の照会 do with objie do track_no = track_no + 1 .document.all("number" & format(right(track_no - 1, 1) + 1, "00")).value = range("a" & track_no).value loop until right(track_no, 1) = 0 .document.all("sch").click while .busy or .readystate <> 4: doevents: wend if track_no > lastrow then exit do '次の10件問い合わせのために、新しいタブをアクティブにせずに開く(&h1000) .navigate2 strurl, &h1000 application.wait (now + timevalue("00:00:03")) end with '開いたタブウィンドウを objie で参照できるようにセット set objie = objshell.windows(clng(swc + int(track_no / 10))) loop 'オブジェクトの解放など objie.visible = true set objshell = nothing set objie = nothing end sub