Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


28959 / 76738 ←次へ | 前へ→

【53069】Re:エクセルのVBAでフリーズ状態になっちゃう!
発言  n  - 07/12/13(木) 18:57 -

引用なし
パスワード
   >ThisWorkbook.Names.Count
というのは、[名前の定義]の個数です。
15171個は多いですね。

Webクエリでデータを取得した後、クエリの定義はどうされるのでしょう?
一度設定して、後は更新ですか?
それとも Cells(lastrow, 2) という指定から推測すると、
毎回、ご提示のコードでWebクエリを実行されているのですか?

『もし、そうであれば、』必要なものはデータのみなので、
データ取得直後にWebクエリ定義を削除するようにしてはどうでしょう。
また、クエリはクエリ定義と名前定義を行いますから、それも削除する必要があります。
具体的には

>    .Refresh BackgroundQuery:=False
    .Parent.Names(.Name).Delete
    .Delete
>  End With
>End Sub

この2行を追加します。

また、今まで溜まった[名前定義]を削除したほうが良いでしょう。
(他に、必要な[名前定義]がなければの話ですが)

Sub try()
  Dim n As Name
  
  With ActiveWorkbook
    For Each n In .Names
      n.Delete
    Next
    MsgBox .Names.Count
  End With
End Sub

※該当BookをActiveにして実行してください。
※念の為バックアップをとっておいてくださいね。

>IEオブジェクトを使う方法
は以前書いたサンプルがあったので載せておきますね。

Sub sample()
  Const READYSTATE_COMPLETE As Long = 4
  Const sCHK As String = "日付始値高値"
  Dim sURL(0 To 9) As String
  Dim x As Object
  Dim i As Long
  Dim j As Long
  Dim n As Long
 
  'httpは半角で。
  sURL(0) = "http://table.yahoo.co.jp/t?"
  sURL(1) = "c=2007"
  sURL(2) = "a=11"
  sURL(3) = "b=1"
  sURL(4) = "f=2007"
  sURL(5) = "d=11"
  sURL(6) = "e=30"
  sURL(7) = "g=d"
  sURL(8) = "s=6758"
  With CreateObject("InternetExplorer.Application")
    .Visible = True
    .navigate Join(sURL, "&")
    While .busy Or (.readyState <> READYSTATE_COMPLETE)
      DoEvents
    Wend
    For Each x In .document.getElementsByTagName("TABLE")
      If Left(x.innertext, 6) Like sCHK Then
        If x.Rows(0).Cells.Length = 7 Then Exit For
      End If
    Next x
    If Not x Is Nothing Then
      n = x.Rows.Length
      ReDim v(n - 1, 6)
      For i = 0 To n - 1
        For j = 0 To 6
          v(i, j) = x.Rows(i).Cells(j).innertext
        Next j
      Next i
      Set x = Nothing
      Sheets.Add
      Range("A1:G1").Resize(n).Value = v
    End If
    .Quit
  End With
  MsgBox "finish"
End Sub
("TABLE"名が取れたらもっと簡単になるのかもしれません。
 その辺りはよくわかりませんでした)

>CPUの稼働率が100%
あと、シート上にグラフを配置して、その上に[図のコピー]で作成したShapeを使ったりはしていませんか?

6 hits

【53033】エクセルのVBAでフリーズ状態になっちゃう! くたくた 07/12/12(水) 17:24 質問
【53047】Re:エクセルのVBAでフリーズ状態になっちゃ... n 07/12/12(水) 20:23 発言
【53068】Re:エクセルのVBAでフリーズ状態になっちゃ... くたくた 07/12/13(木) 17:49 お礼
【53069】Re:エクセルのVBAでフリーズ状態になっちゃ... n 07/12/13(木) 18:57 発言
【53080】Re:エクセルのVBAでフリーズ状態になっちゃ... くたくた 07/12/13(木) 23:10 お礼
【53087】Re:エクセルのVBAでフリーズ状態になっちゃ... n 07/12/14(金) 0:05 発言
【53089】Re:エクセルのVBAでフリーズ状態になっちゃ... くたくた 07/12/14(金) 1:10 お礼

28959 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free