vba如何注册控件
2016年8月11日
作者: 来源:
Excel文件中如果有ActiveX控件如日期时间控件(Microsoft Date and Time Picker Control 6.0,简称DTP控件),在有些电脑上运行时会出现“无法装载这个对象,因为它不适于这台计算机”的提示。文件中的控件丢失,无法正常使用。 这是因为DTP控件没有注册引起的,解决办法是在能运行该控件的电脑中复制DTP控件的文件到目标电脑中进行注册。在VBE窗口中右键单击“工具箱”,选择“附加控件”,在“附加控件”对话框中选择DTP控件,对话框底部会显示控件的名称和文件所在的路径。 DTP控件的文件名为MSCOMCT2.OCX,在C盘的Windows\system32文件夹中,把该文件复制到目标电脑C盘的Windows\system32文件夹中,单击“开始”→“运行”,在“运行”对话框中键入“regsvr32 C:\Windows\system32\MSCOMCT2.OCX”,注册成功,DTP控件即能正常使用。 在Excel中可以使用程序代码进行自动注册,代码如下: #001 Sub regsvrs() #002 Dim SouFile As String #003 Dim DesFile As String #004 On Error Resume Next #005 SouFile = ThisWorkbook.Path & "\MSCOMCT2.OCX" #006 DesFile = "c:\Windows\system32\MSCOMCT2.OCX" #007 FileCopy SouFile, DesFile #008 Shell "regsvr32 /s" & DesFile #009 MsgBox "DTP控件已成功注册,现在可以使用了!" #010 End Sub 代码解析: Regsvrs过程将保存在同一目录中的MSCOMCT2.OCX文件复制到电脑的文件夹中,使用Shell函数注册DTP控件。 第4行代码,错误处理语句,用于忽略复制文件时可能出现的错误。因为如果电脑文件夹中已存在MSCOMCT2.OCX文件,使用FileCopy方法复制时会发生错误。 第7行代码,使用FileCopy方法复制MSCOMCT2.OCX文件到电脑中。 FileCopy方法的语法如下: FileCopy source, destination 参数Source是必需的,字符串表达式,用来表示要被复制的文件名。 参数destination是必需的,字符串表达式,用来指定要复制的目的文件名。 第8行代码,使用Shell函数注册DTP控件。 Shell函数执行一个可执行文件,语法如下: Shell(pathname[,windowstyle]) 参数pathname是必需的,要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。 参数windowstyle是可选的,表示在程序运行时窗口的样式。windowstyle参数值如下表所示。 常量 值 描述 vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。常数vbHide在Macintosh平台不可用。 VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。 VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。 运行程序前应确保在工作簿同一目录中存在MSCOMCT2.OCX文件。此代码相当于在“运行”对话框中键入“regsvr32 C:\ Windows\system32\MSCOMCT2.OCX”后进行注册,只是在“REGSVR32”后加上了s参数。 可以使用程序代码卸载该控件,代码如下: #001 Sub regsvru() #002 Shell "REGSVR32 /u " & ThisWorkbook.Path & "\MSCOMCT2.OCX" #003 End Sub 代码解析: Regsvru过程使用Shell函数注册DTP控件,在pathname参数“REGSVR32”后加上u参数,对DTP控件进行反注册。
阅读:2038
上一则:vba如何使用RefEdit控件选择区域
下一则:vba中的非模式窗体
|