精华内容
下载资源
问答
  • 在office的高级应用中,域、控件、com组件、宏和VBA是必须要知道的几个术语,为什么会产生这么多术语,是为了自动化生产,是人的懒惰带来了生产力的提高。这5个对象的功能也可以理解为是从小到大的排列。域由内置的...

    在office的高级应用中,域、控件、com组件、宏和VBA是必须要知道的几个术语,为什么会产生这么多术语,是为了自动化生产,是人的懒惰带来了生产力的提高。这5个对象的功能也可以理解为是从小到大的排列。域由内置的域代码产生,能够自动产生一些关联,比如插入的文档目录就是一个域。

    域代码位于用特殊方法插入的花括号({ })中。
      域的格式:{ Name [参数] [\Switches ] }
      说明:Name :表示域的名称。Word 中有70 多个域。
      参数 :某些域有参数,某些没有。某些域带不同的参数,作用就不同。
      \Switches:域开关。分通用开关和只能用于某个域的特有开关两种。

      注意:域的名称、参数和开关之间是一个空白字符。“[ ]”表示可以加参数或开关,也可以不要。
      例:{ Date \@ "yyyy年M月d日" }   显示为:2010年2月5日
      第 { Page } 页                显示为:第 8 页
      第 { Page \* roman } 页        显示为:第 viii 页

    控件

    控件是一个可视化组件,是一个小图标,小图标集合了一些命令,在office中控件分成了两类窗体控件和active X控件。active X控件也是VBA的一个子程序,可以查看代码。com(component)组件是未可视化的,在office里com加载项(component object model是组件对象模型)可以理解为一个外部插件。

    宏和VBA

    下面说一下宏和VBA。宏在C语言中是替换,用#define定义,在这里也具有替换的意思,是一系列excel能够执行的VBA语句,一组命令(即操作)的集合,可以录制,或者可以直接编写宏,宏在vba中是子程序,所以以sub(subrountine)关键字标识符开头,以sub end关键字标识符结束。

    直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),可以认为 VBA 是非常流行的应用程序开发语言VASUAL BASIC 的子集.实际上VBA是"寄生于"VB应用程序的版本.VBA和VB的区别包括如下几个方面:

    1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化

    2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.

    3. 要运行 VB 开发的应用程序,用户不必安装 VB,因为 VB 开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL.
    尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方
    案的大部分知识.

    * VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.

    * VBA可以称作EXCEL的"遥控器".

    VBA 究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.

    此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序.

    展开全文
  • windows 中提供了4个COM组件都可以进行数据采集。 Wininet WinHttp XmlHttp MSHTML https://msdn.microsoft.com/en-us/library/bb508515(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/hh801967(v=vs.85)...

    windows 中提供了4个COM组件都可以进行数据采集。

    Wininet

    WinHttp

    XmlHttp

    MSHTML

    https://msdn.microsoft.com/en-us/library/bb508515(v=vs.85).aspx
    https://msdn.microsoft.com/en-us/library/hh801967(v=vs.85).aspx

        Dim objMSHTML As New HTMLDocument
        Dim objDocument As HTMLDocument
    
        Dim FSO As New FileSystemObject
        Dim TS  As TextStream
    
        Set TS = FSO.OpenTextFile("c:\dkfj.html", ForWriting, True, TristateTrue)
        TS.write T.GetChildTaskInfo("1432912514")
        TS.Close
    
        Set objDocument = objMSHTML.createDocumentFromUrl("C:\dkfj.html", "")
    
        Set FSO = Nothing

    MSXML

    Sub Macro1()
    
        Dim objMSHTML As New MSHTML.HTMLDocument
        Dim objDocument As MSHTML.HTMLDocument
        
        Set objDocument = objMSHTML.createDocumentFromUrl("http://hao123.com", "")
        
    End Sub

    转载于:https://www.cnblogs.com/boluoke/p/6044664.html

    展开全文
  • vba调用vs2005使用atl开发的com组件

    千次阅读 2014-12-24 20:17:02
    1、打开vba开发工具,添加ComDll组件的引用 通过 工具 -- 引用 打开引用管理器。 2、调用代码 Private WithEvents mComDll As ComDllExample Private Sub mComDll_Event1(ByVal arg1 As Single)...

    1、新建工程

    New -- Project -- ATL Project

    勾选Allow merging of proxy/stub code


    2、添加接口

    右键工程 --  Add  --  ATL Simple Object





    3、添加接口函数

    类视图中,右键接口 --  Add  --  Add Method


    4、添加事件

    类视图中,展开类型库,右键连接点接口  --  Add  --  Add Method


    5、实现连接点事件





    点击确定后,会生成事件代码。

    6、触发事件。

    STDMETHODIMP CComDllExample::Method1(LONG arg1)
    {
    	// TODO: Add your implementation code here
    	Fire_Event1(2.0);
    	return S_OK;
    }
    
    在Method1中调用一下生成的Fire_Event1函数。

    7、编译工程。


    VBA中调用生成的组件

    1、打开vba开发工具,添加ComDll组件的引用

    通过 工具  --   引用 打开引用管理器。

    2、调用代码

    Private WithEvents mComDll As ComDllExample
    
    Private Sub mComDll_Event1(ByVal arg1 As Single)
        Debug.Print Str(arg1)
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Set mComDll = New ComDllExample
        mComDll.Method1 (20)
    End Sub
    

    需要注意的地方

    a)comdll接口函数参数类型要和VB兼容。  遇到过设置ULONG类型的参数,但是到VBA里面提示类型无法解析,改成LONG就好了。

    b)VB里面,使用WithEvents处理对象事件时,还需要单独set一下对象实例。





    展开全文
  • ——将EXCEL VBA代码移植到VB.NET .NET是微软公司在2002年推出的全新编程框架,支持多种语言应用程序开发。使用Visual Basic在Microsoft .NET Framework上编程,这就是Visual Basic.NET,简称VB.NET。 VB.NET是...

    ——将EXCEL VBA代码移植到VB.NET

    .NET是微软公司在2002年推出的全新编程框架,支持多种语言应用程序开发。使用Visual Basic在Microsoft .NET Framework上编程,这就是Visual Basic.NET,简称VB.NET。

    VB.NET是Microsoft Visual Studio .NET组件中的重要组成部分,是VB6.0的后续版本,VB.NET仍使用VB的基本语法,二者几乎在90%以上保持相似或相同,虽然Excel VBA代码不能完全像移植到VB6.0那样直接移植到Visual Basic 2010,但大多数情况下,移植还是相当简单的。

    一、Excel程序的对象模型。

    在 Excel 中,Excel 程序对象(Application)是顶级的对象,往下依次是工作簿对象(Workbook)、工作表对象(Worksheet)和单元格对象(Range)。只有当打开了 Excel 程序(Appliation 对象),才能创建或打开工作簿(Workbook 对象),才能选中某个工作表(Worksheet 对象),以及对某个单元格区域(Range 对象)进行操作。

    众多个工作簿,若干张工作表,数不清的单元格,要在“Book1”工作簿中的“Sheet1”工作表中的“A1”单元格内录入内容“A1”,必须像叙述家庭住址一样把各个需引用的对象关系从大到小的顺序叙述清楚。如下代码:

    1 Sub Rng2()
    2  Application.Workbooks("Book1.xls").Worksheets("Sheet1").Range("A1").Value = "A1"
    3 End Sub

    Application对象代表Excel程序,属于最顶层对象,通常可以省略,上述代码亦可修改为:

    1 Sub Rng3()
    2  Workbooks("Book1.xls").Worksheets("Sheet1").Range("A1").Value = "A1"
    3 End Sub

    在 Excel VBA 中,引用或操作对象时允许省略其上级对象,但并非表示该对象的上一级的对象不存在。

    二、Visual Basic.NET编写处理Excel表格代码(即代码移植)

    1、声明对象变量时需要前置“Excel”,例如:

    Dim VbApp As Excel.Application '定义Excel对象
    
    Dim VbBook As Excel.Workbook '定义工作簿对象
    
    Dim VbSht As Excel.Worksheet '定义工作表对象
    
    Dim VbRng As Excel.Range '定义单元格对象

    2、不能直接使用“Application”(即Excel.exe进程),而需要一个变量调用。

    首先在模块中声明一个变量VbApp:

    Public VbApp As Excel.Application '定义Excel对象

    然后对变量VbApp赋值:

    (1)、引用Excel.exe进程

    通在Excel中引用DLL动态链接库Excel程序都是已经打开了的,即通过任务管理器查看进程可以看到Excel.exe进程,我们需要处理已打开Excel文档,必须引用当前Excel.exe进程。代码如下:

    VbApp = GetObject(, "Excel.Application") '引用当前Excel.exe进程,确保已打开Excel程序否则报错

    (2)、创建Excel.exe进程

    通过下列语句就可以创建新的Excel.exe进程了,Visual Basic .Net可以通过对此进程的处理来操作Excel表格:

    VbApp = New Excel.Application '创建新的Excel.exe进程

    在后续的应用中可调用变量VbApp来代替“Application”,如:

    当执行完创建一个新的Excel.exe进程语句后,通过任务管理器查看进程就发现多出Excel.exe进程,当此时Excel程序的运行界面并没有显示,在此语句后加入以下代码,Excel的运行界面就显示出来了:

    VbApp.Visible = True '显示Excel程序的运行界面

    Excel运行界面虽然显示,但其中并没有表格,下列代码是在Excel程序中创建一个新表格:

    VbApp.Workbooks.Add

    3、所有对象必须显示声明,表示它是Excel的对象。

    在 Excel VBA 中,引用或操作对象时允许省略其上级对象,但把代码移植到VB.NET中,我们必须使用完整的表达式精确表示某个对象。例如:

    Visual Basic .Net处理Excel表格是通过引用(或创建)的Excel.exe进程来实现的。引用(或创建)的Excel.exe进程对应上述代码中的VbApp,即变量VbApp代表Excel 程序对象(Application)。下面代码给工作簿Book1.xls的第1张工作表的“A1”单元格赋值“A1”:

    VbApp. BookExcel.Worksheets("Book1.xls").Range("A1").Value = "A1"

    当编辑完Excel表格后,可以通过下列语句就关闭Excel表格,并销毁Excel.exe进程:

    VbApp. BookExcel.Close ( )'关闭Excel表格
    
    VbApp.Quit ( )'销毁Excel.exe进程
    
    VbApp = Nothing '释放对象变量

    可见,我们在Excel编写VBA代码时严格使用完整的表达式精确表示对象,移植代码时使用变量VbApp来调用“Application”,即可。

    三、VBA与VB.NET语法变通

    随着VB.NET的引入,VB迎来了自发布以来最大的变革,整个运行库模型变成了一个新的公共语言运行库(CLR)环境,语言也从基于对象变成面向对象,对熟悉Excel VBA的程序员移植封装代码带来了困难。不仅需要掌握VB.NET语法,还需要理解并运用VB.NET提出的新功能、概念和观点。当然也需要掌握.Net框架,理解CLR(Common Language Runtime,通用语言进行时)。在移植代码时要特别以下语法变化。

    1、数据类型

    用于存储任意类型数据的数据类型Variant被Object替代;用于存储大浮点数的数据类型Currency被Decimal替代,并支持更高数度;在VBA中可以在声明字符 串时指定其长度,而VB.NET不支持固定长度字符串。

    2、变量赋值

    在VBA中不能同时声明和初始化变量,而VB.NET则支持声明的同时初始化变量。例如:

    Dim StrName As String
    
    StrName = "VBA封装"

    在VB.NET中可以二合一:

    Dim StrName As String = "VBA封装"

    在VBA中对对象变量赋值必须使用Set语句,而在VB.NET中已取消Set语句,也就是说对象变量的赋值与普通变量一样。如:

    ExcelVBA初始化对象变量: Set Rng=Nothing 

    而在VB.NET中不需要Set语句: Rng=Nothing 

    3、数组

    VBA数组下界可以自定义,如以下语句声明了下界为1、上界为10共10个元素的数组Arr:

    Dim Arr(1 To 10) As String

    而在VB.NET中,数组下界总是从0开始,若使用Dim Arr(1 To 10) As String声明数组将会报错。

    在VBA中,可以指定数组的长度,如:

    Dim Arr(2) As Integer

    这里的Arr数组长度是固定的,不能用ReDim语句改变长度。VB.NET不支持固定长度数组,所以ReDim总是有效。

    在VBA中,ReDim用于初始化动态数组,而在VB.NET中,ReDim关键字的使用略有变化,第一个变化是:必须先定义该数组实例,不能用ReDim语句声明数组;第二个变化是:ReDim只能用于改变数组长度,不能改变数组的维数。在VB.NET中动态数组声明时特别注意,如:

    Dim Arr() As Integer '声明一维动态数组

    上面的声明只能创建一个一维动态数组,若要声明一个二维动态数组,上述声明应包含一个逗号,如:

    Dim Arr(,) As Integer '声明二维动态数组

    4、变量作用域

    在VBA中,变量作用域有:过程级、模块级和全局。在VB.NET中新增了块作用域,也称为结构作用域。

    结构是由两条语句而不是一条语句组成的编码结构,如If…Then决策结构、For…Next循环结构。在VB.NET中,如果变量是在结构中声明的,则其作用域限定在结构内,该变量在遇到相应的Dim语句后才被创建,在结构结束处被销毁。如:

    1 If Flag = True Then
    2 
    3     Dim IntNum As Integer
    4 
    5 End If

    5、循环语句

    VB.NET增加了Continue关键字,使用Continue For语句,在For…Next循环结构中能够在到达Next语句之前进入下一次For…Next循环;当然也可以使用Continue Do语句,在Do…Loop循环结构中能够在到达Loop语句之前进入下一次Do…Loop循环。

    以上语法变化是必必须掌握的,当然我们还需要逐渐掌握一些新旧语法替代,如:虽VB.NET还支持数据类型转换函数,但在VB.NET应力争避免使用,处理数据类型转换的更通用方法是使用System.Convert类;Excel VBA是通过On Error语句来处理错误,这种处理方法在VB.NET中仍得到支持,但已被摒弃,强烈建议使用Try…Catch…Finally结构来处理异常(错误);VB.NET仍支持老式MsgBox()函数,但不建议使用,而是改用MessageBox.Show()函数。

    以上介绍并不能使读者了解VB.NET语法的方方面面,如果想进一步了解必须阅读一些专业书籍。如:

    《Visual Basic 2010入门经典(中文版)》——[美] James Foxall 著、梅兴文 译、人民邮电出版社。

    《Visual Basic 2010 & .NET 4 高级编程(第6版)》——(美) Billy Hollis 等著、彭珲 余科洋 译、清华大学出版社。

    转载于:https://www.cnblogs.com/zyjq/p/6659144.html

    展开全文
  • 为了保护自己辛辛苦苦编写的Excel VBA代码不被盗用,我们需要对Excel VBA代码进行加密。通常的做法是利用给工程设置密码的方法实现加密,对于这类加密方法,由于存在安全度低、易破解等问题,因此往往起不到应有的...
  • C++调用COM组件导出PPT中的图片 最近由于项目需求研究MFC,利用COM组件将PPT中的各种对象导出,这篇文章是对几天以来查阅各种资料的记录。 微软官网没有C++的开发文档只有VBA和C#的,很多类和方法两个文档单独看的话...
  • VB/VBS的COM组件调用。 在历史较长且比较有名的软件中,有很多都支持类VB/VBS/VBA语法,由此可见当年微软的威势!特别是VBS,如果没有了对COM/OCX组件的调用能力,立马就残了。废话少说,上代码: 调用COM组件: ...
  • ava调用com组件操作word使用总结(jacob) 简单描述 在此处输入简单摘要 特别声明:使用java-com技术可以完成任何VBA可以完成的office文档操作;  一、准备工作  先了解一下概念,JACOB 就是 JAVA-COM Bridge的...
  • python+COM组件可以实现在VBA中所有能做的事情,包括调用Excel函数。在使用方式上,python和VBA大同小异,在一些细节上会有些差异。比如,代码调用了一个Excel函数来获取当前表格内的行数,可以看到其调用形式与VB.....
  • 今天遇到的一个课题是:用VS2008编写一个COM组件,并在Excel中用VBA调用这个COM组件实现一些功能.以下是示例代码: 1,创建一个Class Library Project.并编写如下代码(如果选择[New Item]->[Com Class],则不需要定义...
  • ava调用com组件操作word使用总结(jacob)简单描述在此处输入简单摘要特别声明:使用java-com技术可以完成任何VBA可以完成的office文档操作;一、准备工作先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化...
  • php调用com组件,返回的对象其属性和方法与你调用的具体com组件相关,以word.application为例,直接百度word.application即可找到微软的官方文档,如下: ...
  • 使用COM组件实现对Excel文件的操控

    千次阅读 2015-08-09 15:22:37
    1 使用COM组件操控Excel的优势和缺点 优势: 提供了完整的Excel操控能力。可以方便的进行复杂操作。 提供了对Excel文件的底层操作,工作效率高。 和VBA方式相比可以脱离特定的Excel文件进行使用。 缺点: ...
  • com的复杂性,有点超出我的想象。...Freebasic编译com,一个很明显的意义,就是在64位中,为VBA提供类库。基础知识:1、数据类型的转换:VBA的string全称是BSTR。这是VBA独有。VBA的数组,全称safeArray。vba的var...
  • 本人用C# 添加 excel com 组件的引用.. 然后new出一个对象之后.. 对像. 后面出来了老多方法跟属性. 在哪里能找到这些方法及属性的详细用法及说明. 我查了本地安装的msdn帮助文档,里面搜索出来的资料...
  • 组件对象模型 (COM) 外接程序提供一种方法,该方法可以将通用代码集中到一个已编译的动态链接库 (DLL) 中,您可以很容易地在任何 Office 应用程序中实现该库(例如,您可以从 Excel、Word 和 Microsoft Access 访问 ...
  • VBA中访问Web Service

    2008-10-27 16:02:00
    很多朋友都对于VBA或者ASP访问Web Service很感兴趣,实际上我之前也曾... VBA程序中是要用到SOAP Toolkit这个COM组件库的,目前的版本为3.0 下载地址http://www.microsoft.com/downloads/details.aspx?FamilyId=C...
  • vba调用c#dll

    2016-03-17 16:53:00
    本文阐述如何用C#创建COM组件,并能用VB6.0等调用。附有完整测试通过的代码。该功能总体看来很简单,实际值得注意的地方还是挺多。因为很少有人写这类文章,有些代码也是转来转去的不全,有些甚至让人误入歧途。后来...
  • Access 2007 VBA宝典 4/4

    2012-03-31 08:36:49
    第2部分 编写VBA代码,在Office组件之闻交换数据  第5章 使用Access数据  5.1 在Access 2007中使用旧格式的数据库  5.2 解疑对象模型组件的引用  5.2.1 (新/旧)DAO对象模型   5.2.2 ADO对象模型  5.3...
  • Access 2007 VBA宝典 2/4

    2012-03-31 08:22:16
    第2部分 编写VBA代码,在Office组件之闻交换数据  第5章 使用Access数据  5.1 在Access 2007中使用旧格式的数据库  5.2 解疑对象模型组件的引用  5.2.1 (新/旧)DAO对象模型   5.2.2 ADO对象模型  5.3...
  • Access 2007 VBA宝典 3/4

    2012-03-31 08:31:46
    第2部分 编写VBA代码,在Office组件之闻交换数据  第5章 使用Access数据  5.1 在Access 2007中使用旧格式的数据库  5.2 解疑对象模型组件的引用  5.2.1 (新/旧)DAO对象模型   5.2.2 ADO对象模型  5.3...
  • Access 2007 VBA宝典 1/4

    2012-03-31 08:12:09
    第2部分 编写VBA代码,在Office组件之闻交换数据  第5章 使用Access数据  5.1 在Access 2007中使用旧格式的数据库  5.2 解疑对象模型组件的引用  5.2.1 (新/旧)DAO对象模型   5.2.2 ADO对象模型  5.3...
  • PPT vba从Execl 拷贝图表

    2019-09-23 18:53:53
    在PPT 需要引用Execl的COM组件 Dim wkb As Workbook Sub Change() Set wkb = Workbooks.Open("D:\D2_月报基础数据.xlsx") Set PPSlide_name = ActivePresentation.Slides(9) ActiveWindow.View.G.....
  • Excel VBA add-ins

    2009-07-23 10:01:00
    没多久之前还说能不能把excel里的VBA代码组件化,弄个库,结果发现早就有人做这个东东了: http://www.add-ins.com/,人家可是早在1994年就 start business, specialize in custom macros for Microsoft® Excel®, ...
  • 三、利用FileSystemObject对象来处理文件 FileSystemObject对象模型,是微软提供的专门用来访问计算机文件系统的,具有大量的属性...FileSystemObject并不是VBA的一部分,它是以一个COM组件的形式提供的。因此,要...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 152
精华内容 60
关键字:

com组件vba