oracle结束录制宏,VBA和Oracle的问题

先把代码放上来

Private Sub run_sql(sqlstr As String, sheetsname As String)

Application.ScreenUpdating = False

Dim OraSession As Object

Dim OraDatabase As Object

Dim OraDynaset As Object

Dim field_name As String

Dim ORADB_DEFAULT, ORADYN_READONLY

Dim Result

Dim strSQL, i

'  Dim ds As String, user_password As String

i = 0

On Error GoTo Err_Rtn

'ds = Cells(1, 8).Value

'user_password = Cells(2, 8).Value

Set OraSession = CreateObject("OracleInProcServer.XOraSession")      'oo4oObject

' Set OraDatabase = OraSession.OpenDatabase(ds, "lteopti/123456", ORADB_DEFAULT)  '连接DB

Set OraDatabase = OraSession.OpenDatabase(ds, user_password, ORADB_DEFAULT)  '连接DB

Set OraDynaset = OraDatabase.CreateDynaset(sqlstr, ORADYN_READONLY)  '执行SQL

Sheets(sheetsname).Range("a1").CurrentRegion.ClearContents

For i = 0 To OraDynaset.Fields.Count - 1 '循环所有的数据

ActiveWorkbook.Sheets(sheetsname).Cells(1, i + 1) = OraDynaset.Fields(i).Name

Next

ActiveWorkbook.Sheets(sheetsname).Select

OraDynaset.CopyToClipboard

ActiveWorkbook.Sheets(sheetsname).Range("a2").Select

ActiveWorkbook.Sheets(sheetsname).Paste

Application.CutCopyMode = False

Set OraDynaset = Nothing                 '释放资源

Set OraDatabase = Nothing                '释放资源

Set OraSession = Nothing                 '释放资源

Exit Sub

Err_Rtn:

If (OraSession.LastServerErr <> 0) Then        'OraSession Error

MsgBox OraSession.LastServerErrText          '表示Error内容

OraSession.LastServerErrReset                '清空Error

Set OraSession = Nothing                     '释放资源

ElseIf (OraDatabase.LastServerErr <> 0) Then   'OraDatabase Error

MsgBox OraDatabase.LastServerErrText         '表示Error内容

OraDatabase.LastServerErrReset               '清空Error

Set OraDatabase = Nothing                    '释放资源

Set OraSession = Nothing                     '释放资源

Else

MsgBox Err.Description                       '表示Error内容

Set OraDynaset = Nothing                     '释放资源

Set OraDatabase = Nothing                    '释放资源

Set OraSession = Nothing                     '释放资源

End If

End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值