精华内容
下载资源
问答
  • VBA封装助手

    2017-10-14 08:45:43
    VB6.0精简版.rar VBA代码封装助手.rar VBA代码盒子5.0(2015-1-15).rar
  • VBA代码封装完整示例

    2011-11-01 18:45:47
    用VB6制作DLL文件,一个较为完整的vb封装vba代码的示例 。
  • 工具可以将excel vba编写的程序 转换为可执行文件, 软件于2006-11-1进行了更新: 1).改进了超链失效的BUG.. 2).启动界面取消了置顶
  • 将Excel VBA封装成exe程序

    万次阅读 2019-04-19 05:54:20
  • excel vba 封装到exe

    热门讨论 2011-06-23 10:16:08
    excel vba 封装到exe 绿色安装软件
  • 使用VB对VBA开发的窗体进行封装成DLL,窗体作用:根据配置的Excel基础数据表,在其他工作表中使用模糊查询赋值(当使用 序列 时,如果列表很长时,可以使用该工具
  • Excle也能编程-VBA工具

    千次阅读 2017-02-06 23:40:50
    工作中有用到,就学习了一下VBA编程。发现这个真的可以使得Excle工作效率倍增。 工作需求,为照片粘贴档案条。需要将一条条数据,转换为小纸片并且按照特殊样式排序。 完成后像这样其实要完成这个还是比较简单的。...

    工作中有用到,就学习了一下VBA编程。发现这个真的可以使得Excle工作效率倍增。
    工作需求,为照片粘贴档案条。需要将一条条数据,转换为小纸片并且按照特殊样式排序。
    完成后像这样这里写图片描述

    其实要完成这个还是比较简单的。
    主要说说自己遇到的几个“坑”
    1.此次样式用到了“模板”,并不是完全靠代码来调整出来的。
    2.想用插件-窗口来封装“转换”操作。但是发现窗口不行,所以后面用到窗体中的按钮来实现。
    3.因为要符合打印纸的格式,所以样式调了好一会儿。

    首先建立标签的模板
    这里写图片描述
    像这样,在最右边建立相应的模板样式。

    接下来就是编辑窗体代码了!
    窗体代码

    Dim a As Integer '声明一个公共变量
    Private Sub UserForm_Initialize()
    With Me
    StartUpPosition = 0
    Left = 600
    Top = 50
    End With
    End Sub
    
    Private Sub CommandButton1_Click()
        Call 生成档案条
        UserForm1.Hide
    End Sub
    Sub 生成档案条()
        Sheets(2).Activate
        Sheets(2).PageSetup.PrintArea = ""
        Dim MaxRow As Long '声明变量
        a = 0
        Application.ScreenUpdating = False
        MaxRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
        Cells(1, Columns.Count - 2).Resize(4, 3).Copy
        '将档案条模板粘贴到A列,且粘贴的份数由工资表的行数决定
        Range("a1:C" & (MaxRow - 1) * 4).PasteSpecial xlPasteAll
        Range("a1:C" & (MaxRow - 1) * 4).PasteSpecial xlPasteColumnWidths
        Range("a1:C" & (MaxRow - 1) * 4).PasteSpecial xlPasteFormulas
        Dim rowHigh As Range
        Dim rowHighBase As Range
        Dim HighBase As Integer
        For i = 1 To MaxRow * 4
            HighBase = i Mod 4
            If HighBase = 0 Then
                HighBase = 4
            Else
                HighBase = i Mod 4
            End If
            Set rowHigh = Rows(i)
            Set rowHighBase = Rows(HighBase)
            rowHigh.RowHeight = rowHighBase.RowHeight
        Next
        For i = 2 To MaxRow '循环复制数据
            复制数据 (i) '调用“复制数据”过程,将工资表的信息复制到工资卡中
        Next
    Call 排版 '调用过程'排版'
        Application.ScreenUpdating = True
    End Sub
    Sub 复制数据(i As Integer)
    '将‘档案的数据’填入每一份档案卡中
        Dim id As String
        id = Sheets(1).Cells(i, 2) & "." & Format(i - 1, "0000")
        Cells(4 * a + 1, 2) = id
        Cells(4 * a + 2, 2) = Sheets(1).Cells(i, 5)
        Cells(4 * a + 3, 2) = Sheets(1).Cells(i, 16)
        a = a + 1
    End Sub
    Private Sub 排版()
        lrow = 1
        drow = 0
        Application.ScreenUpdating = False
        Dim MaxRow As Long, c As Long
        MaxRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row '记录已用区域的行数
        c = Int(MaxRow / 2 + 1) '计算拆分成两列后纵向需要排列多少份
        For i = 1 To c '横向复制7次
            Range(Cells(c * (i) * 4 + 1, 1), Cells(Int(MaxRow / 2 + 1) * (i + 1) * 4, 3)).Copy
            '粘贴到右边一列
            Cells(1, i * 3 + 1).PasteSpecial xlPasteAll
            Selection.PasteSpecial xlPasteColumnWidths '选择性粘贴列宽
        Next
        Rows((c * 3 + 1) & ":" & Rows.Count).Clear
        
        'Dim rng As Range
        'Set rng = Rows(1) '将第一行赋予变量
        'For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row + 1 Step 4
        '遍历所有行,步长为4
        '    Set rng = Union(rng, Rows(i)) ' 将Rng与第一行合并,即获得所有工资卡中的间隔行
        'Next
        'rng.RowHeight = 40
        '将 A 列到 F列的已用区域为打印区域
        Sheets(2).PageSetup.PrintArea = "$A$1:$F$" & Cells(Rows.Count, "A").End(xlUp).Row
        '页边距设置为0
        With Sheets(2).PageSetup
             .LeftMargin = Application.InchesToPoints(0) '左边距
            .RightMargin = Application.InchesToPoints(0)  '右边距
            .TopMargin = Application.InchesToPoints(0) '上边距
            .BottomMargin = Application.InchesToPoints(0) '下边距
            .HeaderMargin = Application.InchesToPoints(0) '页眉
            .FooterMargin = Application.InchesToPoints(0) '页脚
            .Orientation = xlPortrait '设置纵向打印模式
        End With
        ActiveWindow.View = xlPageBreakPreview ' 进入分页浏览状态
        '删除每页最上面多出来的一行
        Do While drow < MaxRow * 3 \ 2
            drow = lrow * 28
            Rows(drow).RowHeight = 20
            lrow = lrow + 1
        Loop
        'ActiveSheet.PageSetup.Orientation = xlLandscape '将页面设置为横向
        'ActiveWindow.View = xlPageBreakPreview ' 进入分页浏览状态
        'If ActiveSheet.VPageBreaks.Count > 0 Then '如果有纵向分页符'
            '将第一个分页符向右拖出'
        '    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
        'End If
        Application.ScreenUpdating = True '恢复屏幕刷新
    End Sub
    
    Private Sub UserForm_Click()
    
    End Sub
    
    

    VBA虽然承袭了VB的代码,感觉有点儿坑。但是能让excle能够编程,并表现的更加自动化,真是比国产WPS强太多!

    展开全文
  • VBA代码工具

    2011-12-02 21:39:47
    VBA代码的工具,可以自动添加函数头,模块头,以及添加行号(针对一个过程或者函数体)
  • VBA代码封装完整示例.rarVBA代码封装完整示例.rarVBA代码封装完整示例.rar
  • 将Excel VBA封装成exe程序[老贴收藏]

    万次阅读 2019-09-17 16:23:22
    将Excel VBA封装成exe程序[老贴收藏] 假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作: 一、用VB制作EXE文件头部分 1、打开VB,“文件”-“新建工程”-“标准EXE”; 2...

    将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实体。例如:

    TYPEASCIIHTML
    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. 注脚的解释 ↩︎

    展开全文
  • 他山之石——VBA代码封装

    千次阅读 2018-07-17 22:22:08
    继续学习VBA! 话说CSDN又改版了啊,这世界天天在变化啊! '1 什么是DLL文件 'DLL是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,' 'DLL不是可执行文件。动态链接...

    继续学习VBA!

    话说CSDN又改版了啊,这世界天天在变化啊!

    
           '1 什么是DLL文件
         'DLL是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,'
     'DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的
     '可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的
     '函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个
     '包含可由多个程序同时使用的代码和数据的库。
    
      '2、DLL在VBA中有什么作用?
      
         '1 把核心代码封装在DLL里,用户无法查看到DLL文件中的代码。有利于保护自已的代码。
         '2 可以放在DLL文件中被大家共享。
    
      '3 怎么把VBA代码封装到DLL文件中呢?
         
        '常用的方法是使用VB6.0进行封装,所以大家要想学习本集封装,需要先安装VB6.0程序。具本的封装步骤
      '详见DLL封装示例模块。
        
      '4 怎么在VBA中调用这些代码呢?
         '封装的代码是以类的形式存在,所以调用前需要先加载dll文件,然后在模块中象调用类模块一样调用DLL
      '中的函数,详见"DLL代码的调用"模块内容。
         
    
         '封装的步骤
     '第1步 在模块中编写试调正确
    'Function 面积(长 As Double, 宽 As Double)
    '  面积 = 长 * 宽
    'End Function
    
     '第2步 打开VB程序,在"新建工程'窗口中点"ActiveX DLL"图标.
    
    
     '第3步 进入编辑界面后,进行如下设置
     
         '1 把编写的代码粘贴到工程代码窗口中
         
         '2 在右侧的属性窗口中修改工程名称和类模块名称为自已的名称.
         
         '3 添加对EXCEL和OFFICE的调用,以支持使用EXCEL对象.
            'Microsoft Office...N.0 object library
            'Microsoft ExcelN.0 object library
         '4 文件菜单----工程另存为到指定的文件夹下.
         
         '5 文件菜单----生成....dll 保存在刚在的文件夹下
         
          '进行以上步骤后,在文件夹内会生成很多文件.这些文件两为两大类.dll是最终封装好的代码文件,其他的是为了以后编辑代码用的.
        '如果只是生成dll,以后需要修改代码时,而你又无法打开查看编辑,怎么办呢?所以要有一个备份可以编辑代码.
    
    
    
    '一 调用dll代码的步骤
    
      '1 工具----引用---浏览---找到dll文件,完成后会在引用窗口中出现dll文件的名子的项目
     
      '2 在代码中使用。
        Sub test()
          Dim m As New 面积计算
          MsgBox m.面积(10, 20)
        End Sub
      
    '    Sub test()
    '      Dim m As New 面积计算
    '      MsgBox m.面积(12, 20)
    '    End Sub
        
        '总结:在VBA模块中使用DLL中的函数或方法,和使用VBA中类模块一样。
    
    
    '二 删除引用窗口中引用项目的方法
    
       '在开始运行中输入regedit打开注册表,在注册表中搜索“工程名称.dll",把对应的项删掉便可
    
    '1 为什么要转换
       '在excel的编程环境下可以直接用EXCEL里的对象,但封装VBA代码的环境是VB,在人家的地盘你想用EXCEL对象就得加上详细的对象了。
     '比如在VBA模块中我们可以用selecttion表示正在选取的单元格,用sheets(1)表示第一个工作表,而在VB中你需要先引用EXCEL对象,
     '然后才能利用EXCEL对象的属性引用工作簿和工作表等对象。
    
    '2 怎么转换
    
       '先引用和创建excel程序,然后利用 Excel对象.子对象.对象或方法 的结构来转换
       
       
     '在VBA中的代码
      Sub 删除重复数据()
       Dim x As Integer
       Dim arr, d As Object
       Dim el As Object
       Set d = CreateObject("scripting.dictionary")
       With ActiveSheet
       arr = Selection
       For x = 1 To UBound(arr)
         d(arr(x, 1)) = ""
       Next x
       Selection.Clear
       Selection.Cells(1, 1).Resize(d.Count) = Application.Transpose(d.Keys)
       End With
       Set el = Nothing
     End Sub
     
     '封装后的代码
     Sub 删除重复数据2()
       Dim x As Integer
       Dim arr, d As Object
       Dim el As Object
       Set d = CreateObject("scripting.dictionary")
       Set el = GetObject(, "Excel.Application") '创建excel对象
       With el.ActiveSheet 'excel程序的activesheet,下面遇到excel中的对象方法、函数都要加上el
       arr = el.Selection
       For x = 1 To UBound(arr)
         d(arr(x, 1)) = ""
       Next x
       el.Selection.Clear
       el.Selection.Cells(1, 1).Resize(d.Count) = el.Transpose(d.Keys)
       End With
       Set el = Nothing
     End Sub
    
    
    Sub 引用删除dll()
     Dim sc As New 删除重复模块
     sc.删除重复数据2
     Set sc = Nothing
    End Sub
    

     

    展开全文
  • 很简单的一个功能,网上也有很多在线生成器,也有小工具可以下载,这儿用VBA做一个,结果就保存到当前工作表中,简单、快速。生成函数也可以放到其它程序中使用。
  • VBA操作封装为DLL组件并在EXCEL中调用

    万次阅读 多人点赞 2015-03-14 17:12:49
    使用程序: 1、Microsoft Office Excel 2003 2、Microsoft Visual Basic 6.0 案例:在工作表的C1单元格得出A1单元格+B1...设计的VBA代码: Sub Test()  On Error Resume Next  Range("C1") = Cells(1, 1) +
  • 一款将Excel文档转换成Exe文件独立运行的封装工具,已经是破解版。非常好! 如果觉得好用,还是建议购买正版的,支持软件产业。
  • vba程序的vb6封装The debugging module can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture. 可以通过“调试”菜单项...
  • VB封装Excel_VBA代码为Dll

    千次阅读 2017-03-16 10:59:14
    VB封装Excel_VBA代码为Dll VB封装Excel_VBA代码为Dll VB封装Excel_VBA成DLL技巧 使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过一、启动VB6.0 VB封装Excel_VBA成DLL技巧 使用VB6.0在WinXP_sp2、Excel ...
  • VBA - 封装我们的VBA代码

    万次阅读 多人点赞 2007-07-01 12:09:00
    Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,用户可以容易地...
  • 用VB6.0编写的如何封装Excel功能区,代码完全开源
  • VB6.0 将excel封装成exe纯净版封装操作方法和代码
  • VBA添加到excle中,可以自动调节截图的大小尺寸。
  • 封装我们的VBA代码

    2008-11-30 12:30:18
    VBA在代码的保护上存在着缺陷。如果不对VBA工程设置密码保护,代码很容易被人浏览乃至窃取。而且即使设置了密码保护,也很容易被人破解。笔者就曾用破解工具officekey轻松地破解了他人设置的密码保护,不费吹灰之力...
  • 第14章 使用VBA开发Excel小工具

    千次阅读 2013-12-01 04:57:30
    第14章使用VBA开发Excel小工具 本章内容要点 Excel小工具和一般小工具 创建好的小工具 在单元格里操作文本 寻找其它Excel小工具   关于Excel小工具 一般来说,小工具是改善软件性能、增加新的功能或者使得已有功能...
  • VBA程序开发Excel工具

    千次阅读 2013-12-23 21:42:56
    VBA程序开发Excel工具 本章节概要  ● 讨论Excel使用工具和一般工具  ● 使用VBA进行编程  ● 创建好的工具  ● 在单元格中处理   ● 搜寻其他的Excel工具 关于Excel工具  大致来说,它是增加实用...
  • 封装我的VBA代码

    千次阅读 2007-09-15 17:59:00
    作者:张业新来源:http://www.excelhome.net/Article/ShowArticle.asp?ArticleID=505  Visual Basic for Applications...VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,
  • 本章主要内容:Excel简介,Excel的基本概念及操作,简单小工具
  • 第2部分以编程任务的形式讲述VBA面向对象的特性,使用PowerPoint对象进行任务编程以及使用VBA的类构建对象,代码的封装,运用虚拟类实现类的继承并封装成组件的技术。第3部分重点阐述如何运用各种技术增强VBA语言的...
  • 为了保护自己辛辛苦苦编写的Excel VBA代码不被盗用,我们需要对Excel VBA代码进行加密。通常的做法是利用给工程设置密码的方法...在百度里搜索“封装EXCEL VBA”关键字,有很多封装VBA的教程,但99%是利用VB6(Mi...
  • 对于密码破译方面笔者不太懂,之前对于各种序列号的激活也有些臆测,自己根据想法做了个序列号验证的小框架,以后做的工具也可以用之保护一下下。。。 主要思路是:用户打开小工具后,系统检测是否已激活,如果未...
  • 第2部分以编程任务的形式讲述VBA面向对象的特性,使用PowerPoint对象进行任务编程以及使用VBA的类构建对象,代码的封装,运用虚拟类实现类的继承并封装成组件的技术。第3部分重点阐述如何运用各种技术增强VBA语言的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,203
精华内容 481
关键字:

vba封装工具