Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 从*.cls或类似文件以编程方式将模块导入access_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 从*.cls或类似文件以编程方式将模块导入access

Ms access 从*.cls或类似文件以编程方式将模块导入access,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,如果打开Microsoft Access,请打开visual basic窗口,以便查看Access项目中的模块和代码列表。您可以从windows资源管理器中拖动一个基于文本的文件(txt、cls、bas等),然后将其放到模块文件夹中 此拖放操作将基于文本的文件中的代码导入到项目中,并提示您保存它(默认名称为您删除的文件名) 有没有一种方法可以使用VBA编程实现这一点?这似乎是一个简单的任务,应该有一个简单的解决方案,但我已经研究了几天,似乎找不到一个简单的方法来实现它。是的,这是要使用的命令Lo

如果打开Microsoft Access,请打开visual basic窗口,以便查看Access项目中的模块和代码列表。您可以从windows资源管理器中拖动一个基于文本的文件(txt、cls、bas等),然后将其放到模块文件夹中

此拖放操作将基于文本的文件中的代码导入到项目中,并提示您保存它(默认名称为您删除的文件名)


有没有一种方法可以使用VBA编程实现这一点?这似乎是一个简单的任务,应该有一个简单的解决方案,但我已经研究了几天,似乎找不到一个简单的方法来实现它。

是的,这是要使用的命令
LoadFromText

用法:

LoadFromText acModule, "NameOfObject", "FileName"

您可以使用
VBComponents。从VBE对象模型导入
方法。有关详细信息,请参阅Access“帮助系统”中的导入方法(VBA加载项对象模型)主题

此示例代码从存储我的数据库的文件夹导入modImportMe.bas

Dim strFile作为字符串
将strPath设置为字符串
作为字符串的Dim strProject
strFile=“modImportMe.bas”
strPath=CurrentProject.Path&Chr(92)&strFile
调试。打印strPath
如果Len(Dir(strPath))>0,则
'VBE.ActiveVBProject.VBComponents.Import strPath
VBE.VBProjects(“数据库2”).VBComponents.Import strPath
DoCmd.RunCommand acCmdCompileAndSaveAllModules
其他的
MsgBox“未找到文件:”&strPath,vbOKOnly+vbCritical,“Oops!”
如果结束

注意:此数据库实际上只包含一个
VBProject
,因此我可以用
VBE.ActiveVBProject
引用它。但是,如果您的数据库包含多个
VBProject
,则按名称和
VBProjects(“”)引用它更安全
即使只有一个也可以工作。

由于
LoadFromText
没有文档记录,您可能应该给出一些使用它的详细信息。添加了,尽管IntelliSense告诉了一切。有趣的是,您还可以使用SaveAsText导出表、查询和表单,然后使用LoadFromText加载它们,这样您就可以保留整个访问权限将应用程序复制到版本控制存储库中。我不导出和导入。这可能不起作用。它是
SaveAsText
LoadFromText
。这两个命令用于存储库传输。无法判断2013年的情况,因为我没有安装它,但2016年它可以工作-至少在这里。是的,我确实这样做了。两个表单,两个小类模块,保存,然后从一个新的空数据库加载。立即工作。我认为这将通过一些调整工作。我让它将一些代码导入到我的项目中,但它将其放入我正在引用的文件中,而不是当前的accdb。这一点开始很奇怪。然后它开始给我错误。因此,我认为通过一点工作,这也将d是一个可行的解决方案,因此,我感谢您,但出于简单的原因,我选择Gustav作为我的答案。也许其他人会发现您的答案更好。这是正确的方法,特别是如果您的代码中有类模块。我通常从同一个应用程序导入,因此,我使用application.VBE.ActiveVBProject.VBCo导入“文件名”