- ベストアンサー
サイトの記事をエクセルに落とす方法とエラーの修正方法
- サイトの記事をエクセルに落とす方法について、プログラムの組み方と修正方法を教えてください。
- エラーが発生し、原因が分からない状態です。どのように修正すればいいのか教えてください。
- また、もっと別の方法で記事をエクセルに落とすことができるなら、教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- Excel VBAでブラウザのリンクをクリックするには
Excelのバージョンは2003です。 VBAで出発地から到着地からNavitimeのサイトに接続して距離を取得するようなプログラムを作成していますが… 下記のように記述しています。 Private Sub Workbook_Open() Dim ie As InternetExplorer Dim addr0 As String Dim addr1 As String Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True addr0 = "住所1" addr1 = "住所2" ie.navigate "http://www.navitime.co.jp/?keyword0=" & urlEncode(addr0) & _ "&keyword1=" & urlEncode(addr1) & _ "&ctl=0604" Do While ie.Busy = True Do While ie.readyState <> 4 DoEvents Loop Loop End Sub Public Function urlEncode(str As String) As String Set sc = CreateObject("ScriptControl") sc.Language = "Jscript" Set js = sc.CodeObject urlEncode = js.encodeURIComponent(str) End Function リンクをクリックするにはどのようにすればいいのでしょうか。 アドバイス宜しくお願いします。
- 締切済み
- Visual Basic
- VBA:最下層のファイルを取得
最下層にあるファイルのファイル名を取得したく下記の様なプログラミングを組んでみたところ、 「ファイル名または番号が不正です」というエラーが表示されてしまいます。比較演算子などをいじって 試行錯誤してみましたが、どうしてもできません。どのように修正すればよいのでしょうか。ご回答よろしくお願いいたします。 http://syarecowa.moo.jpというサイトのmenu001.htmの下にある"1/3ケタの数字.htm"のファイル名を全て取得したいと考えています。 現在組めているコードは下記の通りです Dim cnt As Long ---------------- Sub Macro5(Path As String) Dim buf As String, f As Object buf = Dir(Path & "/#/###.htm") ★★ここでエラーが生じていしまいます★★ Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Loop With CreateObject("Scripting.FileSystemObject") For Each f In .GetFolder(Path).SubFolders Call Macro5(f.Path) Next f End With End Sub -------------------------- Sub Macro6() Dim URL As String 'ファイルパス Dim IE As Object 'オブジェクト Dim Myhtml As Variant 'HTMLタグデータ 'インターネットに接続 Set IE = CreateObject("InternetExplorer.Application") With IE .Navigate "http://syarecowa.moo.jp/menu001.htm" .Visible = Flase Do While .Busy = True DoEvents Loop 'Macro5呼び出し cnt = 0 Call Macro5("http://syarecowa.moo.jp/menu001.htm") End With End Sub
- ベストアンサー
- Visual Basic
- VBA IEを操作。ファイルダウンロード
IEを操作して、ファイルをダウンロードしようと思います。 色んなサイトからとってきて、使わせてもらっています。 '---------------------------------IEを開くときに使う Sub IE_OPEN(webUrl As String) Dim objShell Dim writesheet As Worksheet Dim n As Long Dim ID As String, Password As String Set objShell = CreateObject("Shell.Application") Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.Navigate2 webUrl Do While ie.Busy Or ie.readyState <> 4 DoEvents Loop Dim objINPUT Set objINPUT = ie.document.getElementsByTagName("INPUT") 'ループで頭からテキストが 次へ を探す For n = 0 To objINPUT.Length - 1 '※ type="submitボタンなので、.InnerTextじゃなくて、.Valueです ※※注意 If InStr(objINPUT(n).Value, "ログイン") > 0 Then '文字列の中から見つけたら Worksheets("Sheet1").Activate Do While ie.Busy Loop objINPUT(n).Click '見つけたINPUTタグのオブジェクトをクリック Do While ie.Busy Loop Exit For End If Next Set objINPUT = Nothing 'オブジェクト変数解放 End Sub '------------------------------IEを開く(この段階では既に開いてあります。) Private Sub CommandButton1_Click() Do While ie.Busy Or ie.readyState <> 4 DoEvents Loop ie.document.all.ah_ehName.Value = Me.ComboBox1.List(Me.ComboBox1.ListIndex) 'ID Do While ie.Busy Loop Dim objINPUT Dim n As Long Set objINPUT = ie.document.getElementsByTagName("INPUT") For n = 0 To objINPUT.Length - 1 If InStr(objINPUT(n).Value, "ダウンロード") > 0 Then objINPUT(n).Click Do While ie.Busy Loop Exit For End If Next Do While ie.Busy = True DoEvents Loop SendKeys "%S", True'保存 Do While ie.Busy = True DoEvents '何もしないループ(笑) Loop SendKeys "%O",True'ファイルを開く? Do While ie.Busy = True DoEvents Loop 'ie.Quit End Sub ’==================- 面倒なので、IEはPublic変数として モジュールに書いています。 (色んなモジュールを経由する必要があるため、このような手段を取りました) SendKeysをIEに送るというのが出来ずに困っています。 ダウンロードというボタンを押してのダウンロードなので、 ダウンロード用のURL等は分かりません。 Excel2003を使っています。 どうにかSendkeysで出来ないでしょうか? もしくは、もう少し分かりやすい方法は無いでしょうか。 (ファイルを保存しますか?のダイアログの「保存」をクリックして 所定の場所におき、開きたい。 そのまま開くのでもいいけれど、動作が不安定になるのは困る) 以上、よろしくお願い致します。
- 締切済み
- Visual Basic
- VB.NETでIEに表示中のHTMLを得る方法について
インターネットのhtmlデータを解析したくて下記のプログラムでインターネットエクスプローラーから 表示されている内容のhtmlを取得しているのですが、 ジャバスクリプトを実行後に表示されるページの場合 マウスの右クリックで表示するソースと、ブラウザの「表示(V)」、「ソース(C)」で 表示する方法とで内容が違うのですが、マウスの右クリックの時に表示される ソースを取得したいのですが、どんなプログラムにすれば良いでしょうか? Dim IE As Object Dim Url1 As String Dim HtmlData As String Url1 = "http://www.yahoo.co.jp" IE = CreateObject("InternetExplorer.Application") With IE .Navigate(Url1) Do While .Busy = True Loop Do While .document.ReadyState <> "complete" Loop .visible = True HtmlData = .document.DocumentElement.outerHTML End With
- ベストアンサー
- Visual Basic
- ExcelVBAについて質問です。
ExcelVBAについて質問です。 Webのデータを取得したいのですがたまにエラーがでます。 そこで1回エラーが出たら再度同じ処理をして、2回目もエラーが出たら エラーメッセージを表示させたいです。 しかし1回目エラーで2回目取得できたらうまくいくのですが 2回連続でエラーになったら途中で止まってしまいます。 2回連続でエラーになった時の処理方法を教えてください。 Public Sub クリック_Click() On Error GoTo Err1 Dim エラー As Integer For エラー = 0 To 1 'HTML読み込み Dim fff As String 'ファイルパス Dim objIE As Object 'オブジェクト Dim Myhtml As Variant 'HTMLタグデータ '制御htmlファイル phn = ThisWorkbook.Path fff = "URL" 'Webページ表示 Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate fff '画面表示待ち Do While objIE.Busy = True DoEvents Loop Myhtml = objIE.Document.Body.innerHTML objIE.Quit Sheets("シート").Range("A1").Value = Myhtml Exit Sub Err1: Next エラー MsgBox "エラー発生" End Sub
- ベストアンサー
- その他(プログラミング・開発)
- エクセル マクロ WEBエクセルデータ 取込方法
いつも大変御世話になっております。 【D:\test】フォルダ内に、1つのエクセルファイル【sample.xls】(Excel2003)があります。 そのエクセルファイルのマクロボタンを一つ作成しておきます。そのボタンを押すと以下の処理が 可能なコードを作成中です。 (1)WEBサイト【http://www.sample.co.jp/book1.xls】を開く。 ※ここでのURLは例 (2)(1)で開いたエクセルファイル"A1:B10"の箇所をコピー。 (3)sample.xlsのシート【web_data】のセルA1に、(2)でコピーしたものを貼り付け。 (4)(1)で開いたエクセルファイルを閉じる。 コード>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Option Explicit Sub test() Dim IE As Object, buf As String Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate "http://www.sample.co.jp/book1.xls" Do While IE.busy = True DoEvents Loop Do While IE.document.readystate <> "complete" DoEvents Loop buf = IE.document.body.innertext IE.Quit MsgBox buf Set IE = Nothing End Sub コード>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 途中まで作成しましたが、どうもWEB上のセル内をコピー出来ません。 もしご存知の方がいらっしゃるようでしたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。
- ベストアンサー
- その他([技術者向] コンピューター)
- エクセル excelVBA で 自動ログイン
エクセルvba を使ったシステムトレードをしようと思い 初心者ながらVBAをいじっています. まずはじめにsbi証券に自動ログインをしようとする vbaを作ろうとおもい,インターネットを駆使して コードを書いてみましたが documentメソッドは失敗しましたというエラーがでてしまいます. 自分なりに色々と見返したりしたのですが どこが悪いのかいまいちわかりません. もしよろしければどこが悪いのか指摘していただけないでしょうか? よろしくお願いします. 以下ソース ******************************** Option Explicit Sub test() Dim ie As Object Dim strUserName, strPassword As String strUserName = Range("C5").Value strPassword = Range("C7").Value Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.Navigate "https://k.sbisec.co.jp/bsite/visitor/top.do" IE_Complete ie ' Do While ie.Busy = True '何もしないループ(笑) ' DoEvents ' Loop ie.Document.All.UserName.Value = strUserName 'ユーザー名 ie.Document.All.Password.Value = strPassword 'パスワード ie.Document.All.login.Click 'クリック End Sub Public Sub IE_Complete(ByVal ie As Object) 'IE読み込みが完了するまで待つ Do While ie.Busy = True DoEvents Loop Do While ie.Document.ReadyState <> "complete" DoEvents Loop End Sub
- 締切済み
- Visual Basic
- エクセルマクロでIE操作
IEをエクセルマクロで操作する際に現在は下記のようなコードで立ち上げでいます。 この時、1回目の処理が終わり、もう一度同じボタンを押してコードを実行する際 あたにIEが立ち上がってしまいます。 同じURLのIEがすでに立ち上がっている際には そのIEを利用して処理を行うにはどのようにしたらよいでしょうか? ption Explicit 'Sleepを使用する場合のお約束 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Declare Function CloseWindow Lib "User32" (ByVal hwnd&) As Long Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Dim objIE As Object '変数を定義 Dim Obj As Object '変数を定義 Sub 間接() 'IEテストする。 Dim txtSelect As HTMLSelectElement Dim objTAG As Object 'IEの起動 Dim objIE As Object '変数を定義します。 Set objIE = New InternetExplorerMedium objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "https://www.google.co.jp/?gws_rd=ssl" Sleep (1000) Do While objIE.ReadyState <> 4 'サイトが開かれるまで待つ(お約束) Do While objIE.Busy = True 'サイトが開かれるまで待つ(お約束) Loop Loop
- 締切済み
- Visual Basic
- VBAでのIE操作で、ENTERキーが押せません
VBAでIEの操作を勉強中です。 HTMLを整形するホームページ(https://lab.syncer.jp/Tool/HTML-PrettyPrint/)です。 左側のエリアにHTMLを入力すると右側に整形されたHTMLが表示されるものです。 手動ではなんら問題ありません。 作成したVBAから操作すると、左側のエリアにHTMLは入力されますが、右側に表示されません。 入力後にENTERキーが押されれば表示されるというところまでは解っています。 解っているんですが、VBAから押せません。 どなたかご教示願います。 以下作成したVBAです。 ----------------------------------------------------------------------- Sub testIE() Dim IE As Object Dim target As String Dim wText As String target = "https://lab.syncer.jp/Tool/HTML-PrettyPrint/" wText = "<html><head><title>test</title></head><body><h1>test</h1></body></html>" Set IE = CreateObject("InternetExplorer.Application") With IE .Visible = True .Navigate target Do While .Busy = True Or .ReadyState <> 4 DoEvents Loop Do While .Document.ReadyState <> "complete" DoEvents Loop .Document.getElementsByTagName("textarea")(0).Value = wText SendKeys "{ENTER}" MsgBox .Document.getElementsByTagName("textarea")(1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- エクセル内のURLからHPのタイトルを抽出したい
エクセル内のA列にURLがあるのですが、B列にそのURLのHPのタイトルだけを抽出する方法はありますか? 色々調べて ------------------------------------------ Public Sub ReadTitle() Dim IE Dim url As Range Dim i As Integer Set url = Range("A2") Set IE = CreateObject("InternetExplorer.Application") i = 0 Do While (url.Offset(i, 0).Value <> "") IE.Navigate (url.Offset(i, 0).Value) While IE.busy: Wend While IE.Document.readyState <> "complete": Wend url.Offset(i, 1).Value = IE.Document.Title url.Offset(i, 3).Value = url.Offset(i, 2).Value '前回日付 url.Offset(i, 2).Value = IE.Document.LastModified i = i + 1 Loop End Sub このようなマクロで抽出は出来たのですが、URLは1万件以上あり、PCのスペックの低さのせいか、何時間もかかってしまいます。 もっと早く、タイトルだけを抽出する方法は無いでしょうか? よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
end-u様 前回に引き続き、本当にありがとうございます。今思っている感謝は、どう言っても言葉にしつくせません。見ず知らずの私にこんなによくして下さる方がいらっしゃるとは、夢にも思いませんでした。 end-u様のマクロを実行してみて、自分の思い描いた以上の処理がババっとできた画面を見て、涙で画面がにじみました。このデータが取れなかった場合は、大幅に研究テーマを修正するしかないという瀬戸際だったものでして… >Excelの基本機能に[外部データの取り込み]、Webクエリというものがあります。 >これを使うとWebページの取り込みができますから、操作をマクロ記録して参考にしてみてください。 ありがとうございます。Webクエリの存在自体は知りマクロなども参考にしてみたのですが、どう応用させればいいのか分からずに結局放置していました…取得したURLをWebクエリで処理すればよかったんですね。 また、ReDimの使い方も大変勉強になりました。入門編等では再定義できることのありがたみが理解できなかったので。 今回end-u様に組んでいただいたコードを勉強して、しっかりと次に活かせるように致します。また、end-u様のBLOGの方も大変参考になるものが多いので、勉強させて頂きます。 なにより、今回のend-u様のご厚意を無駄にせぬよう、精一杯研究に活かして参ります。 重ね重ね、厚く御礼申し上げます。ありがとうございました。