私はいくつかの入力パラメータを与えることでExcelに内部のWebサイトからテーブルを抽出しようとしています。入力したウェブサイトのデータを更新するまではすべて動作します。実行時エラー438を取得する部分には(For r = 1 To elemCollection.Rows.Length - 1
)とマークされています。私はまた、Webクエリを使用してExcelのWebサイトからデータを読み込もうとしましたが、テーブルがExcelスプレッドシートに表示されませんでした。 「このページは、ブラウザがスクリプトをサポートしていないか、アクティブスクリプトが無効になっているため、正しく機能しない可能性があります。アプリケーションのWeb設定ファイルに登録されていません。Excel VBA - 実行時エラー438.オブジェクトがこのプロパティまたはメソッドをサポートしていません。
これは権限と関係があるかどうかわかりません。
以下VBAコード:以下
Option Explicit
Sub Macro1()
Dim IE As Object, obj As Object
Dim StartDate As Object
Dim EndDate As Object
Dim myState As String
Dim r As Integer, c As Integer, t As Integer
Dim elemCollection As Object, curHTMLRow As Object
Dim wb As Workbook
Dim ws As Worksheet
Dim objCollection As Object
Dim objElement As Object
Dim i As Long
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate ("http://internalwebsite_SSRSReport")
' we ensure that the web page downloads completely before we fill the form automatically
While IE.ReadyState <> 4: DoEvents: Wend
IE.Document.All.Item("ctl31_ctl03_txtValue").InnerText = Format("7/1/2016", "m/d/yyyy")
IE.Document.All.Item("ctl31_ctl05_txtValue").InnerText = Format("7/31/2016", "m/d/yyyy")
Wait 2
IE.Document.getElementsByName("ctl31_ctl04_divDropDown").Item.Click
Wait 2
' accessing the button
IE.Document.getElementsByName("ctl31_ctl04_ctl00").Item.Click
Wait 2
' again ensuring that the web page loads completely before we start scraping data
While IE.busy: DoEvents: Wend
Wait 2
'Clearing any unnecessary or old data in Sheet1
ThisWorkbook.Sheets("Sheet1").Activate
Range("A1:K500").ClearContents
Set elemCollection = IE.Document.getelementbyId("ctl31_ctl09_ReportArea")
'error here
For r = 1 To elemCollection.Rows.Length - 1
Set curHTMLRow = elemCollection.Rows(r)
For c = 0 To curHTMLRow.Cells.Length - 1
Cells(r + 1, c + 1) = curHTMLRow.Cells(c).InnerText
Next
Next
' cleaning up memory
IE.Quit
Set IE = Nothing
End Sub
Private Sub Wait(ByVal nSec As Long)
nSec = nSec + Timer
While nSec > Timer
DoEvents
Wend
End Sub
あなたはTDの各TRのウェブサイトからを読み取ろうとしていますか? –
HI Ryan、私は私のウェブサイトからコピーしたい巨大なデータセットを持っています。大規模なデータセットに対してこの作業を行うにはどうすればよいですか?事前に多くの感謝! TR_Elements TD_Elementsの各TDのための セットTD_Elements = TR.getElementsByTagName(「TD」) ColumnNumb = 1 たくさんのことを「 が起こっている場合は、メモリに値を保存するために、配列を使用することを検討してください」はそれぞれTRのためのそこ ActiveSheet.Cells(RowNumb、ColumnNumb)上を移動するデータ.Valueの= TD.InnerText ColumnNumb = ColumnNumb + 1 次 RowNumb = RowNumb + 1 次 – miracleclam