程时,所以的局部变量都需要重新初始化。然而,你可以在一个进程中,通过定义局部变量在整个代码周期中为静态变量,来保持局部变量的值,因此,这样可以固定它们的值。
在已经存在的模组中添加进程
1. 在项目浏览器中,双击ArcMap对象,ArcCatalog对象或是模组文件夹,然后选择一个模组的名称,通过点击“View Code ”按钮可以查看模组的试图是否属于激活状态。
2. 点击“插入”按钮,然后点击“进程”。 3. 在“名称”文本框中输入进程的名称。
4. 点击“类型”单选按钮,通过点击选择进程的类型:子进程,函数或是属性。 5. 点击“范围”单选按钮,选择是其范围是公有或是私有。
6. 声明所有局部变量为静态变量,检查“All Local variables as Statics”这个检测框。 7. 点击OK,VBA在一个进程里的函数框显示在输入代码的窗口里,这个函数框包括了你所添加进程的代码的起始行和最后一行的内容。 8. 在进程中输入代码。
关于进程的更多信息,可以在Microsoft Visual Basic在线帮助里获得参考。
添加用户模式
如果你想要自己的代码给用户提示信息,或者,当用户请求一个ArcGIS应用命令、工具或是对一些事件的回复时,你想要显示一些行为执行的结果,那么就要使用VBA的用户模式。用户模式提供一个联系,你可以利用这个联给一系列的集成控制提供入口。一些控制和UIControls很相似,它们都可以适用于特定对话框命令标签。有了这些控制,除了文本框和命令按钮以外,你还可以使用一些附加的控制。一个用户模式是一个包含用户接口控制的容器,比如命令按钮和文本框。一个控制是一个显示在一个用户模式上
的Visual Basic对象,它具有自己的属性,方法和事件。使用这些控制来接收用户的输入,显示输出,触发事件进程。同时也可以将该模式设置为模组的形式,这样用户必须在使用任何应用之前进行回复,或者也可以设置为非模型形式,这样当遇到接下来的代码时就会自动执行。
在用户模式下添加和启动编码
1. 在项目浏览器中,选择你想添加在一个用户模式里的项目。 2. 点击“插入”按钮,然后点击“UserForm”。
3. VBA插入一个用户模式在你的项目中,然后自动显示控制工具框。 4. 在工具框中选择你想添加给用户的控制工具。 5. 对用户模式或是上面的控制进行编码。
为了显示用户模式或是控制的代码窗口,可以双击用户模板或是各个控制。然后在事件和进程中选择你想出发的事件,然后可以在代码窗口的响应事件的代码区域内书写代码。或者直接在一个模组或类模组中插入一个进程,然后在进行编码。
如果想在ArcMap或是ArcCatalog期间里对一些行为做出回复时,引用它的“Show”方法,例如:
UserForm1.Show vbModeless 'show modeless
关于VBA项目管理的技术
依靠相关的技术可以使工作合理化,这样在ArcGIS应用VBA环境中的工作将更有效,从而减少了每次启动一个新任务而需要的工作量。
再次使用模组,类模组和用户模式
在普通模板,项目或是模板项目中添加一个已经存在的模组或是模式时,点击项目浏览器中的目标对象的名称,然后从“文件”菜单中选择“导入文件”。这样可以选择任意的VBA模组,用户模式或是类模组来添加一个复制的文件到你的项目中去。同样也可以从已有的项目中导出一些条目,从项目选择想要导入到项目浏览器的项目,从“文件”菜单中选择“导出文件”,然后添加到保存该文件的地方。导出一个项目并不意味着从项目中将其移走。
移动项目项目
当要移动一个项目时,肯定要从项目中将其删除。但是,如果该项目存在磁盘上时,这个行为并没有删除这个文件。在移走一个项目之前,要保证在其它模组和用户模式中保留的代码和已经移走的代码没有关系。要移走一个项目,首先在项目浏览器中搜索出该项目,然后从“文件”菜单中选择“移动名称”。在移动该项目前,将会被询问是否真的要导出该项目。如果在该对话框中选择“是”,则“导出文件”对话框就会打开。如果选择“否”,则VBA就删除了该项目。
保护代码
为了防止用户修改或是查看代码,可以锁住一个项目,模板项目或者甚至是Normal。当锁住一个项目时,必须在项目浏览器中设置一个在进入该项目前就能看见的密码。如果想要锁住一个项目,可以在项目浏览器中右击该项目,模板项目或是Normal,然后在出现的内容菜单中点击该属性项目。在属性对话框中,点击“保护”标签,并且选择“Lock Project for Viewing”。输入一个密码并且进行确认。最后,保存ArcMap 和ArcCatalog文件。这样,当再一次打开或是别人打开该文件时,该功臣就被锁住了。如果其他人想要查看或是编辑该项目时,必须输入相关密码才可以。
保存一个VBA项目
VBA项目被存储在一个作为基本模板的文件(*.mxt)中,这个文件或者是普通模板,或者是一个文档(*.mxd)。当用户从一个基本模板中创建一个新的ArcMap 文档时,该文档就会参考这个基本模板和它所以的项目。要保存ArcMap 文档和VBA项目时,从ArcMap 的“文件”菜单中选择“保存”或是从Visual Basic编辑器里的“文件”菜单中选择“保存为”这两个命令都可以将所有的项目和项目都保存在文件中。在保存好文件之后,它的文件名就会在浏览器中的项目名后面的括号里显示出来。如果要将该文档另存为一个模板,则从ArcMap 的“文件”菜单中选择“另存为”,而且特别指出ArcMap 模板为该文件的存储类型。
运行代码
当代码建立和完善后,你就可以在VBA里运行,这样可以检测和调试。这一部分讨论在设计阶段的Visual Basic编辑器里运行代码。关于运行和调试VBA程序,比如添加断点,添加注释,逐步执行等信息可以在Visual Basic在线帮助中查询。
在Visual Basic编辑器或是宏对话框中运行代码 1. 点击“工具”菜单,选择“宏” 2. 在宏列表中,点击想要运行的宏。
如果想要运行的宏不在该列表中,则必须保证已经选择了适当的项目:在宏对话框中的Normal,项目或是模板项目。私有的进程在任何菜单或是对话框中都不会出现的。
在Visual Basic编辑器中只运行一个进程
1. 在项目浏览器中,打开包含想要运行的进程的模组。 2. 在代码窗中,在该进程代码中点击一个插入点。
3. 点击“运行”菜单选择“运行 程序/用户模式”。只有光标标住的进程才会被执行。
完成代码的编辑
在代码编辑完之后,用户可以从ArcMap or ArcCatalog中运行该代码。通过选择“工具”菜单中的“宏”可以执行该过程。也可以将代码和一个命令或是工具联系起来,或者是在回复一个事件或是已经设置的其它方式下运行代码。
使用全局应用对象
Application和ThisDocument是全局系统变量的例子,当ArcMap运行时,这些变量可以被在VBA中的任意的模式或类所接受。当ArcMap打开文档时,这个变量是自动设置到当前文档中的。当VBA中的程序进入当前文档时,可以使用ThisDocument作为快捷键。这里有个使用Application或ThisDocument的例子 Dim pMxDoc as IMxDocument Set pMxDoc =Application.Document 'or
Set pMxDoc =ThisDocument
附件1:外文原文(复印件)
Visual Basic for Applications Development Environment
The Visual Basic Environment (General)
http://edndoc.esri.com/arcobjects/8.3/GettingStarted/VBASpecifics.htm
This topic discusses how to program in the VBA environment to control either ArcMap, ArcCatalog, or ArcScene by accessing the objects they expose. Your code manipulates the objects by getting and setting properties on their interfaces, such as setting the MaximumScale and MinimumScale of a Map's FeatureLayer; invoking methods on the interfaces, such as adding a vertex to a polyline; or setting a field's value. The code runs when an event occurs, for example, when a user opens a document, clicks a button, or alters data by modifying an edit sketch.
Before we learn the knowledge of Visual Basic for Application Development Environment, we firstly learn the conception of Visual Basic for Application. What is Visual Basic for Applications?
Microsoft Visual Basic for Applications (VBA) is part of the Microsoft Visual Basic family that also includes the Microsoft Visual Basic development system (Learning Edition, Professional Edition, and Enterprise Edition) and Visual Basic Scripting Edition (VBScript). VBA is an embeddable programming environment designed to enable developers to build custom solutions using the full power of Microsoft Visual Basic. Developers using applications that host VBA can automate and extend the application functionality, shortening the development cycle of custom business solutions.
What are the differences between Visual Basic, VBA, and VBScript? When would we use one over another?
Visual Basic is a stand-alone tool for creating separate software components, such as executable programs, COM components and ActiveX Controls, and is useful when you must build a specialized solution from scratch.