2017-05-18 13 views
0

大きなExcel * .xlsxテーブルを使用して、いくつかのクエリを含むMS Access * .accdbデータベースを作成しています。これにより、最終的な* .accdbファイルには、最大限の利便性でユーザに役立つ機能が提供されます。MS-Excel VBAモジュールをMS-Excelから作成

したがって、モジュール内にいくつかのVBAコードを提供し、複数のクエリを別々に実行したいと考えています。

ショートストーリー: VBAスクリプトをMS-Excel * .xlsxファイルに作成し、VBA経由でMS-Access * .accdbファイルに追加するにはどうすればよいですか?

私はどのように私は今からこの空白のモジュール「MyCodedModuleを」盗んでき

'REQUIRES: MS Access 12.0 Object Library 
Dim ObjAccess As Access.Application 
Dim strPath As String 
strPath = "C:\Temp\MyDB_DEV_1.MDB" 
Set ObjAccess = New Access.Application 
With ObjAccess 
    .OpenCurrentDatabase strPath, True 
    .DoCmd.RunCommand acCmdNewObjectModule 
    .DoCmd.Save acModule, "Module1" 
    .DoCmd.Rename "MyCodedModule", acModule, "Module1" 
    .CloseCurrentDatabase 
    .Quit 
End With 
Set ObjAccess = Nothing 

私の先のファイルに空白のモジュールを作成する方法をこの溶液に私を導く From MS Excel VBA, create a Standard Module in MS Access

この関連記事を見つけました

Dim m as DAO.Module 
Set m = GetModuleFromDataBase("MyCodedModule") 'HOW? 
m.AddFromString "Sub foo()" & vbCrLf & _ 
       " Debug.Print ""FOO""" & vbCrLf & _ 
       "End Sub" 

答えて

0

のようなコードの行を追加するには、このファイルは、だから私は誰かの場合、NEにここでそれを共有し、解決策を見つけましたEDSは、これが

次のコードは、これらの手順

  • 適用aswell
  • 新しいモジュール

とコードにコードを追加し、新しいモジュールの名前を変更し、新たなデフォルトモジュールを作成し、 MS Excelで使用されています。

'REQUIRES: MS Access <version> Object Library 

Dim dbpath   As String    'Path of the database to add the module to 
Dim moduleName  As String    'Name of the new module to be created in the database 
Dim strCode   As String    'String for the code to be added to new module 
Dim defaultModuleName As String    'Default module name chosen by Access 
Dim ObjAccess   As Access.Application 'Access Application Object 

'Set database path 
dbpath = "C:\PATH\To\MY\database.accdb" 

'Define Code String with line breaks (vbCrLf) 
strCode = "Sub foo()" & vbCrLf & _ 
      " Debug.Print ""FOO""" & vbCrLf & _ 
      "End Sub" 

'(English 'Module1', German 'Modul1', ...) 
defaultModuleName = "Module1" 

'Set new module name 
moduleName = "MyModule" 

'Initialize Access Application Object 
Set ObjAccess = New Access.Application 

'Open Database and add blank default module, rename afterwards 
ObjAccess.OpenCurrentDatabase dbpath, True 
ObjAccess.DoCmd.RunCommand acCmdNewObjectModule 
ObjAccess.DoCmd.Save acModule, defaultModuleName 
ObjAccess.DoCmd.Rename moduleName, acModule, defaultModuleName 
ObjAccess.DoCmd.Save acModule, moduleName 

'Loop Modules in Database 
For i = 0 To ObjAccess.Modules.Count - 1 
    'Find module name 
    If ObjAccess.Modules(i).Name = moduleName Then 
     'add code to module 
     ObjAccess.Modules(i).AddFromString strCode 
     Exit For 
    End If 
Next 

'Save and Close 
ObjAccess.DoCmd.Save acModule, moduleName 
ObjAccess.CloseCurrentDatabase 
ObjAccess.Quit 
関連する問題