1

ODBC DSN 経由で接続された Oracle データベースから QueryTables のデータを取得する Excel 2010 のシートがあります。

スプレッドシートからデータを取得し、それを使用して同じ Oracle データベース内のテーブルを更新する必要があります。QueryTable から更新を行うことはできませんが、それが ODBC を操作できる唯一の接続方法です。

ADODB 接続をセットアップしようとしましたが、

'Run-time error '-2147467259 (80004005'):

Automation error
Unspecified error

使用したコードは次のとおりです。

Sub Upload_Click()
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection

    With cn
        .Provider = "MSDASQL"
        .ConnectionString = "DSN=xcognosD;"
        .Open
    End With

    cn.Close
End Sub

注を追加しました。私は64ビットのodbcドライバーを使用してWindows 7を使用しており、Oracle 11データベースに接続しています。

4

2 に答える 2

4

Provider "MSDASQL" は、Microsoft の OLE DB Provider for ODBC Driversです。これはかなり古く、現在は推奨されていません。これは、OLE DB プロバイダーがない古いデータベースでのみ使用するためのものです。また、32 ビットのみであるため、64 ビット プロバイダー (使用しようとしているプロバイダーなど) では機能しません。OLE DB ドライバーを試してみるとよいでしょう。

Oracle 用のMS OLEDB プロバイダは "MSDAORA" (マシンに事前にインストールされている必要があります) であり、Oracle 独自の OLEDB プロバイダは "OraOLEDB.Oracle" です。MSDAORA も非推奨であるため、Oracle が提供する最新のプロバイダーをダウンロードすることをお勧めします。

Oracle プロバイダーをダウンロードしてインストールする必要があります (まだインストールしていない場合)。

.Provider = "OraOLEDB.Oracle"

も設定する必要があり.ConnectionStringます。いくつかの例については、http://www.connectionstrings.com/oracle-provider-for-ole-db-oraoledb/ をご覧ください。

于 2013-09-19T23:43:09.523 に答える
0

どうやら「実行時エラー '-2147467259 (80004005)'」は、Excel のデフォルトの「Oracle に問題があり、それが何かわかりません。

最初に、ODBC が存在しない古い DB を指していることに気付きました。odbc を更新した後も、同じエラーが発生します。

ただし、エラーは「.Open」部分では発生しなくなりましたが、更新を試みた.Executeで発生しました。最終的に、対象のテーブルを更新するためのアクセス権がユーザーにないことがわかりました。

したがって、「実行時エラー '-2147467259 (80004005)」エラーが発生した場合は、接続とアクセス許可を確認してください。おそらく間違っています。

パーミッションを修正した後に機能する、私が使用した最終的なコードは次のとおりです。

Sub Upload_Click1()
    Dim Oracon
    Dim recset
    Dim cmd

    Set Oracon = CreateObject("ADODB.Connection")
    Set cmd = CreateObject("ADODB.Recordset")

    Oracon.Open "Data Source=xcognosD;"

    Oracon.Execute "update xstore set last_update_date = sysdate where store_cd = '0000'"

    Oracon.Close

End Sub
于 2013-09-20T15:43:39.970 に答える