오라클 데이터베이스에서 일부 데이터를 가져와 테이블 형식으로 표시하는 Excel 매크로를 실행 중입니다.VBA를 실행할 때 메모리 오류가 발생했습니다.
매크로 몇 분 동안 잘 실행 한 후 아래의 오류와 함께 제공 :
. "마이크로 소프트 ODBC 오라클 올바른 작업을 수행하는데 충분한 메모리를 할당 할 수있는 메모리를 확보하고 다시 시도하십시오 작업"
Oracle 용 Mirosoft ODBC에 대한 DSN 설정을 사용하여 데이터베이스에 연결 중입니다. 또한이 매크로는 Oracle 10g 클라이언트에서 XP를 실행 중이었습니다. 나는 Oracle 11g 클라이언트를 사용하여 Windows 7 (32 비트)에서이 문제를 직면하고 있습니다.
이 문제에 대한 도움을 주시면 감사하겠습니다.
코드 : 제거 창 후 해결
Sub Refresh_Tables()
Dim intHour_of_Day As Variant
Sheets("Live Screen").Select
Range("A1").Select
Application.ScreenUpdating = False
Sheets("Data2").Select
Range("Hour_of_Day").Select
intHour_of_Day = ActiveCell.Value
'MsgBox ("1")
Sheets("Data").Select
Range("G4").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Sheets("Data").Select
Range("U4").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
'MsgBox ("2")
Sheets("Data").Select
Range("A25").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
'MsgBox ("3")
Application.ScreenUpdating = False
If intHour_of_Day < 11 Then
' Refresh all Tables
Sheets("Data2").Select
Range("B10").Select
'MsgBox ("4")
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("E10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("H10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("K10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("N10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Sheets("Data2").Select
'MsgBox ("5")
Range("Q9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("T9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("W9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("Z9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("AC9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
ElseIf intHour_of_Day >= 11 And intHour_of_Day < 13 Then
Sheets("Data2").Select
Range("E10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("H10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("K10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("N10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Sheets("Data2").Select
Range("T9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("W9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("Z9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("AC9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
ElseIf intHour_of_Day >= 13 And intHour_of_Day < 15 Then
Sheets("Data2").Select
Range("H10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("K10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("N10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Sheets("Data2").Select
Range("W9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("Z9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("AC9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
ElseIf intHour_of_Day >= 15 And intHour_of_Day < 17 Then
Sheets("Data2").Select
Range("K10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("N10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Sheets("Data2").Select
Range("Z9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("AC9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Else
'Update Running Total Tables
Sheets("Data2").Select
Range("N10").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("AC9").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End If
Sheets("Live Screen").Select
Range("A1").Select
Application.ScreenUpdating = True
End Sub
귀하의 질문 7 64 비트는 실제 코드를 추가하여 향상 될 것입니다. –
코드를 추가했습니다. 가장 먼저 검토하고 조언 해 주시겠습니까? –
별도의 쿼리가 많이있는 것 외에는 제안 할 수있는 것이별로 없습니다. 내가 Oracle을 다루는 중이라면 일반적으로 ADO를 직접 사용하고 QueryTables를 사용하지 않습니다. –