首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

Excel中有VBA代码,一保存,就显示“该部件的许可信息没有找到”,怎么解决?

2012-01-10 
Excel中有VBA代码,一保存,就显示“该部件的许可信息没有找到”,如何解决?急!我设计的Excel文件中有VBA代码,

Excel中有VBA代码,一保存,就显示“该部件的许可信息没有找到”,如何解决?急!
我设计的Excel文件中有VBA代码,已使用4年,无问题,最近一保存,就显示“该部件的许可证信息没有找到。在设计环境中,你没有合适的许可使用该功能。”,点击两次确定后,显示“文件为保存”,无法保存文件。
  我查看VBA编辑器,有一个表单,可能与使用“Comdlg32.ocx”控件有关,点中该表单,就出现上面的错误信息。该控件已经执行“Regsvr32 Comdlg32.ocx”运行过。最近总出问题?如何解决?

[解决办法]
应该是Comdlg32.ocx的版本问题
[解决办法]

VB code
Private Type tagOPENFILENAME   lStructSize As Long        '结构大小   hwndOwner As Long          '   hInstance As Long          '   strFilter As String        '过滤器字符串   strCustomFilter As String '选中的过滤器(过滤器索引所指的过滤器)字符串   nMaxCustFilter As Long     '过滤器最大长度   nFilterIndex As Long       '选中的过滤器索引,意义与 CommonDialog 控件相同   strFile As String          '选中的全路径文件名   nMaxFile As Long           '装载全路径文件名的字符串长度   strFileTitle As String     '去掉了路径的文件名   nMaxFileTitle As Long      '装载去掉了路径的文件名字符串长度   strInitialDir As String    '去掉了文件名的路径(没有最后的反斜杠)   strTitle As String         '对话框标题,意义与 CommonDialog 控件相同   flags As Long              '标志,意义与 CommonDialog 控件相同   nFileOffset As Integer     '路径长度(包括最后的反斜杠)   nFileExtension As Integer '全路径文件名长度(不计算前面 3 个表示盘符的字符,如 D:)   strDefExt As String        '默认提取   lCustData As Long          '   lpfnHook As Long           '勾子函数地址   lpTemplateName As String   'End TypePrivate Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (ofn As tagOPENFILENAME) As BooleanPrivate Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (ofn As tagOPENFILENAME) As Boolean'返回选择的文件名。输入参数:'1.对话框类型(0=保存,1=打开);2.对话框标题;3.过滤器字符串'4.过滤器索引;5.标志;6.路径;7.文件名Private Function CmdDlg(Optional ByVal DlgType As Boolean = True, _   Optional ByVal DialogTitle As String, Optional ByVal Filter As String, _   Optional FilterIndex As Long = 1, Optional flags As Long, _   Optional ByVal InitialDir As String, Optional ByVal FileName As String, Optional ByRef hWnd As Long = 0) As String  On Error GoTo CmdDlg_ErrorDim ofn As tagOPENFILENAMEDim fResult As BooleanIf InitialDir = "" Then InitialDir = CurDirIf Len(Filter) > 0 Then Filter = Replace(Filter, "|", vbNullChar) 'Filter以Chr(0)为分隔符With ofn   .lStructSize = Len(ofn)   .hwndOwner = hWnd                                   '0为屏幕句柄   .strFilter = Filter   .nFilterIndex = FilterIndex   .strFile = Left(FileName & String$(255, 0), 255)   '用空字符补足全路径文件名255字节   .nMaxFile = 255                                    '全路径文件名长度   .strFileTitle = String$(255, 0)                    '用空字符填充(去掉路径的)文件名   .nMaxFileTitle = 255                               '(去掉路径的)文件名长度   .strTitle = DialogTitle                            '对话框标题   .flags = flags   .strDefExt = ""   .strInitialDir = InitialDir   .hInstance = 0   .strCustomFilter = String(255, 0)                  '用空字符填充选中的过滤器   .nMaxCustFilter = 255                              '选中的过滤器长度   .lpfnHook = 0End WithIf DlgType Then fResult = GetOpenFileName(ofn) Else fResult = GetSaveFileName(ofn)If fResult Then   CmdDlg = Left(ofn.strFile, InStr(ofn.strFile, vbNullChar) - 1)   'FilterIndex = ofn.nFilterIndex                    '返回选中的过滤器索引Else   CmdDlg = vbNullCharEnd IfCmdDlg_Error:End FunctionPrivate Sub Command1_Click()CmdDlg True, "打开", "*.txt", 1, 0, "C:\"End Sub
[解决办法]
我认为需要重新注册一下Comdlg32.ocx控件。
左下角点开始,然后点运行,然后输入 regsvr32 "Comdlg32.ocx所在的全路径包括文件名"
[解决办法]
将下面的文本粘贴到文本编辑器中,然后存为以.reg为扩展名的文件。双击后将信息添加到注册表中。然后用鼠标右键点击一个动态链接库或OCX控件,在弹出的环境菜单中你将会看到Register和Unregister的选项。运用这个方法的前提是你的计算机上必须有regsvr32.exe文件。
REGEDIT4
[HKEY_CLASSES_ROOT\.ocx]
@="ocxfile"
[HKEY_CLASSES_ROOT\ocxfile]
@=”OCX”
[HKEY_CLASSES_ROOT\ocxfile\shell\Register\command]


@="RegSvr32 \"%1\""
[HKEY_CLASSES_ROOT\ocxfile\shell\Unregister\command]
@="RegSvr32 /u \"%1\"" 
REGEDIT4
[HKEY_CLASSES_ROOT\.dll]
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@=”DLL”
[HKEY_CLASSES_ROOT\dllfile\shell\Register\command]
@="RegSvr32 \"%1\""
[HKEY_CLASSES_ROOT\dllfile\shell\Unregister\command]
@="RegSvr32 /u \"%1\""
[解决办法]
一劳永逸地解决问题就是用API,不使用OCX,因为OCX可能由于版本的原因出现各种问题
上面的文本是注册ocx和dll用的,不用去记忆那些繁琐的DOS命令格式

探讨
请问大侠,该问题主要是何原因?
上面文本内容主要作用是何?
因为我的这个文件是别人使用,且人、电脑都不太固定,不知能否一劳永逸地解决问题?

热点排行