
こんばんは
.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 あり
No.1ベストアンサー
- 回答日時:
スクリプトを32bit版ファイラーから試すと問題ありませんでした。
が、Explorer (64bitで動作)から試すと同じエラーになりました。
Explorer 64bit で動作
↓
Wscript も64bitが呼ばれる
↓
ADODB の64bit版は存在しないのでエラー発生の流れかと思います。
(Win7 64bit & Office 2010 64bit でもほんの少しだけ確認)
なので、
http://d.hatena.ne.jp/KenKens/20140312/1394641831
の中ほどにあるように32bit版で起動しなおすようにすれば解決するものと思われます。
感謝です!!
やはりそういうことでしたか。これ、本当にやっかいですね。
リンク先もよく読んでみました。そもそも今回の単発スクリプトのために改造する意味がありませんでしたので、次の流れで解決しました。
vbsファイルにデータベースファイルをドラッグアンドドロップ
vbsファイルでファイルパスを取得した上で、別のエクセルファイルを起動してそこのマクロに引数としてパスを渡し、マクロの中で処理をしてもらうことになりました。
実際、SQLも1行だけで、ドラッグアンドドロップでデータの一部だけを置き換えるための手抜きのためのスクリプトだったわけで、これで解決としたいと思います。
また賢くなりました。ほんと、皆さんのおかげです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
データソース名および指定された既定のドライバが見つかりません。
Oracle
-
EXCEL VBAでACCESSに接続時にエラーが出ます
Visual Basic(VBA)
-
-
4
64bit端末でのOLEDB接続に関して
Oracle
-
5
特定のシートの削除を禁止したい(ブックの保護でなく)
Excel(エクセル)
-
6
参照設定は2.8と6.0 6.1とどちらにチェッ
その他(Microsoft Office)
-
7
実行時エラー -2147217900 ADODBでレコードセットオープン時エラー
Access(アクセス)
-
8
「オプション機能」が無くなった
アプリ
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
VBAでfunctionを利用しようとし...
-
エクセル関数式=ABSで#VALUE!...
-
VB.net 重複チェックがしたいです
-
ACCESS VBAのSplit()関数の使用...
-
TransferSpreadsheetのエラー処理
-
コンボボックスの特定項目だけ...
-
実行時エラー'-2147467259(8000...
-
ASPでこんなエラーが出たんです...
-
ISNAとISERRORの使い方の違い
-
VBAで時間(00:00形式)を積算...
-
Excel実行時エラー[80004005]に...
-
【VBAエラー】Nextに対するFor...
-
ADO 「認証に失敗しました」
-
実行時エラー '8021'とはどんな...
-
マクロの「SaveAs」でエラーが...
-
【Access】Excelインポート時に...
-
ACCESSで値を代入できないとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
マクロで"#N/A"のエラー行を削...
-
VBAのリストボックスで、横スク...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
Filter関数を用いた結果、何も...
-
文字列内で括弧を使うには
-
【VB.NET】 パワポ操作を非表示で
-
レコード登録時に「演算子があ...
おすすめ情報