Ms access 从Microsoft Access导出代码

Ms access 从Microsoft Access导出代码,ms-access,Ms Access,有没有办法将Microsoft Access代码批量导出到文件中?我知道我可以一次导出一个文件,但是有几百个,我会整天都在这里。是否没有“全部导出”或多选导出功能?界面中没有任何内容可以一次导出多个模块 您可以轻松编写自己的“全部导出”等效代码: Public Sub ExportModules() Const cstrExtension As String = ".bas" Dim objModule As Object Dim strFolder As String Dim strDesti

有没有办法将Microsoft Access代码批量导出到文件中?我知道我可以一次导出一个文件,但是有几百个,我会整天都在这里。是否没有“全部导出”或多选导出功能?

界面中没有任何内容可以一次导出多个模块

您可以轻松编写自己的“全部导出”等效代码:

Public Sub ExportModules()
Const cstrExtension As String = ".bas"
Dim objModule As Object
Dim strFolder As String
Dim strDestination As String

strFolder = CurrentProject.Path

For Each objModule In CurrentProject.AllModules
    strDestination = strFolder & Chr(92) & objModule.Name & cstrExtension
    Application.SaveAsText acModule, objModule.Name, strDestination
Next objModule
End Sub

要将所有代码(包括表单和报表中的代码)输出到桌面,可以将其粘贴到标准模块中,然后按F5键或按F8键逐步运行。您可能希望先填写桌面文件夹的名称

   Sub AllCodeToDesktop()
   ''The reference for the FileSystemObject Object is Windows Script Host Object Model
   ''but it not necessary to add the reference for this procedure.

   Dim fs As Object
   Dim f As Object
   Dim strMod As String
   Dim mdl As Object
   Dim i As Integer

   Set fs = CreateObject("Scripting.FileSystemObject")

   ''Set up the file.
   ''SpFolder is a small function, but it would be better to fill in a
   ''path name instead of SpFolder(Desktop), eg "c:\users\somename\desktop"
   Set f = fs.CreateTextFile(SpFolder(Desktop) & "\" _
       & Replace(CurrentProject.Name, ".", "") & ".txt")

   ''For each component in the project ...
   For Each mdl In VBE.ActiveVBProject.VBComponents
       ''using the count of lines ...
       i = VBE.ActiveVBProject.VBComponents(mdl.Name).CodeModule.CountOfLines
       ''put the code in a string ...
       If i > 0 Then
          strMod = VBE.ActiveVBProject.VBComponents(mdl.Name).codemodule.Lines(1, i)
       End If
       ''and then write it to a file, first marking the start with
       ''some equal signs and the component name.
       f.writeline String(15, "=") & vbCrLf & mdl.Name _
           & vbCrLf & String(15, "=") & vbCrLf & strMod
   Next

   ''Close eveything
   f.Close
   Set fs = Nothing
   End Sub
要获取特殊文件夹,可以使用Microsoft提供的列表

枚举特殊文件夹:


From:

您无需编写任何代码即可完成此操作。从菜单中,选择工具->分析->数据库文档管理器

这将为您提供一系列打印代码的选项。然后,您可以在查看报告时将其发送到PDF打印机(如果有)。或者,只需打印到文本文件打印机即可。或者,您甚至可以单击报告菜单栏中的word选项,结果将发送到word

数据库文档员有打印所有代码的规定,包括表单中的代码

因此,代替一些建议的代码示例,您无需编写任何代码即可完成此操作。务必使用文档管理器中的其他选项。文档编制员将为数据库中的每个属性和对象生成大量打印信息。因此,如果不取消选中某些选项,则很容易清空全尺寸打印机托盘中的纸张。因此,该文档编制器会产生大量打印输出。

以下是我的版本:

”==============================================================================================================================================================================
'用于访问的OutputCodeModules
Don Jewett,verion 2014.11.10
'从Access数据库导出以下项
“模块
'表单模块
'报告模块
'
'必须导入Access数据库并从中运行
'============================================================'
选项显式
选项比较数据库
Private Const KEY_模块为String=“MODULES”
Private Const KEY_FORMS As String=“FORMS”
Private Const KEY_报告为String=“REPORTS”
作为布尔值的私有m_bCancel
作为字符串的专用m_慢路径
'------------------------------------------------------------'

“>>>>>>使用F5或F8运行此操作如何运行?我不是一个容易接近的人。。。抱歉,这只适用于模块代码-我如何获取表单和报告?@articpenguin我不知道这是否足以满足您的需要,但我想试试。可以对其他数据库对象(如窗体和报表)使用undocument SaveAsText方法。你可以在Patrick给你的链接上找到更详细的信息。我使用了我提供的方法,通过在窗体上的命令按钮的单击事件调用它。@我在另一篇文章中添加了关于使用VBE的注释@HansUp SaveAsText将为您提供所有内容,包括控件。为什么您只需要代码?我想使用grep和其他文本工具来查找模式和死代码。我不是access开发人员,也不习惯使用这种原始工具。我觉得有趣的是,你可以将access称为“原始”,然后使用grep,根据定义,grep是一种围绕UNIX哲学设计的工具,它创建的是小的,甚至是“原始的”做一件事很好的程序,然后可以链接在一起执行复杂的操作。如果你能告诉我如何找到查询、调用层次结构、函数等的所有引用,那么我就不必这么做了。我并不是说grep是一种新东西——只是Access没有给我提供VS或Eclipse的工具?在可访问的范围内做这件事并不难。但是,如果您真的想知道函数在哪里使用,您不能将搜索仅限于代码,因为它可以用作窗体或报表中的表达式,由宏中的运行码调用,用作工具栏/菜单的操作,甚至可以在切换板表中使用。通过限制自己在代码上进行grep,您将不知道是否收到了正确的答案。即使在所有对象上保存一个文本也不行,因为其中一些对象不能以那种方式导出。这个答案对我来说最有效,即使有一些语法问题。我能够得到我需要的文本以便grep。