运行VBA时出现内存错误

时间:2014-04-16 16:19:25

标签: vba memory odbc

我正在运行一个excel宏,它从oracle数据库中提取一些数据并以表格格式显示。

宏可以运行几分钟,然后出现以下错误:

“Microsoft ODBC Oracle无法为正常操作分配足够的内存。请释放一些内存并重试操作”

请注意,我使用Mirosoft ODBC for Oracle的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

1 个答案:

答案 0 :(得分:1)

卸载Windows 7 32位并安装Windows 7 64位

后,

问题已解决