マンガでよめる痔のこと・薬のこと

エクセルに数字の羅列があるのですが、直接webに手入力していくにはとても大変で困っております。
こちら(gooですが・・・)http://oshiete.goo.ne.jp/qa/5739589.htmlにぴったりのことが書いてあるのですが実際に使用してみると「ActiveXコンポーネントはオブジェクトを作成できません」とか怒られます。解決方法を教えていただければ幸いです。

追加ですがwebフォームがエクセルのようにセル状になっていて、指定の場所に転記する場合はどうしたらよろしいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>こちらにぴったりのことが書いてあるのですが


 お示しの 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?in …

 '予め、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
    • good
    • 0
この回答へのお礼

本人降臨とは思いませんでした。
実はUWSCを使って無理やり自動化したらうまくいきました。
今後の参考にさせていただきます。
ありがとうございます。

お礼日時:2011/03/14 17:28

VBAは駄目でしょうか。


≪参考≫
三流君VBAでIE操作 InternetExplorer.Applicationを操作する
http://www.ken3.org/cgi-bin/group/vba_ie.asp
VBA(エクセル)で地図サイト(http://www.its-mo.com/index.html)にアクセスし...
http://detail.chiebukuro.yahoo.co.jp/qa/question …
    • good
    • 1
この回答へのお礼

ありがとうございます
参考にさせていただきます

お礼日時:2011/03/14 17:29

Excelで保存するときに、Webページで保存します。




出来たHTMLファイルをメモ帳で開いて
表のところを別のHTMLファイルにコピーします。

コピー場所は
<table
から
</table>
までです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
HTMLはまだ勉強不足ですが今後の参考にさせていただきます。

お礼日時:2011/03/14 17:30

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHTMLフォームに自動入力

会社で利用しているシステムにて、Excel上の1セル内にあるデータを、Webサイト上の1つのHTMLフォームにコピー&ペーストする、オペレーションを行っています。
1つのWebページ上には複数のHTMLフォームが存在しており、1つのフォームに対して、Excelから
コピー&ペーストをするという作業を行っており、非常に手間で困っています。

この作業を自動化したいと考えています。

イメージとしては、csvのデータを元データとして、csv内の1つのセルを対象のHTMLフォームと関連付けを行い、自動でHTMLフォームを埋めたいと考えています。

これを実現するのに、以下2つの方法があるのではないかと推測しました。

(1) Excel VBA からのIE操作
(2) Firefox のAdd-on Greasemonkey経由のjavascript 作成

■質問
私が調べられる範囲としては、上記の2つだけだったのですが、実施したい自動化作業にて
望ましい実現方法は、他にありますでしょうか。
もし、同様なシステムを開発されたことがある方がいるのなら、実現方法等を教えて頂ければ
と思います。

※私のプログラムレベルは、Perlやシェルスクリプトで、システム管理の自動化プログラムを書く程度
のレベルです。

会社で利用しているシステムにて、Excel上の1セル内にあるデータを、Webサイト上の1つのHTMLフォームにコピー&ペーストする、オペレーションを行っています。
1つのWebページ上には複数のHTMLフォームが存在しており、1つのフォームに対して、Excelから
コピー&ペーストをするという作業を行っており、非常に手間で困っています。

この作業を自動化したいと考えています。

イメージとしては、csvのデータを元データとして、csv内の1つのセルを対象のHTMLフォームと関連付けを行い、自動でHTMLフォームを埋めたい...続きを読む

Aベストアンサー

私は CPAN から WWW::Mechanize モジュールを入手して,同種の働きをするPerlスクリプトを組んだ経験があります。同キーワードでGoogle検索してみてください。どんなサンプルプログラムになるか閲覧できるでしょう。

Qマクロ EXCELセルの文字を自動でIE入力

マクロ EXCELセルの文字を自動でIE入力フォームへ入力する方法

色々、検索してみましたが分からなくなりましたので質問させて頂きます。
IEの入力フォームへEXCELで入力してあるテキスト文を自動的に貼り付ける
ことをしたくネットで調べた結果、以下のことはできました。

=== 実行できたマクロ =================================================

◆サイトソース◆
某サイトのソースを調べたら以下のように表示されましたので
<input type="text" name="n1" id="name" size="14" maxlength="11" istyle>・・・

マクロを以下のように組んで見ました。
ObjIE.Document.getElementById("name").Value = Worksheets("Sheet1").Range("A1")

そうしたら、問題なくIEの入力フォームへ自動記入できました。

=== 実行できなかったマクロ =================================================
◆サイトソース◆
某サイトのソースを調べたら以下のように表示されましたので
<input type="text" name="n1" size="14" maxlength="11" istyle>・・・

上記と同様マクロを組んで見ました。
ObjIE.Document.getElementById("n1").Value = Worksheets("Sheet1").Range("A1")

そうするとエラーが起きてしまいます。

○考えられるエラー
実行できた方のソースには・・・
「id="name"」と入っていたので「ObjIE.Document.getElementById("n1").Value 」で
問題ないかと思いますが、実行できなかった方のソースには・・・
「name="n1"」と、id=の部分がなかったのでここのマクロの書き方なのかなと思います。

ちなみに
ObjIE.Document.getElementById("n1").Value = Worksheets("Sheet1").Range("A1")
                  ↓
ObjIE.Document.getElementByName("n1").Value = Worksheets("Sheet1").Range("A1")で
実行してみましたがダメでした。

ご助言いただけると助かります。
宜しくお願いします。

マクロ EXCELセルの文字を自動でIE入力フォームへ入力する方法

色々、検索してみましたが分からなくなりましたので質問させて頂きます。
IEの入力フォームへEXCELで入力してあるテキスト文を自動的に貼り付ける
ことをしたくネットで調べた結果、以下のことはできました。

=== 実行できたマクロ =================================================

◆サイトソース◆
某サイトのソースを調べたら以下のように表示されましたので
<input type="text" name="n1" id="name" size="14" maxlength="11" istyle>・・...続きを読む

Aベストアンサー

ObjIE.Document.Forms(0).Item("n1").Value = Worksheets("Sheet1").Range("A1")

では駄目ですか?
ページ内に<form>~</form>が複数ある場合はForms()のカッコ内の数字を
変える必要があるとは思いますが。

QVBAでWebページにセルの値を入力

エクセルVBAを用いて指定したセルの値を
表示中のWebページにあるテキストエリア等(よくある入力フォーム)に入力する
というものを作りたいのですが、
IEとの連携がよくわかりません。

似たようなもので、googleページを自動で開き、
テキストエリアに検索語句を入力し、ボタンを押す
というもののソースがありました。
下記のページの3番です。
http://www.hatena.ne.jp/1137216805

これを応用できるかなと思ったのですが、
うまくいきません。

・表示中のページに入力したいので
ie.Navigate ("http://www.google.co.jp/")
この部分が必要ありません。

呼び出したページではなく、表示中のページを
ie.document.allの対象にするにはどうすればよいのでしょうか?

また、他にも良いやり方がありましたら、教えてください。


よろしくお願いします。

Aベストアンサー

こんばんは。

>そのまま貼り付けるとコンパイルエラーになってしまいました

たぶん、参照設定をしていないのだと思います。貼り付けてそのままできるわけではありません。

CreateObjectで、オブジェクトを作ってもよいけれども、IEの場合は、参照設定のほうがよいかと思います。

QWebサイトに自動でアクセスするツールの作り方

あるWebサイトに自動でアクセスするツールを作成しようとしております。
どなたか、参考サイトなどでも結構ですので、アドバイスをいただけないでしょうか。

要件
・CentOS上で動作できる
・バックグラウンドで動作する?(ブラウザを起動しっぱなしといったWeb循環ツールはNG)
・画面上のテキスト入力、ボタン押下、HTMLの解析など

具体的には・・・
あるサービスを利用しているのですが、いちいち管理画面からログイン、
ページ移動、文字入力、ボタン押下・・・といった管理上の単純作業を行ないます。
これを自動化したいと考えております。
ただ、自宅のマシンを起動しっぱなしにはしたくないので、
格安でサーバなどをレンタルし、そのうえで動作させたいと思っています。

どなたかアドバイスいただけないでしょうか。

どうぞよろしくお願いいたします。

Aベストアンサー

http://oshiete.goo.ne.jp/qa/6754946.html の私の過去の回答ANo.1

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QVBAでWEB上の入力項目に値をいれたいのですがフォームのタイプがhiddenの場合の入れ方がわかりません。

お世話になります。

VBAでWEB上の入力項目に値をいれたいのですがフォームのタイプがhiddenにはどのようにいれたらよいでしょうか?

WEB上では
(1)「選択」ボタンを押す。
(2)別の画面が開き、そこで、値を選択してOK
(3)元の画面に戻ると(2)の値が反映されている。

WEBのソース的にみると
(1)の状態
<TD bgcolor="#cccccc">
<INPUT type="image" name="s_otherto" alt="選択" src="/image/s_choice.gif" border="0">
</TD>

(2)別の画面で値を選択

(3)の状態
<TD bgcolor="#cccccc">
<INPUT type="image" name="s_otherto" alt="選択" src="/image/s_choice.gif" border="0">
<INPUT type="hidden" name="otherto" value="(2)で選択したID"><FONT size="2">(2)で選択した個人名</FONT>
</TD>

やりたいことは、今は、手で、(1)~(3)を実行しているのですが、
VBAでどのようにしたら、自動で
(1)の状態から(3)の(<INPUT type="hidden" name="otherto" value="(2)で選択したID"><FONT size="2">(2)で選択した個人名</FONT>)が追加された状態にするにはどのようにしたらよいのでしょうか?

typeがtextの場合は、
objIE.Document.getElementsByName("memo")(0).Value = "文章"
で入れれることがわかったのですが、
objIE.Document.getElementsByName("otherto")(0).Value するとエラーが出ます。。。

お手数ですがよろしくお願いします。

お世話になります。

VBAでWEB上の入力項目に値をいれたいのですがフォームのタイプがhiddenにはどのようにいれたらよいでしょうか?

WEB上では
(1)「選択」ボタンを押す。
(2)別の画面が開き、そこで、値を選択してOK
(3)元の画面に戻ると(2)の値が反映されている。

WEBのソース的にみると
(1)の状態
<TD bgcolor="#cccccc">
<INPUT type="image" name="s_otherto" alt="選択" src="/image/s_choice.gif" border="0">
</TD>

(2)別の画面で値を選択

(3)の状態
<TD bgcolor="#ccccc...続きを読む

Aベストアンサー

objIE.Document.getElementsByName("otherto")
↑これはオブジェクトです。
(1)の時まだありません。

(2)の処理を施し

(3)で初めて現れるオブジェクトです。


※Value参照で落ちているのではない
※objIE.Document.getElementsByName("otherto")(0)という配列が存在していないのに、0番目を参照しているから落ちている
という事を理解しましょう


オブジェクト参照は、こまめに変数にセットしてあげると、どこで落ちているかがわかりやすくなりますよ。



「otherto」などを作成して、TDに追加してあげないといけません。


Dim l_htmDoc  As Object
Set l_htmDoc = objIE.Document

Dim l_objImg  As Object
Dim l_tblTD   As Object

'イメージを取得
Set l_objImg = l_htmDoc.getElementsByName("s_otherto")(0)
'イメージの親のTDを取得
Set l_tblTD = l_objImg.parentNode

'TDにHIDDENを追加
Dim l_htmHdn  As Object
Set l_htmHdn = l_htmDoc.createElement("input")
With l_htmHdn
  .Type = "hidden"
  .Name = "otherto"
  .Value = "(2)で選択したID"
End With
Call l_tblTD.appendChild(l_htmHdn)

'TDにFONTを追加
Dim l_htmFont  As Object
Set l_htmFont = l_htmDoc.createElement("font")
With l_htmFont
  .Size = "2"
  .innerText = "(2)で選択した個人名"
End With
Call l_tblTD.appendChild(l_htmFont)

objIE.Document.getElementsByName("otherto")
↑これはオブジェクトです。
(1)の時まだありません。

(2)の処理を施し

(3)で初めて現れるオブジェクトです。


※Value参照で落ちているのではない
※objIE.Document.getElementsByName("otherto")(0)という配列が存在していないのに、0番目を参照しているから落ちている
という事を理解しましょう


オブジェクト参照は、こまめに変数にセットしてあげると、どこで落ちているかがわかりやすくなりますよ。



「otherto」などを作成して、TDに追加してあげな...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QVBAからIEを操作する時のウィンドウの選択の仕方がわかりません

VBAで、webページを操作するマクロを組んでいます。
具体的な手順としては、セルの商品番号をweb上の検索ボックスに入力して、別ウィンドウで開いた情報を「すべて選択」「コピー」してexcellの別シートに「貼り付け」までを行うものなのですが、
別ウィンドウで開いたページに対して、Sendkeysを行うにはどうやったらいいのでしょうか。
仮に、入力ページをA、結果ページをBとしたとき、Aに対しての入力とBページの表示までは出来ているのですが、Bページに対しての操作が出来ません。

ちなみに、事情があってwebクエリはあえて使っていません。
どなたか、いい解決方法・プロシージャをご存知でしたらよろしくお願いします。

Aベストアンサー

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kotaeru.php3?q=" & Range("A1").Value

みたいなコードで検索結果ページを開くことができると思います。同様に、商品番号
を渡すパラメータがあるはずですから、探して見て下さい。CGI にパラメータを渡す
方法が Get でも Post の場合でも検索フォームの HTML ソースを見れば分かります。

取り合えず、一度検索フォームの HTML ソースを見てみましょう。

これが可能なら、コードで IE オブジェクトを作り、直接検索結果のページを開くこ
とができますので、IE のウインドウハンドルやウインドウタイトルは簡単に取得
できます。

簡単な例です。A1 セルの値を Google で検索し、結果を A5 セルに貼り付けます。


Option Explicit

Private Declare Function SetForegroundWindow Lib "user32.dll" ( _
  ByVal hWnd As Long _
) As Long
  
Sub Sample()

  Dim IE   As Object
  Dim strURL As String
  Dim lngRet As Long
  
  Const READYSTATE_COMPLETE = &H4
  
  strURL = "http://www.google.com/search?hl=ja&lr=lang_ja&ie=Shift_JIS&q="
  strURL = strURL & Range("A1").Value
   
  Set IE = CreateObject("InternetExplorer.application")
  IE.Visible = True
  IE.navigate strURL
  Do
    DoEvents
  Loop Until Not IE.Busy And IE.readyState = READYSTATE_COMPLETE
  
  ' IE のウインドウをアクティブにする
  lngRet = SetForegroundWindow(IE.hWnd)
  If lngRet <> 0 Then
    ' アクティブにできたらキー送信して結果をコピー
    SendKeys "^a", True
    SendKeys "^c", True
    ' 貼り付け
    Range("A5").Select
    ActiveSheet.Paste
  End If
  Set IE = Nothing

End Sub

どうしても検索フォームを経由し、新しい IE を開く必要がある場合は、
参考 URL 先の記事が参考になると思います。

参考 URL: http://www.ken3.org/cgi-bin/group/vba_ie.asp

ちなみに、SendKeys を使わない方法としては、IE.Document.body.innerHTML
で HTML ソースは取得し、クリップボードに転送してからペースト、、

というのでも良いかもしれません。

では。

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kot...続きを読む

Q(UWSC)エクセルのセルの値を読み込むには?

UWSCで、エクセルのセルの値を読みこむ方法について
悩んでおります。

Excel = GETACTIVEOLEOBJ("Excel.Application");
val1 = Excel.ActiveSheet.range("A1").value;
を使えば、開いているエクセルのA1セルにある値を
「val1」に読み込むことができました。

今、A1~A100にある100個のリストを順々に読み込むことを
考えています。おそらくfor文を使って、以下のようにするのかな?
と思っております。
for i=1 to 100
val=○○
next
A1~A100の値を順々に読み込むにはどのようにすればいいのでしょうか?

Aベストアンサー

Pro版だったらループなんてしなくても、XLGETDATA関数を使えば一発で配列変数に取り込めます。(UWSCのヘルプにサンプルコードがあります)

Pro版ではない通常UWSCだと、以下の処理で一個ずつ値を引っ張ってくるしかないでしょう。

1)F2キーを押す
2)Shift+Homeを押す
3)Ctrl+Cを押す
4)クリップボードから値を変数に読み込む(GETSTR関数を使用)
5)Enterを押す

という一連の処理を100回繰り返すわけです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング