从 *.cls 或类似文件以编程方式将模块导入访问
Importing a module into access programmatically from a *.cls or similar file
如果您打开 Microsoft Access,则打开 visual basic window 这样您就可以看到您的 Access 项目中的模块和代码列表。您可以将基于文本的文件(txt、cls、bas 等)从 windows 资源管理器中拖放到您的模块文件夹中。
此拖放操作会将基于文本的文件中的代码导入您的项目并提示您保存它(默认名称是您拖放的文件的名称。
有没有办法使用 VBA 以编程方式执行此操作?这似乎是一个简单的任务,应该有一个简单的解决方案,但我已经研究了几天,似乎找不到一个简单的方法来完成它。
是的,这就是要使用的命令LoadFromText
。
用法:
LoadFromText acModule, "NameOfObject", "FileName"
您可以使用 VBE 对象模型中的 VBComponents.Import
方法。有关详细信息,请参阅 Access 帮助系统中的导入方法(VBA 加载项对象模型) 主题。
此示例代码从存储我的数据库的文件夹中导入 modImportMe.bas。
Dim strFile As String
Dim strPath As String
Dim strProject As String
strFile = "modImportMe.bas"
strPath = CurrentProject.Path & Chr(92) & strFile
Debug.Print strPath
If Len(Dir(strPath)) > 0 Then
'VBE.ActiveVBProject.VBComponents.Import strPath
VBE.VBProjects("Database2").VBComponents.Import strPath
DoCmd.RunCommand acCmdCompileAndSaveAllModules
Else
MsgBox "File not found: " & strPath, vbOKOnly + vbCritical, "Oops!"
End If
注意这个数据库实际上只包含一个 VBProject
,所以我可以用 VBE.ActiveVBProject
引用它。但是,如果您的 VBProject
包含多个 VBProject
,按名称引用它会更安全,即使只有一个 VBProjects("<Name>")
也应该有效。
如果您打开 Microsoft Access,则打开 visual basic window 这样您就可以看到您的 Access 项目中的模块和代码列表。您可以将基于文本的文件(txt、cls、bas 等)从 windows 资源管理器中拖放到您的模块文件夹中。
此拖放操作会将基于文本的文件中的代码导入您的项目并提示您保存它(默认名称是您拖放的文件的名称。
有没有办法使用 VBA 以编程方式执行此操作?这似乎是一个简单的任务,应该有一个简单的解决方案,但我已经研究了几天,似乎找不到一个简单的方法来完成它。
是的,这就是要使用的命令LoadFromText
。
用法:
LoadFromText acModule, "NameOfObject", "FileName"
您可以使用 VBE 对象模型中的 VBComponents.Import
方法。有关详细信息,请参阅 Access 帮助系统中的导入方法(VBA 加载项对象模型) 主题。
此示例代码从存储我的数据库的文件夹中导入 modImportMe.bas。
Dim strFile As String
Dim strPath As String
Dim strProject As String
strFile = "modImportMe.bas"
strPath = CurrentProject.Path & Chr(92) & strFile
Debug.Print strPath
If Len(Dir(strPath)) > 0 Then
'VBE.ActiveVBProject.VBComponents.Import strPath
VBE.VBProjects("Database2").VBComponents.Import strPath
DoCmd.RunCommand acCmdCompileAndSaveAllModules
Else
MsgBox "File not found: " & strPath, vbOKOnly + vbCritical, "Oops!"
End If
注意这个数据库实际上只包含一个 VBProject
,所以我可以用 VBE.ActiveVBProject
引用它。但是,如果您的 VBProject
包含多个 VBProject
,按名称引用它会更安全,即使只有一个 VBProjects("<Name>")
也应该有效。