マンガでよめる痔のこと・薬のこと

こんばんは

.vbsファイルからデータベースを操作しようとして躓いています。
エクセルvbaでは動いているのに、.vbsに移植するとエラーが出てしまいます。
エラーの内容は「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」です。

次のスクリプトです。

'ここから
Dim ADO_CONNECT
Dim MDBName
Dim dbCon
Dim strSQL

ADO_CONNECT = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
MDBName = WScript.Arguments(0) 'エクセルVBAの場合はハードコード
Set dbCon = CreateObject("ADODB.Connection")
dbCon.Open ADO_CONNECT & MDBName & ";"
strSQL = "命令文"
dbCon.Execute (strSQL)

'ここまで

プロバイダーの場所、バージョン、32/64ビット、あたりに問題がのかもしれませんが、調べてもよくわかりません。エクセルVBAでは動作するので、参照設定?の違いなのかもしれません。どのように解決したら良いでしょうか。

Win 7 Pro 64bit
MS Accessなし
Excel 2007 あり

A 回答 (1件)

スクリプトを32bit版ファイラーから試すと問題ありませんでした。


が、Explorer (64bitで動作)から試すと同じエラーになりました。
Explorer 64bit で動作

Wscript も64bitが呼ばれる

ADODB の64bit版は存在しないのでエラー発生の流れかと思います。
(Win7 64bit & Office 2010 64bit でもほんの少しだけ確認)

なので、
http://d.hatena.ne.jp/KenKens/20140312/1394641831
の中ほどにあるように32bit版で起動しなおすようにすれば解決するものと思われます。
    • good
    • 1
この回答へのお礼

感謝です!!

やはりそういうことでしたか。これ、本当にやっかいですね。
リンク先もよく読んでみました。そもそも今回の単発スクリプトのために改造する意味がありませんでしたので、次の流れで解決しました。

vbsファイルにデータベースファイルをドラッグアンドドロップ
vbsファイルでファイルパスを取得した上で、別のエクセルファイルを起動してそこのマクロに引数としてパスを渡し、マクロの中で処理をしてもらうことになりました。

実際、SQLも1行だけで、ドラッグアンドドロップでデータの一部だけを置き換えるための手抜きのためのスクリプトだったわけで、これで解決としたいと思います。

また賢くなりました。ほんと、皆さんのおかげです。

お礼日時:2014/11/18 13:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qマクロの修正

今月同好会のパソコンを買いかえましたら下記問題点が発生し解決出来ません。
解決方法をご指導いただきたくお願い申し上げます。

  旧PC  WindowsXP  Excel 2002  Access 2002
  新PC  Windows 7  Excel 2010  Access 2010

問題点
 1・旧PCから新PCに移行しましたら、下記メッセージが表示され 
    'DB接続の ADCN.Open strDbConst でストップしてしまい更新出来ません。
    メッセージ
実行時エラー 3706
プロバイダーが見つかりません。正しくインストールされていない可能性があります。
 *尚その他のエクセル・ワードのファイルは、そのまま使用出来ます。

会員名札.xls に記述してあるマクロのコピー
  ’アクセスの会員管理.mdbからエクスポート
Public ADCN 'コネクト変数
Public ADRS 'レコードセット変数
Public ADCM 'コマンド変数

  ’DB接続
     Sub SpConnect()
Dim wMdb As String
Dim wPass As String
Dim UserName As String
UserName = Environ("USERNAME")
wMdb = "C:\Documents and Settings\" & UserName & "\My Documents\GGG
         \筆王\会員管理.mdb" '← Accessのデータべース


  wPass = "" '← データベースのパスワード
     strDbConst = "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=" & wMdb & ";Jet  OLEDB:Database Password=" & wPass
     Set ADCN = CreateObject("ADODB.Connection")
     Set ADCM = CreateObject("ADODB.Command")
     Set ADRS = CreateObject("ADODB.Recordset")
     ADCN.Open strDbConst
     ADCM.CommandType = 4
     ADCN.CommandTimeout = 0
     Set ADCM.ActiveConnection = ADCN
    End Sub

  'DB切断
Sub SpDisconnect()
ADCN.Close
Set ADRS = Nothing
Set ADCM = Nothing
Set ADCN = Nothing
End Sub

今月同好会のパソコンを買いかえましたら下記問題点が発生し解決出来ません。
解決方法をご指導いただきたくお願い申し上げます。

  旧PC  WindowsXP  Excel 2002  Access 2002
  新PC  Windows 7  Excel 2010  Access 2010

問題点
 1・旧PCから新PCに移行しましたら、下記メッセージが表示され 
    'DB接続の ADCN.Open strDbConst でストップしてしまい更新出来ません。
    メッセージ
実行時エラー 3706
プロバイ...続きを読む

Aベストアンサー

私自身はADOは使っていないのですが・・・(汗)

原因は、JET4.0を指定していることではないでしょうか。
【参考】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D
(ページ下方『注意事項』の「2. OLEDBを使用する~」の部分)

とりあえず、パスワードの指定方法がわからないので(汗)
当該MDBファイルのパスワードを一旦解除した上で、
プロバイダの指定を「MicroSoft.Jet.OLEDB.4.0」から
「Microsoft.ACE.OLEDB.12.0」に変更して、確認して
みてください。

なお、もしかしたらですが、Passwordの方は今までと同じ
(但しJETの後ろのスペースが2つだったので1つ削除)、
「JET OLEDB:Database Password」のままでいいのかも
しれません(汗)
http://social.msdn.microsoft.com/Forums/ja-JP/csharpexpressja/thread/bcf40c9e-97c2-486e-867d-98877d0054e1/

私自身はADOは使っていないのですが・・・(汗)

原因は、JET4.0を指定していることではないでしょうか。
【参考】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D
(ページ下方『注意事項』の「2. OLEDBを使用する~」の部分)

とりあえず、パスワードの指定方法がわからないので(汗)
当該MDBファイルのパスワードを一旦解除した上で、
プロバイダの指定を「MicroSoft.Jet.OLEDB.4.0」から
「Microsoft.ACE.OLEDB.12.0」に変更して、確認して
みてください...続きを読む

QEXCEL VBAでACCESSに接続時にエラーが出ます

自分のPCの場合は、EXCEL VBAでACCESSにADOで接続時してデータを抽出することが出来ますが、他PCより同じマクロを動かすと「実行時エラー'3706'、プロバイダーが見つかりません。正しくインスツールされていない可能性があります。」のエラーメッセージが出ます。
ACCESSのデータは、EXCEL VBAで自分のPCからのみOPEN出来るようになっているようですが、他のPCからもEXCEL VBAでOPEN出来るようにするにはどうしたら良いのでしょうか。
ACCESSの事は良く分からないので教えてください。
ちなみに、他のPCで直接ACCESSデータを起動するとOPEN出来ます。
宜しく、お願いします。

Aベストアンサー

コネクションの文字列が提示されていないので何とも言えません。
{みだりに公開もできないものではありますが}
コネクションの文字列に問題があるように思います。
つながるPCとつながらないPCで「UDL」をつくって見たらどうでしょう。
空のファイルをEditorで作ってtest.udlという名前で保存
それをダブルクリックすると接続を確立するためのプログラムが立ち上がりますから
そこでプロバイダーなどを選んで「接続テスト」がOKになるようにします。
保存したあとそのファイルをEditorでみると接続文字列が分かると思います。
ウイザード代わりに使うということです。
その後でそれぞれのUDLの内容を比較したら何らかの回答が得られるのではないかと思います。

QVB.NET Oracle接続 32、64bit

VB.NET 2010でOracle11gに接続するプログラムを作っていますが、
接続方法がいまいちわからずに困っています。

プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、
Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。

ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。
パラメータ値は例です。
(Web.configに記述)
<connectionStrings>
<add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1"
providerName="System.Data.OleDb" />
</connectionStrings>


次に、コンソールプログラムを作成し、同じサーバーで上記と同様の接続文字列で
接続しようとしましたが、エラーとなり接続できませんでした。

いろいろ記述を変えても接続できませんでしたが、最終的にOracle Clientの
32bit版を64bit版と違うフォルダにインストールし、以下の接続文字列で接続
できました。(INIファイルに記載)
ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1

この状態でWEBアプリの方は何を使っているのかと思い、64bit版のインストールフォルダを
リネームしたところ、WEBアプリの方は接続できなくなりました。


現状では32bitと64bitのOracle Clientが両方必要な状況ですが、本来ならどちらかだけで
すむと思います。
32bitと64bitで接続文字列が変わるという情報は得られませんでした。
何がまずいのでしょうか?
最初から32bit版をインストールすれば良かったのでしょうか。

VB.NET 2010でOracle11gに接続するプログラムを作っていますが、
接続方法がいまいちわからずに困っています。

プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、
Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。

ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。
パラメータ値は例です。
(Web.configに記述)
<connectionStrings>
<add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=p...続きを読む

Aベストアンサー

先ず、大前提として32bitプログラムのプロセス空間には
32bitのDLLしかロードできません。同様に64bitのそれは
64bitのDLLしかロードできません。
OLEの実装にはDLL型とEXE型があり、前者は同一の
プロセス空間にあるため、32bitプログラムからは32bitの、
64bitプログラムからは64bitのDLL実装でなければ動き
ません。

OLEをインスタンス化する時に使うクラス名はレジストリに
登録されており、最終的に処理を担うDLLかEXEのパスに
行き着くようになっています。互換性を保つため、クラス名は
以前から変わっていませんし、32/64の区別もありません。
OracleのOLEはDLL型実装なので、32bitか64bitのどちらか
一方しか処理できません。

ここでは”OraOLEDB.Oracle”が示す最終パスは後から
インストールした方に切り替えられているはずです。
サーバが64bitなら、64bit版で統一すべきでしょう。
32bit版をアンインストールして、もう一度、64bit版を
インストールした方がよいでしょう。
そして、コンソールプログラムの方を64bit版でリビルドする
ことを薦めます。Visual Studio 2012ならどちらでもビルド
できます。

先ず、大前提として32bitプログラムのプロセス空間には
32bitのDLLしかロードできません。同様に64bitのそれは
64bitのDLLしかロードできません。
OLEの実装にはDLL型とEXE型があり、前者は同一の
プロセス空間にあるため、32bitプログラムからは32bitの、
64bitプログラムからは64bitのDLL実装でなければ動き
ません。

OLEをインスタンス化する時に使うクラス名はレジストリに
登録されており、最終的に処理を担うDLLかEXEのパスに
行き着くようになっています。互換性を保つため、クラス名は
以前から変わって...続きを読む

Qデータソース名および指定された既定のドライバが見つかりません。

データソース名および指定された既定のドライバが見つかりません。
オラクルに接続したのですが、上記のエラーが出て接続出来ません。
どなたか力を貸してください。

<環境>
WinXP
VS2005 Ver8.0.50727.42
Windowsアプリケーション
VB言語でオラクルに接続したいと思っています。

こちら(http://support.microsoft.com/kb/310985/ja)を参考に
オラクルに接続しようとしています。

Dim cn As OdbcConnection
cn = New OdbcConnection("Driver = {Microsoft ODBC for Oracle};" & _
"Data Source=ORA_TEST;uid=UID_TEST;pwd=PWD_TEST")

Try
cn.Open()
MsgBox("Connected")
Catch ex As Exception
MsgBox("NG")
Debug.Print(ex.Message, "Error") ←(A)
Finally
cn.Close()
End Try

(A)で「ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。」

のメッセージが出ます。
VB2005の「ツール」-「サーバの接続」では接続確認が取れているのですが、
コードで書くとエラーになってします。

何か書き忘れているのでしょうか。。。
すみませんがよろしくお願いいたします。

データソース名および指定された既定のドライバが見つかりません。
オラクルに接続したのですが、上記のエラーが出て接続出来ません。
どなたか力を貸してください。

<環境>
WinXP
VS2005 Ver8.0.50727.42
Windowsアプリケーション
VB言語でオラクルに接続したいと思っています。

こちら(http://support.microsoft.com/kb/310985/ja)を参考に
オラクルに接続しようとしています。

Dim cn As OdbcConnection
cn = New OdbcConnection("Driver = {Microsoft ODBC for Oracle};" & _
...続きを読む

Aベストアンサー

>cn = New OdbcConnection("Driver = {Microsoft ODBC for Oracle};" & _
>"Data Source=ORA_TEST;uid=UID_TEST;pwd=PWD_TEST")

自分の環境に合わせないとね?????

これの意味はインポートしているんですよね? スクリプトはVBSの事ですかね。VBA? VBですよね?

Imports System.Data
Imports Microsoft.Data.ODBC


それと見るHPがちょこと違う。
http://msdn.microsoft.com/ja-jp/library/system.data.oracleclient.oraclelob.aspx

QVBSでADOを使ってaccessのテーブルに接続

VBSでADOを使ってaccessのテーブルに接続する方法は?

Sub ADO_test()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic

MsgBox "test成功です"

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

End Sub

をACCESSVBAで実行すると成功しますが
全く同じコードをメモ帳に貼り付けてtest.vbsで保存し、ダブルクリックすると、

行:3
文字:11
エラー:ステートメントの末尾が不正です。
コード:800A0401

のエラーになります。

VBAは少しわかるのですが、VBSに関しては初心者です。
どこを修正すればコードが通るのか教えてください。

VBSでADOを使ってaccessのテーブルに接続する方法は?

Sub ADO_test()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic

MsgBox "test成功です"

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

End Sub

をACCESSVBAで実行すると成功しますが
全く同じコードをメモ帳に貼り付けてtest.vbsで保存...続きを読む

Aベストアンサー

Dim cn 'データ型の指定は出来ません。VBSにお任せになります
Dim rs
const adOpenKeyset = 1
const adLockOptimistic = 3
set cn=createobject("adodb.connection") 'Accessのように参照設定は出来ないので此処で
set rs=createobject("adodb.recordset")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic 'Accessの定数名では指示できないので実数で
'rs.Open "テーブル1", cn, 1, 3 'これだと後で見ても分からないので、Const で宣言
MsgBox "test成功です"
msgbox rs(0)
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

かな?
定数の実際の値はイミディエイトウィンドウで
?adOpenStatic とかで返ってくる値を確認してください。

Dim cn 'データ型の指定は出来ません。VBSにお任せになります
Dim rs
const adOpenKeyset = 1
const adLockOptimistic = 3
set cn=createobject("adodb.connection") 'Accessのように参照設定は出来ないので此処で
set rs=createobject("adodb.recordset")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic 'Accessの定数名では指示できないので実数で
'rs.Open "テーブル1", cn, 1, 3 'これだと後で見...続きを読む

QEXCEL_VBAでOracleにADO接続してSQL文で追加/更新したい

EXCELで入力した値をADO接続して
SQL文で登録したいのですが 誰かサンプルソース
作成していただけないでしょうか?

Aベストアンサー

手抜きのような気もしますが…
Oracle OLACLEDBデータベースのSCOTTスキーマに「テスト」テーブルがある物とします。
NAME VARCHAR2
KOE VARCHAR2

Excelでは、ツール-参照設定で"Microsoft ActiveX Data Objects 2.0 Library"を参照します。

Module1を作成して、
↓ここから
Option Explicit

' ADOのオブジェクト変数を宣言
Private cnn As New ADODB.Connection
Private cmd As New ADODB.Command

Private Sub sTest()
On Error GoTo err_hdr
' Oracleの接続
cnn.Open "Provider=MSDAORA;" & _
"Data Source=ORACLEDB;", "SCOTT", "TIGER"
Set cmd.ActiveConnection = cnn
'追加の例
With cmd
.CommandText = "INSERT INTO テスト" _
& " (NAME , KOE)" _
& " VALUES ( '" & "ねこ" & "'" _
& " , '" & "にゃん" & "')"
.CommandType = adCmdUnknown
.Execute
End With
'更新の例
With cmd
.CommandText = "UPDATE テスト" _
& " SET テスト.NAME='" & "ねこ" & "'" _
& " , テスト.KOE='" & "にゃお~ん" & "'" _
& " WHERE " _
& " テスト.NAME='" & "ねこ" & "'" _
& " AND テスト.KOE='" & "にゃん" & "'"
.CommandType = adCmdUnknown
.Execute
End With
'削除の例
With cmd
.CommandText = "DELETE FROM テスト" _
& " WHERE " _
& " テスト.NAME='" & "ねこ" & "'" _
& " AND テスト.KOE='" & "にゃお~ん" & "'"
.CommandType = adCmdUnknown
.Execute
End With

cnn.Close

Set cmd = Nothing
Set cnn = Nothing
Exit Sub
err_hdr:
Resume Next
End Sub
↑ここまで

「ねこ」とかの代わりにExcelシート上のセルからデータを取得して
セットするように改造下さればなんとかなるかと思います。

手抜きのような気もしますが…
Oracle OLACLEDBデータベースのSCOTTスキーマに「テスト」テーブルがある物とします。
NAME VARCHAR2
KOE VARCHAR2

Excelでは、ツール-参照設定で"Microsoft ActiveX Data Objects 2.0 Library"を参照します。

Module1を作成して、
↓ここから
Option Explicit

' ADOのオブジェクト変数を宣言
Private cnn As New ADODB.Connection
Private cmd As New ADODB.Command

Private Sub sTest()
On Error GoTo err_hdr
' Oracleの接続
cnn.Open "Provider=M...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QOLEDB.NETで接続できない

OS:XP
開発:VB 2008 .NET Framework 2.0 MDAC2.5
DB:Oracle9i(サーバー)、Oracle8i(クライアント)

以下のようにOracle Provider for OLEDBで接続を試みるもエラーに
なります。

Dim con As New OleDbConnection()
con.ConnectionString = "Provider=OraOLEDB.Oracle;User Id=scott;" & _
"Password=tiger;Data Source=Oracle;OLEDB.NET=True;"
con.Open

結果は、「'OraOLEDB.Oracle'プロバイダーはローカルのコンピュータ
に登録されていません。」のエラーになります。

環境変数のPATHに、[OralceHome]\binは定義されていますし、Oracle
Provider for OLEDB はインストールされているのを確認しました。

因みにですが、ODP.NETでの接続ができるのですがよく分からない
状態です。あまり.NETやOracleの知識がないので詳しく伝えれないの
ですが、デバッグ実行時はエラーになるのに、EXE単体で実行した場合
には問題なく接続できている状態です。ODP.NETは、クライアントが
Oracle9R2からだったら使えるようなことがどこかに書いてあったので
このようにデバッグ時とEXE単体実行時で異なるのかと思います。
デバッグ時には、接続オープンエラーになります。

そのような経緯でOLEDB.NETでは、正常に動作するであろうと思い修正
に踏み切ったのですが、うまくいきません。.NET側での参照設定などの
設定がいけないのでしょうか?それとも他に原因があるのでしょうか?

かなり悩んでいるので原因と対処方法の分かる方がおられましたら、
ご教授よろしくお願い致します。

OS:XP
開発:VB 2008 .NET Framework 2.0 MDAC2.5
DB:Oracle9i(サーバー)、Oracle8i(クライアント)

以下のようにOracle Provider for OLEDBで接続を試みるもエラーに
なります。

Dim con As New OleDbConnection()
con.ConnectionString = "Provider=OraOLEDB.Oracle;User Id=scott;" & _
"Password=tiger;Data Source=Oracle;OLEDB.NET=True;"
con.Open

結果は、「'OraOLEDB.Oracle'プロバイダーはローカルのコンピュータ
に登録されていません。」のエラーになります。

環境変数のP...続きを読む

Aベストアンサー

Gui toolで接続できるか確認してみては、どうですか。
http://kuronekosoft.ewinds.net/

http://www.hi-ho.ne.jp/tsumiki/

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

QExcelとOracleの連携について

お世話になります。

Excelで[データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース]
-「ODBC DSN」-「接続するODBCデータソース」-「OracleDNS」
-「Oracle ODBCドライバ接続」ではOracleに接続する事は出来、データも
Excel上に表示する事が出来ました。

しかし、下記HPの
http://www.atmarkit.co.jp/fdb/rensai/excel2oracle02/excel2oracle02_2.html
サンプルコードを元にVBAコードを作成したのですが、
'データベース接続処理がうまくいっていない様で、

Err_Han:
' エラー処理
MsgBox (Err.Description)

で、「ORA-12154:TNS: 指定された接続識別子を解決できませんでした」
と言うエラーになってしまいます。

VBAにてADOの参照設定とかしていないのですが原因はそれでしょうか。

どなたかご親切な方、ご教示くださいます様、宜しくお願い致します。

Aベストアンサー

No.2です。

>Excelで[データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース]
>-「ODBC DSN」-「接続するODBCデータソース」-「OracleDNS」
>-「Oracle ODBCドライバ接続」ではOracleに接続する事は出来、データも
>Excel上に表示する事が出来ました。
なのだから、DSNはあるのですよね。すみません。

実を言うと、私は通常ADO+OLE DBを使っているのでODBCに関しては良くわかりません。
・・・申し訳ありません

ADO+OLE DB は特にソフトをインストールなどは必要ありません。
(「ADOの参照設定とかしていないのですが」とありますが、そのエラーならばActiveX Data Objects に参照設定されていると思います。それ以外の設定は特にありません)
こちらの方が(oo4oよりは劣るにしても)パフォーマンスが多少良いとのことですし、一度試されてはいかがでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング