ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] VB6封装EXE文件运行Excel代码教程

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-31 06:54 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 microyip 于 2017-5-31 06:55 编辑

刚刚昨天看到一个关于“Excel封装EXE的VBA”的贴,利用EXE文件直接对未开启低宏安全的Excel执行代码的好贴。或许很多人想看看如何做到的。在此向大家介绍操作方式。

开发工具:VB6精简版
如果没有安装的,可以下载附件进行安装。当然这个开发工具也可以封装ActiveX DLL文件哦。 vb6精简版.part1.rar (2 MB, 下载次数: 1226) vb6精简版.part2.rar (2 MB, 下载次数: 1778) vb6精简版.part3.rar (1.86 MB, 下载次数: 884)


代码准备:(在附件 VB6直接启动未设置宏安全的Excel代码(By.Micro).rar (12.05 KB, 下载次数: 1099) 里Excel工作簿内有代码可以复制)
  1. Option Explicit
  2. Sub Main()
  3.     Dim sPath As String
  4.     Dim ExcelApp As Excel.Application '定义ExcelApp为Excel程序对象
  5.     Dim bCreatApp As Boolean
  6.     Dim wWB As Workbook
  7.    
  8.     sPath = App.Path & "" '获取当前Exe文件所在文件夹
  9.     On Error Resume Next '遇到出错时执行下一语句
  10.     Set ExcelApp = GetObject(, "Excel.Application") '获取已经打开的Excel程序
  11.     bCreatApp = ExcelApp Is Nothing '判断是否获取了Excel程序,如果ExcelApp是Nothing时表示Excel程序没有被运行
  12.     On Error GoTo 0 '恢复出错时提示错误并停止执行功能
  13.     If bCreatApp Then '没有运行Excel程序时
  14.         Set ExcelApp = CreateObject("Excel.Application") '运行Excel程序
  15.         ExcelApp.Visible = True '将Excel程序界面显示出来
  16.     End If
  17.     With ExcelApp '在Excel程序里
  18.         If bCreatApp Then
  19.             Set wWB = .Workbooks.Add '新建一个Excel工作簿
  20.             With wWB '在新建的Excel工作簿内
  21.                 With .Sheets(1) '在第一个表内
  22.                     .[A1] = .[A1] + 1
  23.                 End With
  24.                 .SaveAs sPath & "VB6测试程序(By.Micro).xlsx" '保存工作簿
  25.                 .Close '关闭工作簿
  26.             End With
  27.         Else
  28.             Set wWB = .Workbooks.Open(sPath & "VB6测试程序(By.Micro).xlsm") '打开已有的工作簿
  29.             .Run "测试程序" '运行工作簿内已有过程
  30.             wWB.Close True '关闭并保存工作簿
  31.         End If
  32.         If bCreatApp Then .Quit '如果原本没有运行Excel程序时关闭Excel程序
  33.     End With
  34. End Sub
复制代码
上述代码只是演示用,大家可以根据自己实际需要进行相关修改。

生成EXE文件
打开VB6开发工具,新建“标准 EXE”,对右边“工程-工程1”窗口进行操作
1、对着“工程1”右键,“工程1 属性”,“启动对象”改为“Sub Main”,“工程名称”改为你想要的名字,本演示里改为“VB6直接启动未设置宏安全的Excel代码”,确定
2、对着窗体“Form1”右键——移除,
3、右键“添加”——“添加模块”,在模块代码窗口里把代码复制粘帖进去。
4、VB6的菜单“工程”——“引用”,把代表Excel程序的“Microsoft Excel 14.0 Object Library”勾上。(这个是Excel2010版本的,如果是其他版本,可以对应勾上Microsoft Excel xx.0 Object Library)
5、VB6的菜单“文件”——“生成VB6直接启动未设置宏安全的Excel代码.EXE”——选择保存位置后
成功生成一个EXE文件了,你来试试?
1.gif

评分

12

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-31 07:12 | 显示全部楼层
liucqa 发表于 2017-5-31 07:09
有没有试过用你这个启动64位excel

尚未试过,因为安装的都是32位office呢,请指正

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-31 15:06 | 显示全部楼层
lzqlaj 发表于 2017-5-31 15:02
谢谢楼主浏览本人的帖子,代码大概如此。没有工作簿新建一个,并填写单元格内容,有则打开。

你的贴是好贴,好建议,好做法。我的只是效仿一下而已。至于是新开工作簿还是打开现有工作簿,纯粹是一个示范,实操的朋友们可以根据自己具体需求变通。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-31 15:27 | 显示全部楼层
lzqlaj 发表于 2017-5-31 15:21
Private Sub Form_Load()
    Dim xlApp As Excel.Application    'Excel对象
    Dim xlbook As Excel.W ...

建议把Form_Load过程名改为Main放模块里,程序启动使用Sub_Main即可,原先的窗体就无需存在,文件相对会缩小一丁点大小,使用时内存也相应少一丁点。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-2-24 17:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-4-17 10:57 | 显示全部楼层
学习一下,但是出现 未定义报错 ,指点一下,谢谢。 01.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-17 16:18 | 显示全部楼层
qinyu0745 发表于 2018-4-17 10:57
学习一下,但是出现 未定义报错 ,指点一下,谢谢。

注意一下上面的第4点,需要引用Excel的

TA的精华主题

TA的得分主题

发表于 2018-5-19 13:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-20 11:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-22 19:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢分享,好好学习学习~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 04:18 , Processed in 0.044219 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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