6

私は、Excel で VBA を使用して空の MS Access データベースを作成しようとしている完全な初心者です。新しいデータベースに「tblImport」という名前を付けたいと思います。これは私が使用しているコードです:

   Sub makedb()
   Dim accessApp As Access.Application
   Set accessApp = New Access.Application
   accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera
   accessApp.Quit
   Set accessApp = Nothing
   End Sub

次のエラー メッセージが表示されます。

「実行時エラー 3001: アプリケーション定義またはオブジェクト定義エラー」

私に何ができる?

4

4 に答える 4

9

CreateDatabase メソッドのロケール定数の名前が間違っています:

これ:
accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera

次のようにする必要があります。
accessApp.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL

それを変更すると、コードが機能するはずです。(少なくとも私にとってはそうです)。

于 2013-08-04T09:42:57.777 に答える
3

古い質問ですが、私にとっては役に立ちました。Access オブジェクトさえ必要ないようです。

Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL

私にとってはうまくいきます。

于 2014-01-02T16:35:29.230 に答える
2

作成したオートメーション オブジェクトを使用する場合は、最初の方法を使用する必要があります。各ステートメントの前に「accessApp」を付けるだけで、フォームを開いたり、DoCmd ステートメントを使用したりできます。たとえば、TempVars を使用してユーザー データを保持します。自動化を使用して関連データベースを開くことができます。

accessApp.TempVars.Add "CurrentUser", TempVars.CurrentUser

CurrentUser 値をアクティブなデータベースから新しいデータベースに渡します。

onなどの機能を実行するために新しいデータベースを作成するDoCmd.TransferDatabaseだけの場合は、次のように使用できます。

Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL

于 2014-02-03T21:08:47.667 に答える