Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Excel 2010)
パスワードの受け渡し方法
投稿日時: 19/07/08 12:06:39
投稿者: mmiwa

パスワードの受け渡し方法を教えてください
 
エクセルからアクセスのファイルDatabase.mdb内にあるモジュールAAAを呼び出すために
以下のような記述をしました
 
Dim objA As Object
Set objA = CreateObject("Access.application")
 
objA.opencurrentdatabase ThisWorkbook.Path & "\Database.mdb"
objA.Visible = True
objA.UserControl = True
objA.Run "AAA"

 
アクセスにパスワードの設定がない場合、問題なく動きます
 
アクセスにパスワードの設定がある場合
doc.microsoft.comのOpencurrentdatabase(filepath、 Exclusive、 bstrpassword)を参考に
 
objA.opencurrentdatabase ThisWorkbook.Path & "\Database.mdb", , "ABCDE"
 
としましたが
「因数の数が一致していません。または不正なプロパティを指定しています。」
とエラーが出ます
 
記述方法を教えて頂けないでしょうか
よろしくお願いいたします

回答
投稿日時: 19/07/08 15:06:01
投稿者: sk

引用:
objA.opencurrentdatabase ThisWorkbook.Path & "\Database.mdb", , "ABCDE"

本当にこの通りに記述されているのであれば
少なくとも下記の実行時エラー 450 は発生しないはず。
 
引用:
数の数が一致していません。または不正なプロパティを指定しています。」
とエラーが出ます

今のところ考えられる原因は、エラーメッセージの通り
「実際に記述されたステートメントにおいて、
OpenCurrentDatabase メソッドに対して渡している
引数の数が多すぎる」という可能性。
 
(ダメな例)
---------------------------------------------------------------------
 
objA.OpenCurrentDatabase ThisWorkbook.Path & "\Database.mdb", , , "ABCDE"
 
---------------------------------------------------------------------

投稿日時: 19/07/08 15:35:43
投稿者: mmiwa

sk 様
 
ありがとうございます
 
確認しましたが、「,」は二つ記述しています
 
念のために filepathとpasswordとの間の「,」数を1〜3個と変動させてみました
一つの場合「型が一致しません」 (Booleanでないからだろうと思います)
二つの場合「因数の数が一致していません…」
三つの場合「因数の数が一致していません…」
と全てにおいてエラーが出ました

回答
投稿日時: 19/07/08 15:47:41
投稿者: sk

引用:
念のために filepathとpasswordとの間の「,」数を1〜3個と変動させてみました
一つの場合「型が一致しません」 (Booleanでないからだろうと思います)
二つの場合「数の数が一致していません…」
三つの場合「数の数が一致していません…」
と全てにおいてエラーが出ました

(「いんすう」ではなく「ひきすう」、という点はさておき)
下記のように、名前付き引数を指定して値渡しを行なっても
同様に実行時エラー 450 が返されるのでしょうか。
 
-----------------------------------------------------------------
 
objA.OpenCurrentDatabase filepath:=ThisWorkbook.Path & "\Database.mdb", _
                         bstrPassword:="ABCDE"
 
-----------------------------------------------------------------

投稿日時: 19/07/08 15:58:40
投稿者: mmiwa

sk 様
 
引数ですね 失礼しました
(するどい!)
 
さて本題ですが
 
objA.OpenCurrentDatabase filepath:=ThisWorkbook.Path & "\Database.mdb", _
                         bstrPassword:="ABCDE"
 
に置き換えたところ
 
448 名前付き引数が見つかりません
 
にエラーが代わりました
 

回答
投稿日時: 19/07/08 16:39:17
投稿者: sk

引用:
数の数が一致していません。または不正なプロパティを指定しています。

引用:
448 名前付き引数が見つかりません

引用:
objA.OpenCurrentDatabase filepath:=ThisWorkbook.Path & "\Database.mdb", _
                         bstrPassword:="ABCDE"

ひょっとして、その実行環境に古いバージョン( 2000 以前)の
Access をインストールされているのではないでしょうか。

投稿日時: 19/07/09 08:57:58
投稿者: mmiwa

sk様
 
遅くなり申し訳ありません
 
ご指摘のとおりでした
出社して確認したところ、2000がインストールされていました
 
実はひょっとしたらバージョンの問題かと思い
昨夜自宅のPCで走らせたところ(2010インストール)
全く問題なく動くことが確認できました
 
お時間を頂戴して申し訳ありませんでした
(早く報告すべきでしたが、諸事情で報告が遅くなりましたことについても
お詫びいたします)
 
サポートもされていないので
上長と相談の上、最新バージョンを購入してもらおうと思います
 
ありがとうございました