ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: baomaboy

[原创] COM加载宏封装自定义函数并全自动安装最简实例

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-11-29 09:44 | 显示全部楼层
本帖已被收录到知识树中,索引项:插件开发
高绪山 发表于 2011-11-29 08:30
你好! 请问:通用扩展EXCEL工具集V2.39现在怎么安装不上了?

既然V2.39你以前能安装而且有那么多人安装成功说明应该是没问题的,可能是你的使用环境有变化。

TA的精华主题

TA的得分主题

发表于 2011-11-29 10:09 | 显示全部楼层
baomaboy 发表于 2011-11-29 09:44
既然V2.39你以前能安装而且有那么多人安装成功说明应该是没问题的,可能是你的使用环境有变化。

将“禁用项目”中EZEK.dll 启用后正常。谢谢!

TA的精华主题

TA的得分主题

发表于 2011-12-4 20:57 | 显示全部楼层
闫总:
你好!请教一下,当工作簿已经打开后,如何设置为只读属性。我的想法是:根据登录用户权限,设置读写权限。例如,只有有查询权限的用户,对工作簿是只读。我用:Thisworkbook。readonly=true ,系统提示是不能设置的。
谢谢!

TA的精华主题

TA的得分主题

发表于 2011-12-5 23:56 | 显示全部楼层
你好!
请问在VBA 如何能捕捉到删除行的动作?我想在删除前,先对有关联数据处理完了再删除。谢谢!

TA的精华主题

TA的得分主题

发表于 2011-12-10 22:29 | 显示全部楼层
本帖最后由 高绪山 于 2011-12-10 22:30 编辑

你好!
请教一下:
用:   Workbooks(Dir(DingEPath & DingEName)).IsAddin =True。可以隐含打开的工作表。可是,通过:
    For Each Wb In Workbooks
        If UCase(Trim(Wb.Name)) = UCase(DingEName) Then
            bOpenWB = True
            Exit For
        End If
    Next Wb

判定时,bopenwb=FALSE,工作表未打开。
请问:如何既能隐藏工作薄,又能跃过上述判断,并且可以读写。
先谢谢了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-11 09:25 | 显示全部楼层
高绪山 发表于 2011-12-10 22:29
你好!
请教一下:
用:   Workbooks(Dir(DingEPath & DingEName)).IsAddin =True。可以隐含打开的工作表 ...

判定时,bopenwb=FALSE,工作表未打开。
上面这句是判断特定的工作簿是否打开而不是工作表,
另外根本不明白“既能隐藏工作薄又能跳过判断还能读写”是什么意思?
可以隐藏特定的工作薄,但是“又能跳过判断“是什么意思?一点没看明白

TA的精华主题

TA的得分主题

发表于 2011-12-11 19:48 | 显示全部楼层
本帖最后由 高绪山 于 2011-12-11 19:50 编辑

对不起,我没说明白。是这样:
1.我有一个核算材料的程序,都要使用“材料定额库”,例如,材料定额库.xls 。该文件是共享的,大家都用;
2.在我的主程序打开时,要判定“材料定额库.xls” 工作簿是否应经打开。如果,未打开就打开。已经打开直接激活即可;
3.为了不引起操作人员的混乱,我想将“材料定额库.xls” 工作表隐含在后台进行读写。
4.基本情况就是这样。下面的程序。用: If UCase(Trim(WB.Name)) = UCase(DingEName) Then
和set wb1 = Workbooks(DingEPath & DingEName) If wb1 Is Nothing Then 进行判断,都提示“文件已经打开,是否重新打开?”提示。
5.只有在“材料定额库.xls”可见时,用:“If UCase(Trim(WB.Name)) = UCase(DingEName) Then “ 可以判断,直接激活。

部分程序如下:


    If UCase(Sheets("程序专用").Cells(6, "B")) = "当前工作目录" Or Trim(VBA.UCase(Sheets("程序专用").Cells(6, "B"))) = "" Then
          DingEPath = ActiveWorkbook.Path & "\"
    Else
          DingEPath = Trim(Sheets("程序专用").Cells(6, "B"))
    End If
    DingEName = Trim(Sheets("程序专用").Cells(7, "B"))
    bOpenWB = False
    For Each WB In Workbooks
        If UCase(Trim(WB.Name)) = UCase(DingEName) Then
            bOpenWB = True
            Exit For
       End If
    Next WB
    On Error GoTo Error1
    'On Error Resume Next
    'MsgBox DingEPath & DingEName
    'Set wb1 = Workbooks(DingEPath & DingEName)
   ' MsgBox wb1.Name
    'If wb1 Is Nothing Then
     If bOpenWB = False Then
    ' If Not (Workbooks(Dir(DingEPath & DingEName)).IsAddin) = True Then
          ' myApp.Visible = False
           'myApp.Visible = True
         ' myApp.Workbooks.Open DingEPath & DingEName, 0, bOpenReadOnly
         Workbooks.Open DingEPath & DingEName, 0, bOpenReadOnly
         
         Workbooks(DingEName).Sheets("程序").Cells(1, 1) = User_Grade
         Workbooks(DingEName).Sheets("程序").Cells(2, 1) = G_TJ_Name
         Workbooks(DingEName).Sheets("程序").Cells(3, 1) = False
         Workbooks(DingEName).Sheets("程序").Cells(4, 1) = DingEName
         'Call DEB_open(DingEName)


    Else
        Workbooks(DingEName).Activate
    End If
    G_ZCK_Name = ActiveWorkbook.Name

      Workbooks(Dir(DingEPath & DingEName)).IsAddin = True
   
    Workbooks(G_TJ_Name).Activate

TA的精华主题

TA的得分主题

发表于 2012-2-9 20:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-2-29 23:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我运行的时候很慢,不知为什么?

TA的精华主题

TA的得分主题

发表于 2012-3-19 00:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  经过分析研究,对自己在DLL文件调用方式方法方面有了清醒的认识,效果明显。严重感谢!
  总体来说,调用DLL前的准备工作还是只有两个主流方向,一是在宿主EXCEL文件中注册,二是用可执行文件完成DLL文件的注册,或者将DLL文件复制到系统工作目录下。所有的自动安装、自动注册都是通过这两个途径实现的,这些都算不上严格意义的自动注册。只有在宿主EXCEL中注册调用DLL文件,才算是有点自动完成的意义。至于“无须注册和引用”,似乎不是那么回事。执行的两个批处理命令,同样是完成DLL文件在系统目录下的注册和清除注册内容作用,无非是用COPY命令代替了注册命令而已。
  仅仅就目前这两种方式而言,还是受到很多因素制约着。例如:下载了可能会受到杀软及安全防护软件直接宰杀,执行过程中多数会受到杀软和防卫软件的阻拦,执行前需要具有系统管理权限,执行后还要清除注册痕迹等等。
  既然DLL调用问题一时难以达到一种理想的境地,我们就有必要在参考其他编程语言实现方法的基础上进一步归纳总结出一套更系统一点的理论和方法。这就要仰仗各位前辈和专家了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 20:07 , Processed in 0.034955 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表