CN112328214A - 一种vba软件编程框架系统、方法及电子设备 - Google Patents

一种vba软件编程框架系统、方法及电子设备 Download PDF

Info

Publication number
CN112328214A
CN112328214A CN202011111261.2A CN202011111261A CN112328214A CN 112328214 A CN112328214 A CN 112328214A CN 202011111261 A CN202011111261 A CN 202011111261A CN 112328214 A CN112328214 A CN 112328214A
Authority
CN
China
Prior art keywords
interface
data
module
class
vba
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011111261.2A
Other languages
English (en)
Inventor
郑自然
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Normal University
Original Assignee
Shandong Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Normal University filed Critical Shandong Normal University
Priority to CN202011111261.2A priority Critical patent/CN112328214A/zh
Publication of CN112328214A publication Critical patent/CN112328214A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种VBA软件编程框架系统及方法,所述系统包括在VBA的编程环境下构建的数据类模块、界面类模块和控制类模块;数据类模块包括数据的属性定义、与数据源表格相关的操作代码以及与数据相关的统计信息;界面类模块包括对界面进行的操作代码;控制类模块根据数据类模块和界面类模块中的方法进行组合完成任务,且控制类模块中的方法与界面表格中的按钮链接;本公开对于界面操作及界面和数据的交互操作分别由界面类模块和控制类模块完成,两个模块与数据源表格没有直接耦合,当数据的位置和格式出现了变动,两个模块的代码都不需要变动,降低了修改代码而引入新的错误的几率和数量,极大的降低了开发和维护的工作量,提高了工作效率。

Description

一种VBA软件编程框架系统、方法及电子设备
技术领域
本公开涉及编程框架设计技术领域,特别涉及一种VBA软件编程框架系统、方法及电子设备。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术,并不必然构成现有技术。
VBA(Visual Basic for Applications)是一种内嵌于微软Office软件中的宏编程语言。通过该语言可以在Office软件,比如Excel软件中构造功能强大的应用软件。
但是本公开发明人发现,由于VBA语言不具备高级语言的一些特性,同时编程的全部过程都在Excel软件的内置环境中,因此对于代码的管理,系统的维护都较其他编程语言更为困难。特别是对于较为复杂的应用程序,对于应对需求改变,一些较为成熟的软件工程中的框架和模式都无法在VBA中实现,从而会出现开发和维护困难的情况。
假设有一个表格中按钮的任务是根据界面中的信息查询一个记录并显示出来。对于一般方法,会对这个按钮添加一个一般模块(非类模块),然后在这个模块中实现对数据源的查询和对界面的显示的操作。假设整个应用程序中含有多个按钮,则每个按钮都按这种方式实现。此时,如果数据源出现了变动,例如添加了一列使得数据的地址产生了变化,或者修改了数据源的一些格式,那么则对于这种一般方法,需要在每个按钮对应的模块中修改与数据源相关的所有代码,导致开发和维护的困难程度增加。
发明内容
为了解决现有技术的不足,本公开提供了一种VBA软件编程框架系统、方法及电子设备,对于界面操作及界面和数据的交互操作分别由界面类模块和控制类模块完成,两个模块与数据源表格没有直接耦合,当数据的位置和格式出现了变动,两个模块的代码都不需要变动,降低了修改代码而引入新的错误的几率和数量,极大的降低了开发和维护的工作量,提高了工作效率。
为了实现上述目的,本公开采用如下技术方案:
本公开第一方面提供了一种VBA软件编程框架系统。
一种VBA软件编程框架系统,包括在VBA的编程环境下构建的数据类模块、界面类模块和控制类模块;
数据类模块,被配置为:包括数据的属性定义、与数据源表格相关的操作代码以及与数据相关的统计信息;
界面类模块,被配置为:包括对界面进行的操作代码;
控制类模块,被配置为:根据数据类模块和界面类模块中的方法进行组合完成任务,且控制类模块中的方法与界面表格中的按钮链接。
作为可能的一些实现方式,待编程的应用程序包含至少一个用户界面和至少一个数据源表格。
作为可能的一些实现方式,所述用户界面为在Excel内部设计的界面,包括在表格中直接画的界面或者是在开发界面中画的界面;所述数据源表格为在Excel表格中存储的需要操作或者查询的数据。
作为可能的一些实现方式,数据相关的功能在数据类模块中作为方法实现,所需信息的显示功能在界面类模块中作为方法实现。
作为可能的一些实现方式,数据类模块与界面类模块基于数据类型的定义进行编码,且数据类模块和界面类模块之间不产生相互调用。
作为可能的一些实现方式,界面类模块和控制类模块数据源表格不存在直接耦合。
作为可能的一些实现方式,当待编程的应用程序含有复杂的界面时,对界面中的元素进行分类并建立不同的界面类模块,对于控制逻辑复杂的应用程序,对控制进行分类并建立不同的控制类模块。
作为进一步的限定,一个控制类模块对应多个数据类模块和界面类模块,一个控制类模块及其对应的数据类模块和界面类模块共同完成一项逻辑任务。
本公开第二方面提供了一种VBA软件编程方法。
一种VBA软件编程方法,包括以下步骤:
在VBA的编程环境下建立三个类模块,分别为数据类模块、界面类模块和控制类模块;
将所有对数据源的操作的代码放到数据类模块;
当数据的位置和格式出现变动时,在数据类模块中进行代码的修改和测试;
对于界面操作由界面类模块完成,界面和数据的交互操作由控制类模块完成;
界面类模块和控制类模块与数据源表格均没有直接耦合,当当数据的位置和格式出现变动时,界面类模块和控制类模块的代码都无需变动。
本公开第三方面提供了一种电子设备,其特征在于,包括本公开第一方面所述的VBA软件编程框架系统。
与现有技术相比,本公开的有益效果是:
1、本公开所述的系统、方法或电子设备,将所有对数据源的操作的代码放到数据类模块,对数据操作的代码进行了一定的组织,如果数据的位置和格式出现了变动只需要在这个模块中进行修改和测试,使得修改和测试更加方便和定位。
2、本公开所述的系统、方法或电子设备,对于界面操作及界面和数据的交互操作分别由界面类模块和控制类模块完成,两个模块与数据源表格没有直接耦合,因此当数据的位置和格式出现了变动时,两个模块的代码都不需要变动,这样就会降低修改代码而引入新的错误的几率和数量;而当应用程序变得更为复杂的时候,修改和测试会更加频繁,使用该框架的优势会更加明显。
3、本公开所述的系统、方法或电子设备,通过建立三种VBA类模块来将数据和界面的操作分离,从而当数据在变动时不会对界面的操作造成影响;反之,当界面出现变动时不会影响数据相关的代码;这种解除代码耦合的方式对于较为复杂的VBA应用程序可以带来代码维护和管理上的便捷;对于软件需求的变化应对更为方便和有效。
本公开附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为本公开实施例1提供的框架系统的结构图。
图2为本公开实施例1提供的数据源示例。
图3为本公开实施例1提供的界面示例。
图4为本公开实施例1提供的扩展的框架系统的结构示意图。
具体实施方式
下面结合附图与实施例对本公开作进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
实施例1:
本公开实施例1提供了一种基于VBA中类模块的编程框架系统,该框架系统主要针对一类使用Excel表格作为数据原,使用嵌入表格(或窗口控件)作为交互界面的应用程序。
该框架系统的目的是将针对数据和界面的操作代码分配到不同的类模块,同时使用另外一个模块来将这两个模块结合起来。通过这种对操作的分离,可以降低将数据代码和界面代码的耦合性,降低代码更新和维护的复杂度。
本实施例所述的框架系统针对的是一类Excel应用程序,即使用到界面和需要访问数据表格的应用程序。因此这里假设应用程序至少包含一个用户界面和一个数据源表格。这里的界面是在Excel内部设计的界面,包括在表格中直接画的界面或者是在开发界面中画的界面。这里的数据源表格是指在Excel表格中存储的需要操作或者查询的数据,可以是任何在表格中出现的任何数据。
详细的,包括以下内容:
首先,在VBA的编程环境下建立三个类模块,分别为数据类模块、界面类模块和控制类模块,其中数据类模块定义了数据的属性。例如一条通讯类数据可能的属性为人名、地址、电话号码等。
其次,将所要实现的功能进行分离。例如,如果想将某个数据属性显示在界面上,则把该步骤分解为两个步骤:(1)从数据源表格中提取数据,存储为前一步定义的数据对象。这里的存储是在程序的内部内存而不是表格;(2)将该存储的数据对象显示到交互界面中。
反映到代码中,具体的分解步骤是将数据相关的功能在数据类模块中作为方法实现,将所需信息的显示功能在界面类模块中作为方法实现。
在实现过程中,数据类模块包含数据的定义、与数据源表格进行操作代码、与数据相关的信息统计功能;而不包含与界面相关的任何操作。界面类包含对界面进行的操作比如对数据的显示;而不包含与数据源表格有关的操作。
虽然数据类模块与界面类模块都会基于数据类型的定义进行编码,但是两个模块之间不产生相互调用。两者之间的配合则使用控制类模块来完成。控制类模块主要使用前面两个模块中的方法进行组合来完成最终需要完成的任务。同时控制类模块中的方法与界面表格中的按钮进行连接,从而完成系统的建立。
模块之间的关系如图1所示。其中实线为代码中的类模块,虚线为表格中的元素,箭头表示使用(或连接)关系。
下面通过一个实例来描述。假设有一组数据,编写一个应用程序通过数据的属性1来查询该数据并在界面显示其他属性。通过在界面输入属性1的值并按查找按钮来完成。下面介绍各个模块的主要代码。
下列代码为数据类模块相关代码。数据类模块名:DataType
Figure BDA0002728673620000071
Figure BDA0002728673620000081
代码对应的数据源表格如图2所示。注意图中的数据有四个属性,代码中只用了三个。
下列代码为界面类模块相关代码。
界面类模块名:InterfaceType
Figure BDA0002728673620000082
Figure BDA0002728673620000091
界面表格如图3所示。
下列代码为控制类模块相关代码。控制类模块名:ControllerType
Figure BDA0002728673620000092
Figure BDA0002728673620000101
最后在按钮所在的页面对按钮添加宏代码
Figure BDA0002728673620000102
前面的示例只有一种数据类型,即含有属性1到属性5的数据。而在实际应用程序中一般会出现多种数据类型,如果使用该框架那么应该为每个数据类型建立数据类的模块。
对于界面同理,如果程序含有较为复杂的界面,应该对界面中的元素进行分类并建立不同的界面类。同理,对于控制逻辑复杂的应用可以对控制进行分类,并根据一定的标准进行分类。
如图4所示,数据类模块和界面类模块各有5个,控制类有两个。其中控制类1联合箭头所指向的数据类和界面类用来完成一项大的逻辑任务,对于控制类2同理,这里不再赘述。
在界面类代码的8到10行,能看到这里仍然使用了数据类中的属性,即DataAttribute1到DataAttribute3。虽然这里数据类和界面类出现了耦合,但这是基于数据类的定义。而对于数据的定义应该属于系统概念设计阶段的任务。对于这种系统概念的变化,对于任何代码都不可能不出现改动,因此这里的耦合属于必要的。另一方面,这种耦合没有出现与表格相关的操作,因此对于数据源表格或位置的变动不会牵动界面类的修改。
实施例2:
本公开实施例2提供了一种VBA软件编程方法,包括以下步骤:
在VBA的编程环境下建立三个类模块,分别为数据类模块、界面类模块和控制类模块;
将所有对数据源的操作的代码放到数据类模块;
当数据的位置和格式出现变动时,在数据类模块中进行代码的修改和测试;
对于界面操作由界面类模块完成,界面和数据的交互操作由控制类模块完成;
界面类模块和控制类模块与数据源表格均没有直接耦合,当当数据的位置和格式出现变动时,界面类模块和控制类模块的代码都无需变动。
实施例3:
本公开实施例3提供了一种电子设备,包括实施例1所述的VBA软件编程框架系统。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种VBA软件编程框架系统,其特征在于,包括在VBA的编程环境下构建的数据类模块、界面类模块和控制类模块;
数据类模块,被配置为:包括数据的属性定义、与数据源表格相关的操作代码以及与数据相关的统计信息;
界面类模块,被配置为:包括对界面进行的操作代码;
控制类模块,被配置为:根据数据类模块和界面类模块中的方法进行组合完成任务,且控制类模块中的方法与界面表格中的按钮链接。
2.如权利要去1所述的VBA软件编程框架系统,其特征在于,待编程的应用程序包含至少一个用户界面和至少一个数据源表格。
3.如权利要去1所述的VBA软件编程框架系统,其特征在于,所述用户界面为在Excel内部设计的界面,包括在表格中直接画的界面或者是在开发界面中画的界面;所述数据源表格为在Excel表格中存储的需要操作或者查询的数据。
4.如权利要去1所述的VBA软件编程框架系统,其特征在于,数据相关的功能在数据类模块中作为方法实现,所需信息的显示功能在界面类模块中作为方法实现。
5.如权利要去1所述的VBA软件编程框架系统,其特征在于,数据类模块与界面类模块基于数据类型的定义进行编码,且数据类模块和界面类模块之间不产生相互调用。
6.如权利要去1所述的VBA软件编程框架系统,其特征在于,界面类模块和控制类模块数据源表格不存在直接耦合。
7.如权利要去1所述的VBA软件编程框架系统,其特征在于,当待编程的应用程序含有复杂的界面时,对界面中的元素进行分类并建立不同的界面类模块,对于控制逻辑复杂的应用程序,对控制进行分类并建立不同的控制类模块。
8.如权利要去7所述的VBA软件编程框架系统,其特征在于,一个控制类模块对应多个数据类模块和界面类模块,一个控制类模块及其对应的数据类模块和界面类模块共同完成一项逻辑任务。
9.一种VBA软件编程方法,其特征在于,包括以下步骤:
在VBA的编程环境下建立三个类模块,分别为数据类模块、界面类模块和控制类模块;
将所有对数据源的操作的代码放到数据类模块;
当数据的位置和格式出现变动时,在数据类模块中进行代码的修改和测试;
对于界面操作由界面类模块完成,界面和数据的交互操作由控制类模块完成;
界面类模块和控制类模块与数据源表格均没有直接耦合,当当数据的位置和格式出现变动时,界面类模块和控制类模块的代码都无需变动。
10.一种电子设备,其特征在于,包括权利要求1-8任一项所述的VBA软件编程框架系统。
CN202011111261.2A 2020-10-16 2020-10-16 一种vba软件编程框架系统、方法及电子设备 Pending CN112328214A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011111261.2A CN112328214A (zh) 2020-10-16 2020-10-16 一种vba软件编程框架系统、方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011111261.2A CN112328214A (zh) 2020-10-16 2020-10-16 一种vba软件编程框架系统、方法及电子设备

Publications (1)

Publication Number Publication Date
CN112328214A true CN112328214A (zh) 2021-02-05

Family

ID=74313233

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011111261.2A Pending CN112328214A (zh) 2020-10-16 2020-10-16 一种vba软件编程框架系统、方法及电子设备

Country Status (1)

Country Link
CN (1) CN112328214A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116382659A (zh) * 2023-05-29 2023-07-04 珠海乐图软件有限公司 一种无代码开发平台的数据定义方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104423954A (zh) * 2013-09-04 2015-03-18 深圳市康必达智能科技有限公司 一种kemcs控制系统软件
CN106842982A (zh) * 2016-12-23 2017-06-13 广东技术师范学院 一种基于vba多软件协同仿真系统
US20180157468A1 (en) * 2016-12-03 2018-06-07 Thomas STACHURA Spreadsheet-Based Software Application Development

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104423954A (zh) * 2013-09-04 2015-03-18 深圳市康必达智能科技有限公司 一种kemcs控制系统软件
US20180157468A1 (en) * 2016-12-03 2018-06-07 Thomas STACHURA Spreadsheet-Based Software Application Development
CN106842982A (zh) * 2016-12-23 2017-06-13 广东技术师范学院 一种基于vba多软件协同仿真系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116382659A (zh) * 2023-05-29 2023-07-04 珠海乐图软件有限公司 一种无代码开发平台的数据定义方法
CN116382659B (zh) * 2023-05-29 2023-09-01 珠海乐图软件有限公司 一种无代码开发平台的数据定义方法

Similar Documents

Publication Publication Date Title
US8972857B2 (en) Generating user help information for customized user interfaces
CN102855178A (zh) 一种单元测试中生成Mock库的方法和装置
CN107729063A (zh) 软件开发工具包的调用方法、装置及终端
CN110069248A (zh) 接口数据的调用方法、装置、设备及计算机可读存储介质
CN103077192A (zh) 一种数据处理方法及其系统
CN112328214A (zh) 一种vba软件编程框架系统、方法及电子设备
CN102063367B (zh) 针对当机程序的离线分析方法及装置
CN109254989B (zh) 一种基于元数据驱动的弹性etl架构设计的方法及装置
CN110795024A (zh) 一种基于xml的保护设备通用人机交互系统及方法
CN112604273B (zh) 数据驱动的游戏系统功能加载方法、设备及存储介质
CN101894317B (zh) 数据变化驱动业务逻辑的方法和系统
CN114371845A (zh) 表单生成方法及装置
US20090024424A1 (en) System and method for dynamic linking of business processes
CN101335651B (zh) 一种终端仿真测试系统及使用该系统扩充终端的方法
CN106648338A (zh) 编辑数据的方法和装置
CN112233498B (zh) 一种表格式可编程显示控制器
JP4939007B2 (ja) システム設計支援プログラム
CN113687827A (zh) 基于微件的数据列表生成方法、装置、设备及存储介质
CN110989995A (zh) 基于开源深度学习框架的人工智能应用的处理方法及系统
CN115599355B (zh) 一种面向对象大数据处理方法
CN108553899A (zh) 一种即点即玩游戏的开发装置及其方法
CN111581357B (zh) 一种基于专项辅助核算的处理方法、装置、设备及介质
CN108090063A (zh) 一种可配置的组件数据访问方法及装置
CN115185602A (zh) 一种基于插件容器实现数据交换动态配置的方法
CN116501381A (zh) 适用于多场景系统的联动方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination