vb封装vba代码成exe文件_宏vba安装包

vb封装vba代码成exe文件_宏vba安装包将ExcelVBA封装成exe程序[老贴收藏]假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:一、用VB制作EXE文件头部分1、打开VB,“文件”-“新建工程”-“标准EXE”;2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

将Excel VBA封装成exe程序[老贴收藏]
假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:

一、用VB制作EXE文件头部分

  1、打开VB,“文件”-“新建工程”-“标准EXE”;

  2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。

  3、往窗体中添加一个时钟控件timer1,并将其InterVal属性设为1000。

  4、双击窗体打开代码编辑窗口,录入以下代码:

Private Declare Function SetWindowPos Lib “user32” (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetTempFileName Lib “kernel32” Alias “GetTempFileNameA” (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Private Declare Function GetTempPath Lib “kernel32” Alias “GetTempPathA” (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH = 260
Private Const EXE_SIZE = 81920 ‘本EXE实际字节大小
Private Type FileSection
Bytes() As Byte
End Type
Private Type SectionedFile
Files() As FileSection
End Type
Dim StopTime As Integer

Private Sub Form_Activate()
If Command$() = “” Then Main1
End Sub

Private Sub Form_Load()
On Error Resume Next
If Command$() = “” Then
Form1.Visible = True
SetWindowPos Form1.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1 ‘将封面置为最顶层窗体
Else
Form1.Visible = False
Form1.Timer1.Enabled = True
End If
End Sub
Sub Main1()
Dim StartXLSByte, I, J As Long
Dim AppPath, XlsTmpPath As String
Dim myfile As SectionedFile
Dim xlApp As Excel.Application ‘定义EXCEL类
Dim xlBook As Excel.Workbook ‘定义工件簿类
Dim xlsheet As Excel.Worksheet ‘定义工作表类
AppPath = App.Path
XlsTmpPath = GetTempFile() ‘取得XLS临时文件名(带路径)
If VBA.Right(App.Path, 1) = “” Then AppPath = VBA.Left(App.Path, VBA.Len(App.Path) – 1)
Open AppPath & “” & App.EXEName & “.exe” For Binary As #1
ReDim myfile.Files(1)
ReDim myfile.Files(1).Bytes(1 To LOF(1) – EXE_SIZE)
Open XlsTmpPath For Binary As #2
Get #1, EXE_SIZE + 1, myfile.Files(1).Bytes ‘此处数字要根据EXE实际头文件大小更改设定
Put #2, 1, myfile.Files(1).Bytes
Close #1
Close #2
Set xlApp = CreateObject(“Excel.Application”) ‘创建EXCEL应用类
Set xlBook = xlApp.Workbooks.Open(FileName:=XlsTmpPath, password:=“ldhyob”) ‘打开EXCEL工作簿,已知该工作簿已加打开口令为ldhyob
‘以下星号括起部分代码是往xls里写数据(也可不往工作簿里写数据的方法,而生成txt的方法),作用是保存本exe的绝对路径与临时xls绝对路径,以便于EXE重写更新与临时文件删除
‘*****************************************
Set xlsheet = xlBook.Worksheets(“temp”) ‘设置活动工作表
xlsheet.Cells(1, 1) = AppPath & “” & App.EXEName & “.exe” ‘将该EXE完全路径存在工作表单元格内
xlsheet.Cells(2, 1) = XlsTmpPath ‘将该EXE本次运行产生XLS临时文件路径存在工作表单元格内
‘****************************************
xlApp.Visible = True ‘设置EXCEL可见
Set xlApp = Nothing ‘释放xlApp对象
StopTime = 0
Me.Timer1.Enabled = True ‘启动时钟
End Sub

Private Function GetTempFile() As String ‘用来产生系统临时文件名
Dim lngRet As Long
Dim strBuffer As String, strTempPath As String
strBuffer = String ( M A X P A T H , 0 ) l n g R e t = G e t T e m p P a t h ( L e n ( s t r B u f f e r ) , s t r B u f f e r ) I f l n g R e t = 0 T h e n E x i t F u n c t i o n s t r T e m p P a t h = L e f t (MAX_PATH, 0) lngRet = GetTempPath(Len(strBuffer), strBuffer) If lngRet = 0 Then Exit Function strTempPath = Left (MAXPATH,0)lngRet=GetTempPath(Len(strBuffer),strBuffer)IflngRet=0ThenExitFunctionstrTempPath=Left(strBuffer, lngRet)
strBuffer = StringKaTeX parse error: Expected ‘EOF’, got ‘&’ at position 65: …pPath, “tmp”, 0&̲, strBuffer) …(0))
If lngRet > 0 Then
GetTempFile = Left$(strBuffer, lngRet – 1)
Else
GetTempFile = strBuffer
End If
End Function

Private Sub Timer1_Timer()
On Error Resume Next
If Command ( ) < > ” ” T h e n I f V B A . D i r ( C o m m a n d () <> “” Then If VBA.Dir(Command ()<>ThenIfVBA.Dir(Command()) <> “” Then
Kill Command$() ‘删除本次运行遗留的临时XLS文件
Else
End
End If
Else
StopTime = StopTime + 1 ‘计时累加
If StopTime = 1 Then Unload Me: End ‘2秒后自动关闭退出
End If
End Sub

 5、可保存工程,如取名为“工程1”;

6、进行编译,“文件”-“生成工程1.exe”,此时也可将生成的EXE另外取名,如取名叫abc.exe。

7、查看第6步生成的EXE文件字节大小,并将具体数字记下来,并将VB模块中的“Private Const EXE_SIZE = 81920”保证一致(这里的81920是笔者例子的结果数字,每个人在实际时会有不同)。此例此步很重要,必须要做,该数字在xls文档VBA中还要使用到。

  至此,文件头部分已做完,abc.exe文件也已生成于磁盘中。
       特别提示:编译前,确保VB里"工程"---"引用"里"Microsoft Excel 9.0 Object Library"前面的勾已打上.

二、xls文档部分操作

  1、给工作簿增加一个工作表temp,将其置为隐藏。

  2、增加xls文档宏代码以实现文档关闭时EXE数据刷新。

  打开xls文档,打开VBE窗口,在ThisWorkBook代码区头部加入以下代码:

Private Const EXE_SIZE = 81920 ‘此处数字为前面第7步得到的EXE文件字节数
Private Type FileSection
Bytes() As Byte
End Type

在Workbook_BeforeClose事件中加入如下代码 (对原有的代码可保留)

Dim myfile As FileSection ‘定义变量
Dim comc, exec, xlsc As String ‘定义变量
Application.Visible = False ‘隐藏EXCEL主窗口
exec = WorkSheets(“temp”).cells(1, 1).Value
xlsc = WorkSheets(“temp”).cells(2, 1).Value
comc = exec & ” ” & xlsc
Open exec For Binary As #1 ‘打开EXE文件
ReDim myfile.Bytes(1 To EXE_SIZE)
Get #1, 1, myfile.Bytes ‘取得固有文件头
Close #1
If VBA.Dir(exec) <> “” Then Kill exec
Open exec For Binary As #1 ‘生成新的EXE文件
Put #1, 1, myfile.Bytes ‘先写入文件头
Open xlsc For Binary As #2 ‘打开xls临时文件
ReDim myfile.Bytes(1 To FileLen(xlsc))
Get #2, 1, myfile.Bytes
Put #1, EXE_SIZE + 1, myfile.Bytes ‘将xls部分追加进EXE
Close #1
Close #2
Application.Quit
Shell comc, vbMinimizedNoFocus ‘删除临时xls文件

  3、保存文档,退出,关闭EXCEL。

三、将EXE与XLS结合生成新的EXE

  将第一步得到的abc.exe与第二步得到的test.xls(文件名随你愿意取)放到同一目录下,切换到MS-DOS模式,或者在该目录下建立一个批处理文件即bat文件,这样就不用切换到MS-DOS模式下输入DOS命令了。建立bat文件的步骤方法是:鼠标右键“新建”—“文本文档”,输入以下内容:

@echo off
copy /b abc.exe + test.xls main.exe
保存,更改文件名(包括扩展名)为“合并.bat”,然后双击它,不一会就会发现在当前目录下会多出一个EXE文件main.exe,这就是封装成品了,你可以将其重命名为所需要的名称。
————————————————
版权声明:本文为CSDN博主「miaozk2006」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/miaozk2006/article/details/82417176

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown

Text-to-
HTML conversion tool

Authors

John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五… 很好… 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接

长方形

圆角长方形

菱形

  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186202.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • MySQL配置文件配置

    MySQL配置文件配置MySQL配置文件

  • python按位取反_python赋值运算符

    python按位取反_python赋值运算符Python中的~(按位取反)运算的理解:按照我平时的理解,当我使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果(这点没问题)例如,假如我的计算机是32位的,我接下来要计算~5的值,计算过程如下:5的二进制表达式为:00000000000000000000000000000101执行~运算…

  • Microsoft Enterprise Library: Logging 模块「建议收藏」

    Microsoft Enterprise Library: Logging 模块「建议收藏」MicrosoftEnterpriseLibrary中的Logging模块主要用来记录日志,它可以将日志存储在不同的介质中:文本文件,WindowsEvent,邮件,MSMQ,DataBase,Xml等等。当然它还提供了扩展功能,通过扩展Logging模块的Listener类,我们就能将日志记录在我们需要的地方了。   虽然MicrosoftEnterpriseLibrary很庞大,但

    2022年10月20日
  • idea 2021.4.14激活码在线生成_通用破解码

    idea 2021.4.14激活码在线生成_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 元素守恒计算方法_元素个数怎么算

    元素守恒计算方法_元素个数怎么算给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入:nums = [5,2,6,1]输出:[2,1,1,0] 解释:5 的右侧有 2 个更小的元素 (2 和 1)2 的右侧仅有 1 个更小的元素 (1)6 的右侧有 1 个更小的元素 (1)1 的右侧有 0 个更小的元素提示:0 <= nums.length <= 10^5-10^4

  • Vue自定义标签[通俗易懂]

    Vue自定义标签[通俗易懂]简介主要讲解vue中如何定义自定义标签。自定义标签使用vue的配置对象中的directives属性进行配置。比如下面代码定义一个自定义标签v-big,可以把绑定的表达式乘以十倍渲染到元素的text区,相当于v-text,只是他表达式要数字并且会乘以10倍后渲染。<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>自定义指令</tit

    2022年10月30日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号