• 締切済み
  • すぐに回答を!

ExcelのVBAでWEBページを開くのが遅い

よろしくお願いいたします。 現在社内システムのデータをExcelに落とすVBAを作っています。 単純に、 sub test () URL = "http://..." Dim xls As Workbook Set xls = Application.Workbooks.Open(URL) end sub のようなものを作成して実行したのですが、 Set xls = Application.Workbooks.Open(URL) の所で50~60秒ほど時間がかかってしまいます。 もう少し早くする方法はないのでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数331
  • ありがとう数2

みんなの回答

  • 回答No.2
noname#206655
noname#206655

すみません、会社のリーバCALCでは検証できませんでしたが_ xls は予約語の可能性がありますので、xlsaa とか変えるぐらいしか分かりません。 それと、プログラムのペアレントが book でしょうか。この場合、application かも。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 >xls は予約語の可能性がありますので、xlsaa とか変えるぐらいしか分かりません。 変えてみたのですが、現象が変わりませんでした。。。 >プログラムのペアレントが book でしょうか。この場合、application かも すみません。プログラムのペアレントとはなんのことなのでしょうか? せっかくご回答頂いたのに理解できず、また質問になってしまい申し訳ございません。 よろしくお願いします。

関連するQ&A

  • エクセルvba

    エクセルvbaなのですが Sub test() Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) 'コード・・・ Set xlApp = Nothing Set xlBook = Nothing End Sub これだと Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) の部分で、エラーになります。 実行時エラー1004です。 自身ファイルをオブジェクトに格納して操作したいのですがどうすればいいでしょうか?

  • VBAでファイルを閉じる時に、他のエクセルファイルを閉じるには?

    VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close End Sub で記述したら、エラーとなります。 どのようにすればいいのでしょうか? よろしくお願いします。

  • SETを使ったほうがよい?

    accwessからエクセルファイルを開きたいのですが、 App.Workbooks.Open と、 Set xlBook = xlApp.Workbooks.Open とどちらを使った方がいいのでしょうか? ////////////////////////////////////////////////////////// Private Sub ファイル1_Click() Dim App As Object Dim MyFileName As String MyFileName = "D:\My Documents\test.xls" Set App = CreateObject("Excel.Application") App.Workbooks.Open FileName:=MyFileName App.Visible = True End Sub でも Private Sub ファイル2_Click() Dim xlApp As Object Dim xlBook As Object Dim FileName As String Const FolderName = "D:\My Documents\test.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(FolderName & FileName) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ////////////////////////////////////////////////////////// でも開けました。 多分、SETを使うかどうかの違いだと思うのですが VBAでコードを作る際、どちらのコードを使った方がいいか教えてください。

  • 回答No.1
noname#206655
noname#206655

一度エクセルに渡して、エクセルがWINDOWSに渡してると思います。このとき標準ブラウザが起動しますが、一回目は仕方ないと思います。2回目(キャッシュ)が利いた段階はどうでしょう? 最初だけであれば、仕方ないと思いますが。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 後々の加工がやりやすいように、WEBページをExcelで開いているのですが、見えないところで標準ブラウザが起動しているのですか? 2回目以降も遅いのですが、Excelで開いている場合もキャッシュが聞くのでしょうか? 質問ばかりで申し訳ございません。 よろしくお願いします。

関連するQ&A

  • VBA 実行時エラーで、"プロパティまたはメソッド

    ・Sheet1(コード) Private Sub CommandButton1_Click() Call aaa End Sub ・Module1(コード) Sub aaa() Dim wb As Workbook Dim ws As Worksheet Workbooks.Open ("c:\test.xls") Set wb = Workbooks("test.xls") Set ws = wb.Worksheets("Sheet1") wb.ws.Range("A2").Value = "CCC" End Sub wb.ws.Range("A2").Value = "CCC"の部分で 以下の実行エラーが出ます。 ------------------------------------------------------------------------ 実行時エラー'438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ------------------------------------------------------------------------ Set wb = Workbooks("test.xls") Set ws = wb.Worksheets("Sheet1") の部分で特にエラーも出ないので、オブジェクトの取得は成功していると 思うのですが、WorkSheetオブジェクトのwsからRangeメソッドを呼ぶことが できません。 動かない原因と対策を教えてください!!

  • ACCESSのVBAについて

    ACCESSのVBAを使って、データの集計・分析などをしてEXCELに出力、さらにそのEXCELを少しいじる、←このVBAをVBSで実行 といった事をしていたのですが、 会社の端末が一部Office2003から2010に変わったため、参照設定に不具合が出てきました。 内容は、元々2003で作成されたデータベースを2010で開くとVBAの参照設定が「Microsoft Access 11.0 Object Library」だったものは「Microsoft Access 14.0 Object Library」に変わるのですが、 「Microsoft Excel 11.0 Object Library」は変更されずに参照不可になってしまいます。 以前、別のところで同様の質問をした際に、 →「参照設定」をして、コードを作成したあと、コードに使われている定数を全部調べ上げて、変数宣言のコードを作成し、 参照設定のチェックを外して、宣言のコードを追加する、ということで、参照設定の対策をします。 といった回答を頂いたのですが、いまいち理解できていません。 以下のコードをEXCELの参照設定を外しても動くようにするにはどのようにしたら良いのでしょうか?よろしくお願いします。 Sub TEST() Dim xls As Excel.Application Dim wb As Excel.Workbook DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "TEST", "C:\TEST.xls", True Set xls = CreateObject("Excel.Application") Set wb = xls.Workbooks.Open("C:\TEST.xls") With xls .Sheets("Sheet1").Select .Range("A1").Value = "成功" .Visible = True End With End Sub

  • Excel VBAを使って、Excelデータを別のExcelファイルに取り込みします

    報告書にexcel VBAを使って、(報告書を開いたまま)報告書のデータを別のexcelファイル(一覧)に取り込みします。 Sub k() Dim ブック As Workbook Set ブック = Workbooks.Open("c:\テスト\" & "一覧.xls") ブック.Worksheets("Sheet1").Cells(3, 2) = Worksheets("企業情報シート").Cells(3, 3) End Sub 報告書の"Worksheets("企業情報シート").Cells(3, 3)"は書き方がおかしいみたいで、正しい書き方を教えてください。

  • エクセルVBAで作成した別ブックにVBAを記述したい

    VBAで別ファイルの作成は下記で出来ているのですが、出来上がったファイルにVBAを記述する方法がわかりません。 具体的には一番下のSub TEST()を新しいブックの標準モジュールに記述したいのと、sheet1に Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "ChangeTEST" End Sub を入れたいです。 また Private Sub Workbook_Open() MsgBox "OpenTEST" End Sub も入れたいのです。 どうぞご教示ください。 Sub 複製() Dim wb As Workbook, sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set wb = Workbooks.Add Application.SheetsInNewWorkbook = sc wb.Sheets("Sheet1").Select ThisWorkbook.Sheets("Sheet1").Cells.Copy wb.Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Buttons.Add(123, 195, 68.25, 15).Select Selection.OnAction = "TEST" Selection.Characters.Text = "TEST" ActiveWorkbook.Close ThisWorkbook.Activate Sheets("Sheet1").Select End Sub Sub TEST() MsgBox "TEST!!" End Sub よろしくお願いします。

  • VBAでAccessからExcel

    VBAでAccessからExcelファイルを ダイアログで選択して開き転記をさせたい。 以下のように書いてみるとダイアログ表示までは 出るのですが、Excelは起動しません、 何かが足りないとは思うのですが ご指摘、ご教授お願いします。 Sub test2() Dim objxls Set objxls = CreateObject("excel.application") Dim myfile Dim xls myfile = objxls.Application.getopenfilename() Set xls = objxls.workbooks.Open(myfile)

  • エクセルVBA

    VBAの素人です。 以下のようなVBAを実行しようと、何とか形にしました。 単独のBOOKではうまくいくのですが、同時に他のBOOKを開くと 「インデックスが有効範囲にありません」とエラーになります。 エラー箇所は、With Sheets("Sheet1").Range("B1")部分です。 修正をご教示頂ける方、何卒よろしくお願い致します。 全くVBA無知なのにすみません。 Private Sub Workbook_Open() test01 test02 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub Sub 終了() Application.OnTime Now + TimeValue("0:00:02"), "test01", , False ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("Sheet1").Range("B1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:02"), "test01" End Sub Sub test02() With Sheets("Sheet1").Range("B2") .Value = Time .NumberFormatLocal = "mm:ss" End With End Sub

  • VBA EXCEL 開かずにデータ操作

    現在下記のようなコードでテストしています。 Sub Sample() Dim TargetBook As Workbook    Set TargetBook = Workbooks.Open("Book2.xls")    TargetBook.Sheets("Sheet1").Cells(1, 5) = Cells(1, 1)    TargetBook.Close End Sub Book2を開いてセルの読み書きはテストできました。 これをBook2をopenせず閉じた状態で操作したいと思っています。 Workbooksの表示されるメソッドを色々試してみますが出来ません。 OpenDatabaseが使用できるのかと思いますが、出来ません。 ご指導よろしくお願いします。

  • VBAにおいて、""内で変数を使用したい

    VBAにおいて、""内で変数を使用したい 0864_001.xls 0864_002.xls … 0864_009.xls というファイルがあるとき、0864_001.xlsを開く→処理→閉じる→0864_002.xlsを開く→… というように処理をしたいと思い、以下のようなマクロを作成しました。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00i.xls" 処理 閉じる Next i End Sub 実行しようとしてもファイルを開くことが出来ずに困っています。 ""内で変数を使うことは出来ないのでしょうか? また、どのようにすれば実行できるようになるのか教えてください。

  • AppActivate Appではなぜだめなのでし

    エクセルファイルをvbaで開いて全画面表示したいのですが Sub Sample1() Dim App As Excel.Application Dim xlBook As Workbook Dim MyFileName As String MyFileName = "D:\test.xls" Set App = CreateObject("Excel.Application") Set xlBook = App.Workbooks.Open(MyFileName, ReadOnly:=True) App.Visible = True AppActivate App 'エラー発生 End Sub このコードだと AppActivate Appでエラーが発生します。 たまにシステムの裏側で開いてしまうので 常に前面に持ってこれるようにしたいのですが AppActivate Appではなぜだめなのでしょうか?

  • excelのデータをvbにとりこむ

    excelのあるセルのデータを取り込みたいのですが、 どうすればよいでしょうか? C:\123.xlsというファイルのsheet1の (2,4)というセルにある実数型のデータを 出力するという、意図です。 Private Sub Setting_Click() Dim xls As Object Dim xlsFilename As String Dim xlsSheetname As String xlsFilename = "C:\123.xls" xlsSheetname = "Sheet1" Set xls = CreateObject("Excel.Application") xls.Application.Visible = False xls.Application.Workbooks.Open xlsFilename Dim r1 As Double r1 = xls.Application.Workbooks.cells(2, 4).Value Print r1 end sub