excel封装全过程
VB封装Excel_VBA成DLL技巧
VB封装Excel_VBA成DLL技巧VB封装Excel_VBA成DLL技巧使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过。
一、启动VB6.0:执行:“文件夹(F)”——“新建(N)”——选择“ActiveX DLL”,如下图1:二、引用:VB 中对Excel的引用执行:“工程(P)”——“引用(N)”——选择所要引用的项目:如下图2Excel 2000中:Microsoft Excel 9.0 Object LibraryMicrosoft Office 9.0 Object LibraryExcel 2003中:Microsoft Excel 11.0 Object LibraryMicrosoft Office 11.0 Object Library三、编写代码:1、将工程默认名称“工程1”,改为“zygtest”,将类模块默认名称“Class1”,改为“zyg365”,2、在类模块的代码编辑区写入代码:如下图3模块名称为“hongtong”,代码如下在VB中编写代码时:要注意以下声名Dim XLAPP As ObjectSet XLAPP = GetObject(, "Excel.Application")代码中引用对象,如SHEET,Cell等,前面要加“XLAPP.”(或按照Sub hongtong() 中的格式编写。
)Sub hongtong()Dim excelApp As New Excel.ApplicationDim excelWorkBook As Excel.WorkbookDim excelWorksheet As Excel.WorksheetSet excelWorkBook = excelApp.Workbooks.Add '创建新工作簿Set excelWorksheet = excelWorkBook.Sheets(1) excelWorksheet.Cells(2, 3) = "宏通" '写入数据excelWorksheet.Cells(3, 4) = "zyg365" '写入数据excelApp.Visible = True '显示excel界面,用于调试excelWorkBook.PrintPreview '打印预览excelWorkBook.PrintOut '打印输出excelWorkBook.Saved = True'excelWorkBook.Close '关闭工作薄'excelApp.Quit '退出excelEnd Sub四、工程属性设置:(可以不设置,本步骤可以省略) 为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4执行:“工程(P)”——“工程1属性(E)…”(当前工程中为:“zygtest属性(E)…”)五、保存工程、测试、打包生成Dll文件:1、保存:单击保存,保存到一个文件夹中;2、测试:执行工具栏上的“启动”(右向的三角图标)按钮,检查是否存在错误;3、打包生成Dll文件:执行:“文件(F)”——“生成工程1.dll(K)”(当前工程中为:“zygtest.dll”),重命名为“zyg.dll”,至此,Dll文件制作结束。
VB操作Excel封装成DLL
VB操作Excel封装成DLL【前言】:网上由于封装的例子和教程太零散,故系统地揭开封装神秘的面纱。
【步骤】:1、启动VB6.0程序,新建“ActiveX DLL”。
2、勾选VB对Excel的引用:(1) Microsoft Excel x.0 Object Library ;(2) Microsoft Office x.0 Object Library 。
3、在VB中编写需封装的功能代码。
(1)将工程名“工程1”改为“符合功能的名字”——如“海纳百川测试”,将类模块名“Class1”也改为另一个“符合功能的名字”——如“删除重复项”。
(说明:符合命名规则任意改为某某名,改名主要是为了区别和方便调用)(2)编写功能代码。
Sub 删重()Dim dic As ObjectDim xlApp As Excel.Application '针对GetObject获取已打开的Excel对象'Dim xlApp As New Excel.Application '针对CreateObject创建新的Excel对象Dim exWb As Excel.WorkbookDim exSh As Excel.WorksheetDim r As LongSet xlApp = GetObject(,"excel.application") '获取已打开的Excel对象'Set xlApp = CreateObject("excel.application") '创建新的Excel对象Set exWb = xlApp.ActiveWorkbook '获取当前活动工作簿'Set exWb = xlApp.Workbooks.Add '创建新的工作簿Set exSh = exWb.ActiveSheet '获取当前活动工作表'Set exSh = exWb.WorkSheets(1) '设置第一个工作表Set dic = CreateObject("scripting.dictionary")Dor = r + 1dic(exSh.Cells(r, 1).Value) = ""Loop Until exSh.Cells(r, 1) = ""exSh.Cells(1, 3).Resize(dic.Count) =Application.Transpose(dic.keys)Set dic = NothingSet xlApp=NothingSet exWb=NothingSet exSh=NothingEnd Sub4、点击——“文件”——“生成海纳百川测试.dll”——保存到指定位置。
excel封装全过程
excel封装全过程[原创]xls封装成exe制作全攻略一、用vb1制作EXE文件头。
打开VB,“文件”-“新项目”-“标准exe”;2.此时,将出现名为form1的默认表单编辑窗口。
表格1将用作软件启动封面表格。
打开form1的属性窗口,设置以下属性:borderstyle=0、startupposition=2、图标和图片属性为所需的图标(这也将成为exe的图标)以及为使用而设计的图片(即软件封面),将表单大小设置为所需的适当值。
3.向窗体中添加时钟控制计时器1,并将其interval属性设置为1000。
4.双击表单打开代码编辑窗口,输入以下代码:form1.timer1.enabled=trueendifendsubsubmain1()dimstartxlsbyte,i,jaslongdimappp ath,xlstmppathasstringdimmyfileassectionedfiledimxlappasexcel.application'定义excel类dimxlbookasexcel.workbook'定义工件簿类dimxlsheetasexcel.worksheet'定义工作表类apppath=app.pathxlstmppath=gettempfile()'取得xls临时文件名(带路径)ifvba.right(app.path,1)=\vba.len(app.path)-1)openapppath&\&app.exename&\forbinaryas#1redimmyfile.files(1)redimmyfile.file s(1).bytes(1tolof(1)-exe_size)openxlstmppathforbinaryas#2get#1,exe_size+1,myfile.files(1).bytes'此处数字要根据exe实际头文件大小更改设定put#2,1,myfile.files(1).bytesclose#1close#2setxlapp=createobject(\“创造excel应用程序类setxlbook=擅长主窗口exec=worksheets(“temp”).cells(1,1).valuexlsc=。
XLS封装成EXE制作全攻略
■ ldhyob 2003.12
曾在论坛发表过一张帖,是关于制作动态EXE例子([url]/cdb/viewthread.php?tid=15781[/url])的,大家对此兴趣颇浓,都建议公开详细制作细节,故决定写出此文以帮助关注那张帖的版友们能完全自已独立完成xls2exe的过程,实现简单的封装。首先申明,将xls做成exe并不是指就能使您的VBA工程受到坚强的保护,当然您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等,但“道高一尺,魔高一丈”,所以就没有必要去追求所谓的“完美”加密……关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。
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类
假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:
一、用VB制作EXE文件头部分
1、打开VB,“文件”-“新建工程”-“标准EXE”;
2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。
pythonexcel和yaml文件的读取封装
pythonexcel和yaml⽂件的读取封装excelimport osimport xlrdPATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))class ExcelData:def __init__(self, file, sheet="sheet1", title=True):# 判断⽂件存在不存在if os.path.isfile(PATH(file)):self.file = PATH(file)self.sheet = sheetself.title = titleself.data = list()self.workbook = xlrd.open_workbook(self.file)else:raise FileNotFoundError("⽂件不存在")@propertydef get_data(self):"""获取表格数据"""if not self.data:# 判断表单名称if type(self.sheet) not in [int, str]:raise Exception("表单名称类型错误")else:if type(self.sheet) == int:book = self.workbook.sheet_by_index(self.sheet)else:book = self.workbook.sheet_by_name(self.sheet)# 判断表格是否有表头,有则输出列表嵌套字典形式数据,否则输⼊列表嵌套列表形式数据if self.title:title = book.row_values(0)for i in range(1, book.nrows):self.data.append(dict(zip(title, book.row_values(i)))) # 可参考字典章节else:for i in range(book.nrows):self.data.append(book.row_values(i))return self.data@propertydef get_sheets(self):"""获取所有表单,这个在后续会⽤到"""book = self.workbook.sheets()return book调⽤操作infos = ExcelData("htmls/测试⽤例.xlsx", "登⼊页⾯", True).get_dataprint(infos)sheets = ExcelData("htmls/测试⽤例.xlsx").get_sheetsprint(sheets)yamlimport osimport yamlfrom yamlinclude import YamlIncludeConstructorYamlIncludeConstructor.add_to_loader_class(loader_class=yaml.FullLoader) # ⽤于yaml⽂件嵌套PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))class YamlData:def __init__(self, file):if os.path.isfile(PATH(file)):self.file = PATH(file)else:raise FileNotFoundError("⽂件不存在")@property # 设置属性,调⽤data⽅法时可通过调⽤属性,不需要带括号def data(self):with open(file=self.file, mode="rb") as f:infos = yaml.load(f, Loader=yaml.FullLoader)# infos = yaml.load(f)return infos调⽤操作infos = YamlData("htmls/loginsucess.yaml").dataprint(infos)"D:\Program Files\Python\Python37-32\python.exe" D:/demo/yamldata.py{'id': 'login_001', 'module': '登⼊页⾯', 'title': '登⼊时账号为空', 'message': '已打开链接', 'testcase': [{'element_info': 'css->[placeholder="请输⼊账号"]', 'operate_type': 'send_keys', 'keys': 'SSSS', 'info': '点击账号输⼊框,输⼊账号'}, {'element_info': 'css->[placeholder= Process finished with exit code 0以上就是python excel和yaml⽂件的读取与封装的详细内容,更多关于python ⽂件读取与封装的资料请关注其它相关⽂章!。
Python接口测试之Excel表格数据操作方法封装
Python接⼝测试之Excel表格数据操作⽅法封装 引⾔ 我们在做接⼝测试,经常会⽤到excel去管理测试数据,对Excel的操作⽐较频繁,那么使⽤python如何操作Excel⽂件的读与写呢?由于之前讲的都是⼤的框框,没有讲这么⼩的模块使⽤,现在就化整为0的讲解。
读写模块介绍 python有三个模块是对Excel⽂件的操作,分别是:openpyxl,xlrd和xlwt。
下⾯简单的介绍⼀下各个模块的特点及使⽤案例。
xlrd xlrd是⽤来从Excel中读写数据的,但我平常只⽤它进⾏读操作,写操作会遇到些问题。
⽤xlrd进⾏读取⽐较⽅便,流程和平常⼿动操作Excel⼀样,打开⼯作簿(Workbook),选择⼯作表(sheets),然后操作单元格(cell)。
下⾯举个例⼦,例如要打开当前⽬录下名为”data.xlsx”的Excel⽂件,选择第⼀张⼯作表,然后读取第⼀⾏的全部内容并打印出来。
Python代码如下:import osimport xlrdfrom xlutils.copy import copy# 获取当前⽂件的绝对路径curPath = os.path.abspath(os.path.dirname(__file__))print(curPath)# 获取项⽬根⽬录rootPath = os.path.abspath(os.path.dirname(curPath))print(rootPath)# 获取⽂件路径file_path = r'APItest_ddt\data\data.xls'file_path = os.path.join(rootPath,file_path)print(file_path)#打开excel⽂件data=xlrd.open_workbook(file_path)#获取第⼀张⼯作表(通过索引的⽅式)table=data.sheets()[0]#data_list⽤来存放数据data_list=[]#将table中第⼀⾏的数据读取并添加到data_list中data_list.extend(table.row_values(0))#打印出第⼀⾏的全部数据for item in data_list:print(item)# 写⼊数据copy_data = copy(data)# 读取复制的excel的sheet页copy_data_to_sheet = copy_data.get_sheet(0)# 通过get_sheet()获取的sheet有write()⽅法,写⼊数据copy_data_to_sheet.write(5,5,"这是我写⼊的测试数据:哈哈")# 保存数据copy_data.save(file_path)运⾏结果:C:\Users\Administrator\Desktop\APItest_ddtC:\Users\Administrator\DesktopC:\Users\Administrator\Desktop\APItest_ddt/data/data.xls地址打开data.xls⽂件:在处理excel数据时发现了xlwt的局限性–不能写⼊超过65535⾏、256列的数据(因为它只⽀持Excel 2003及之前的版本,在这些版本的Excel中⾏数和列数有此限制),这对于实际应⽤还是不够的。
excel封装方法
excel封装方法2006年11月14日星期二 15:38Execl简单封装教程作者申明:1、在封装过程中所使用代码的知识产权归原有作者所有,我只负责整理教程和制作插图而已;2、此封装为简单封装,只是为了跳过宏,封装后的文件为exe文件,封装后的文件可以保存;3、不涉及到文件保护方面的功能,如果你是为了保护文件而封装,那么,此教程不适合你;4、此教程只归像我这样的菜鸟学习,高手就不用看此教程了,以免浪费你的时间;封装开始:1、首先你得安装VB6.0软件,(网上有精简版的才5M,本教程也使用VB6.0精简版)2、打开VB6.0新建一个“标准exe”工程,如下图所示:点击打开,如下图:(在这里,我们要做一个启动时的等待界面,把中间的那个form1窗口的标题栏去掉,并设程序图标和背景图以及该程序界面启动时默认屏幕居中方式)要实现上面所说的功能,操作如下:在红框的区域分别找到并按下面的设置即可:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。
设置后的效果如下图所示:(按需要加入自已的图片和指定自已喜欢的图标)接下来的工作,我们要在窗体上面放一个时间控件,点击时间控件按钮,在窗体任何位置拖一个框即可,时间控件就放上去了,如图所示:接下来,双击窗体,会弹出一个代码框(注意不是在时间控件上双击,要在窗体上面双击,也就是显示有启动界面的位置双击)如下图所示:删除里面已有的两行代码,把下面的代码复制进去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 LongPrivate Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As LongPrivate Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Const MAX_PATH = 260Private Const EXE_SIZE = 81920 '本EXE实际字节大小Private Type FileSectionBytes() As ByteEnd TypePrivate Type SectionedFileFiles() As FileSectionEnd TypeDim StopTime As IntegerPrivate Sub Form_Activate()If Command() = "" Then Main1End SubPrivate Sub Form_Load()On Error Resume NextIf Command() = "" ThenForm1.Visible = TrueSetWindowPos Form1.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1 '将封面置为最顶层窗体ElseForm1.Visible = FalseForm1.Timer1.Enabled = TrueEnd IfEnd SubSub Main1()Dim StartXLSByte, I, J As LongDim AppPath, XlsTmpPath As StringDim myfile As SectionedFileDim xlApp As Excel.Application '定义EXCEL类Dim xlBook As Excel.Workbook '定义工件簿类Dim xlsheet As Excel.Worksheet '定义工作表类AppPath = App.PathXlsTmpPath = 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 #1ReDim myfile.Files(1)ReDim myfile.Files(1).Bytes(1 To LOF(1) - EXE_SIZE)Open XlsTmpPath For Binary As #2Get #1, EXE_SIZE + 1, myfile.Files(1).Bytes '此处数字要根据EXE实际头文件大小更改设定Put #2, 1, myfile.Files(1).BytesClose #1Close #2Set 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 = 0Me.Timer1.Enabled = True '启动时钟End SubPrivate Function GetTempFile() As String '用来产生系统临时文件名Dim lngRet As LongDim strBuffer As String, strTempPath As StringstrBuffer = String$(MAX_PATH, 0)lngRet = GetTempPath(Len(strBuffer), strBuffer)If lngRet = 0 Then Exit FunctionstrTempPath = Left$(strBuffer, lngRet)strBuffer = String$(MAX_PATH, 0)lngRet = GetTempFileName(strTempPath, "tmp", 0&, strBuffer)If lngRet = 0 Then Exit FunctionlngRet = InStr(1, strBuffer, Chr(0))If lngRet > 0 ThenGetTempFile = Left$(strBuffer, lngRet - 1)ElseGetTempFile = strBufferEnd IfEnd FunctionPrivate Sub Timer1_Timer()On Error Resume NextIf Command() <> "" ThenIf VBA.Dir(Command()) <> "" ThenKill Command() '删除本次运行遗留的临时XLS文件ElseEndEnd IfElseStopTime = StopTime + 1 '计时累加If StopTime = 1 Then Unload Me: End '2秒后自动关闭退出End IfEnd Sub如下图所示:接下来点击工程菜单,选择引用,弹出一个对话框,如图所示:并勾选:Microsoft Excel。
封装成EXE方法
XLS封装成EXE制作全攻略曾在论坛发表过一张帖,是关于制作动态EXE例子(/cdb/viewthread. php?tid=15781)的,大家对此兴趣颇浓,都建议公开详细制作细节,故决定写出此文以帮助关注那张帖的版友们能完全自已独立完成xls2exe的过程,实现简单的封装。
首先申明,将xls做成exe并不是指就能使您的VBA工程受到坚强的保护,当然您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等,但“道高一尺,魔高一丈”,所以就没有必要去追求所谓的“完美”加密……关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。
假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:一、用VB制作EXE文件头部分1、打开VB,“文件”-“新建工程”-“标准EXE”;2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该For m1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。
3、往窗体中添加一个时钟控件timer1,并将其InterVal属性设为1000。
4、双击窗体打开代码编辑窗口,录入以下代码:Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndI nsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (By Val lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpT empFileName As String) As LongPrivate Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBuff erLength As Long, ByVal lpBuffer As String) As LongPrivate Const MAX_PATH = 260Private Const EXE_SIZE = 81920 '本EXE实际字节大小Private Type FileSectionBytes() As ByteEnd TypePrivate Type SectionedFileFiles() As FileSectionEnd TypeDim StopTime As IntegerPrivate Sub Form_Activate()If Command() = "" Then Main1End SubPrivate Sub Form_Load()On Error Resume NextIf Command() = "" ThenForm1.Visible = TrueSetWindowPos Form1.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1 '将封面置为最顶层窗体ElseForm1.Visible = FalseForm1.Timer1.Enabled = TrueEnd IfEnd SubSub Main1()Dim StartXLSByte, I, J As LongDim AppPath, XlsTmpPath As StringDim myfile As SectionedFileDim xlApp As Excel.Application '定义EXCEL类Dim xlBook As Excel.Workbook '定义工件簿类Dim xlsheet As Excel.Worksheet '定义工作表类AppPath = App.PathXlsTmpPath = 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 #1ReDim myfile.Files(1)ReDim myfile.Files(1).Bytes(1 To LOF(1) - EXE_SIZE)Open XlsTmpPath For Binary As #2Get #1, EXE_SIZE + 1, myfile.Files(1).Bytes '此处数字要根据EXE实际头文件大小更改设定Put #2, 1, myfile.Files(1).BytesClose #1Close #2Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类Set xlBook = xlApp.Workbooks.Open(FileName:=XlsTmpPath, password:="ldhyob") '打开E XCEL工作簿,已知该工作簿已加打开口令为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 = 0Me.Timer1.Enabled = True '启动时钟End SubPrivate Function GetTempFile() As String '用来产生系统临时文件名Dim lngRet As LongDim strBuffer As String, strTempPath As StringstrBuffer = String$(MAX_PATH, 0)lngRet = GetTempPath(Len(strBuffer), strBuffer)If lngRet = 0 Then Exit FunctionstrTempPath = Left$(strBuffer, lngRet)strBuffer = String$(MAX_PATH, 0)lngRet = GetTempFileName(strTempPath, "tmp", 0&, strBuffer) If lngRet = 0 Then Exit FunctionlngRet = InStr(1, strBuffer, Chr(0))If lngRet > 0 ThenGetTempFile = Left$(strBuffer, lngRet - 1)ElseGetTempFile = strBufferEnd IfEnd FunctionPrivate Sub Timer1_Timer()On Error Resume NextIf Command() <> "" ThenIf VBA.Dir(Command()) <> "" ThenKill Command() '删除本次运行遗留的临时XLS文件ElseEndEnd IfElseStopTime = StopTime + 1 '计时累加If StopTime = 1 Then Unload Me: End '2秒后自动关闭退出End IfEnd Sub5、可保存工程,如取名为“工程1”;6、进行编译,“文件”-“生成工程1.exe”,此时也可将生成的EXE另外取名,如取名叫abc.exe。
Excel?VBA的封装,加密
Excel?VBA的封装,加密对想发布自己的Excel VBA的开发者来说,Excel VBA本身不提供VBA代码的加密,封装。
目前比较最可靠的Excel VBA代码加密的方法,就是把VBA代码编译成DLL(动态链接库文件),在VBA中调用,从而实现VBA代码的加密,封装,方便和Excel文件整合发布出去。
DLL文件基本没法被破解,除此之外其他的VBA加密方法,都可以被轻易破解。
用户只需要你的Excel文件,和这个dll文件就够了,不必安装其他任何程序。
编译成DLL文件其实很简单。
机子上安装Visual Basic 6.0就可以编译成dll文件了,Visual Basic .Net反倒有点麻烦。
Visual Basic通过OLE(对象链接引擎)技术调用Excel以及其中的对象。
总的来说,VBA代码只要做一些简单修改就可以了。
主要是对Excel对象的引用,不然VB不能识别vba代码中的对象。
比如如下的VBA代码windows(workbook1).activaterange("L50")=1直接放进VB中编译成Dll就会有问题,因为VB不能直接识别range对象。
需要添加几行简单的代码来告诉vb怎么引用excel中的这些对象:dim xlapp as excel.applicatiiondim xlbook as excel.workbookdim xlsheet as excel.worksheetset xlapp=getobject(,"excel.application)set xlbook=getobject(xxx)set xlsheet=xlbook.worksheets(1)然后就照搬你原有的vba代码,但是前面加上对象引用:xlsheet.range("L50")=1对VBA代码做这样修改,在VB中调试通过,就可以成功的把多个sub子程序全部编译封装在一个单独的DLL文件了。
封装导出excel方法
封装导出excel方法随着数据处理的需求越来越多,导出 Excel 文件已经成为了一个很常见的操作。
而在编写代码的过程中,我们往往需要重复编写生成 Excel 文件的代码,这样不仅浪费时间,而且容易造成代码冗长、难以维护。
因此,我们可以考虑对这个功能进行封装。
封装导出 Excel 方法的好处在于:1. 提高代码可复用性,避免代码重复。
将生成 Excel 文件的代码封装成一个方法后,我们可以在不同的地方调用该方法,避免了重复编写代码的时间浪费和代码冗长的问题。
2. 方便维护代码。
将生成 Excel 文件的代码封装成方法后,我们可以通过修改封装好的方法来实现对整个项目中的导出 Excel 功能的修改。
这样可以避免因为代码散落在不同的地方而导致的维护难度大的问题。
3. 提高代码的可读性。
将生成 Excel 文件的代码封装成方法后,我们可以通过方法名来快速理解该方法的功能,提高了代码的可读性。
在进行封装导出 Excel 方法的时候,我们需要考虑以下几个方面:1. 参数设计。
我们需要考虑到需要导出的数据和导出的文件名等参数。
2. Excel 格式。
我们需要考虑到导出的 Excel 文件的格式,如文件扩展名、文件头信息、工作表名称等。
3. 数据处理。
在生成 Excel 文件的过程中,我们需要将数据进行转换和处理,以便于写入 Excel 文件。
4. 错误处理。
我们需要考虑到方法执行过程中可能出现的错误,并对这些错误进行处理。
综上所述,封装导出 Excel 方法不仅可以提高代码的可复用性、可维护性和可读性,而且还可以提高代码执行的效率和准确性。
因此,在进行数据处理的时候,我们应该尝试将常见的操作进行封装,以提高代码的质量和效率。
快速制作CPU封装EXECL表格的方法(原创)
UFO&ET原创
本次以ATMEL SAM V71 来作为例子,LQFP144,耗时4小时左右
使用新的CPU时没有现成的封装库,自己制作很麻烦,通常采用从datesheet一个一个copy,一个CPU封装excel表格做好要几天时间,最近发现了一种新方法。
借助txt和UE两种简单的软件轻松实现制作CPU引脚封装表格。
Txt --------保存整理前和整理后的引脚表
UE---------使用列编辑模式快速整理从CPU手册直接copy过来的引脚表
EXCEL-----最终制作的引脚封装表格
1、新建文本文档整理.txt和引脚.txt
2、Copy手册中的cpu引脚表格到整理TXT中
复杂过来的是很乱的,要先进行第一步处理,使用Ctrl+H查找替换功能
首选把各部分的空格间距调大
查找内容输入一个空格,替换内容输入3个空格,当然5个也行,随便,然后全部替换
接着,要把命名中的(1)、(2)...(n)这种东西先去掉,从1开始查找替换全部替换成空格,初步处理就弄好了,进行下一步,保存。
3、使用UEdit打开整理文档。
开始整理,使用列编辑模式,把表格各部分对齐整理好。
如图:
4、循环使用步骤2和3完成整个表格的整理。
5、新建EXCEL表格保存最终的表格。
使用UE列模式copy每一栏的数据到EXCEL,直至全部复制完成。
复制:
粘贴:
重复copy每一个列的所有数据,直到全部完成。
如果使用AltIum Designer,就可以使用批量功能来建立封装库了。
关于Altium利用EXCEL表格快速制作原理图封装的方法
关于Altium利用EXCEL表格快速制作原理图封装的方法
在制作原理图封装元件引脚数较多时可以使用AD自带的“smart grid insert”功能快速的进行制作,具体方法如下:**********本文以制作一个简单的AT24C02为例进行简单的说明**********
1、打开excel,按下图格式(第一行为标准格式,不可更改),将引脚编号和引脚名称进行全部输入,X1和Y1表示的是引脚在原理图封装库中对应的位置(这个位置自己到原理图封装库里双击下管脚看其属性就能明白了),全部输入完成后,选中所有的然后进行复制(CTRL+A在CRTL+C);
2、打开AD软件,在原理图库新建一个新的元器件,如图所示;
3、操作完上一步后,点击右下角的SCH工具栏选择SCHLIB List,如图所示;
4、操作完上一步后出现SCHLIB List界面,选择Edit,如下图所示;
5、在上图界面空白处右键选择Smart Grid Insert;
6、操作完上一步后出现如下图界面(一定要复制了刚才制作好的表格才会出现这个界面哦),点击AutomaticalyDeterminePAaste,然后点击OK;
7、操作完上一步之后出现如下图所示,到这里只要加上外框,改下属性等等整个原理图封装就完成了!
——Tinke-创造未来,成就梦想!——。
Execl简单封装教程
Execl简单封装教程作者申明:1、在封装过程中所使用代码的知识产权归原有作者所有,我只负责整理教程和制作插图而已;2、此封装为简单封装,只是为了跳过宏,封装后的文件为exe文件,封装后的文件可以保存;3、不涉及到文件保护方面的功能,如果你是为了保护文件而封装,那么,此教程不适合你;4、此教程只归像我这样的菜鸟学习,高手就不用看此教程了,以免浪费你的时间;封装开始:1、首先你得安装VB6.0软件,(网上有精简版的才5M,本教程也使用VB6.0精简版)2、打开VB6.0新建一个“标准exe”工程,如下图所示:点击打开,如下图:(在这里,我们要做一个启动时的等待界面,把中间的那个form1窗口的标题栏去掉,并设程序图标和背景图以及该程序界面启动时默认屏幕居中方式)要实现上面所说的功能,操作如下:在红框的区域分别找到并按下面的设置即可:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。
设置后的效果如下图所示:(按需要加入自已的图片和指定自已喜欢的图标)接下来的工作,我们要在窗体上面放一个时间控件,点击时间控件按钮,在窗体任何位置拖一个框即可,时间控件就放上去了,如图所示:接下来,双击窗体,会弹出一个代码框(注意不是在时间控件上双击,要在窗体上面双击,也就是显示有启动界面的位置双击)如下图所示:删除里面已有的两行代码,把下面的代码复制进去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 LongPrivate Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As LongPrivate Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Const MAX_PATH = 260Private Const EXE_SIZE = 81920 '本EXE实际字节大小Private Type FileSectionBytes() As ByteEnd TypePrivate Type SectionedFileFiles() As FileSectionEnd TypeDim StopTime As IntegerPrivate Sub Form_Activate()If Command() = "" Then Main1End SubPrivate Sub Form_Load()On Error Resume NextIf Command() = "" ThenForm1.Visible = TrueSetWindowPos Form1.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1 '将封面置为最顶层窗体ElseForm1.Visible = FalseForm1.Timer1.Enabled = TrueEnd IfEnd SubSub Main1()Dim StartXLSByte, I, J As LongDim AppPath, XlsTmpPath As StringDim myfile As SectionedFileDim xlApp As Excel.Application '定义EXCEL类Dim xlBook As Excel.Workbook '定义工件簿类Dim xlsheet As Excel.Worksheet '定义工作表类AppPath = App.PathXlsTmpPath = 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 #1ReDim myfile.Files(1)ReDim myfile.Files(1).Bytes(1 To LOF(1) - EXE_SIZE)Open XlsTmpPath For Binary As #2Get #1, EXE_SIZE + 1, myfile.Files(1).Bytes '此处数字要根据EXE实际头文件大小更改设定 Put #2, 1, myfile.Files(1).BytesClose #1Close #2Set 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 = 0Me.Timer1.Enabled = True '启动时钟End SubPrivate Function GetTempFile() As String '用来产生系统临时文件名Dim lngRet As LongDim strBuffer As String, strTempPath As StringstrBuffer = String$(MAX_PATH, 0)lngRet = GetTempPath(Len(strBuffer), strBuffer)If lngRet = 0 Then Exit FunctionstrTempPath = Left$(strBuffer, lngRet)strBuffer = String$(MAX_PATH, 0)lngRet = GetTempFileName(strTempPath, "tmp", 0&, strBuffer) If lngRet = 0 Then Exit FunctionlngRet = InStr(1, strBuffer, Chr(0))If lngRet > 0 ThenGetTempFile = Left$(strBuffer, lngRet - 1)ElseGetTempFile = strBufferEnd IfEnd FunctionPrivate Sub Timer1_Timer()On Error Resume NextIf Command() <> "" ThenIf VBA.Dir(Command()) <> "" ThenKill Command() '删除本次运行遗留的临时XLS文件 ElseEndEnd IfElseStopTime = StopTime + 1 '计时累加If StopTime = 1 Then Unload Me: End '2秒后自动关闭退出End IfEnd Sub如下图所示:接下来点击工程菜单,选择引用,弹出一个对话框,如图所示:并勾选:Microsoft Excel。
在-Windows-7-环境下封装-Excel-VBA-代码
在Windows 7 环境下封装Excel VBA 代码一、安装Visual Basic 6.0在Windows 7 下安装Visual Basic 6.0安装会遇到一些兼容性问题,而Windows XP 则很顺利。
当某些程序必须要在Windows 7 下调试的时候,就一定要面对Windows 7 了。
(一)进入安装文件夹,点击“Setup.exe”运行Visual Basic 6.0安装程序。
(二)出现兼容性问题提示,单击“运行程序”。
(三)进入Visual Basic 6.0安装向导,单击“下一步”。
(四)出现“最终用户许可协议”对话框,选择“接受协议”,单击“下一步”。
(五)进入“产品和用户ID”对话框,在“请输入产品的ID号”处输入ID号,全部输入0至9中的任意一个,然后单击“下一步”。
(六)保持默认选择“安装Visual Basic 6.0中文企业版”,单击“下一步”。
(七)选择公用安装文件夹,采取默认或自定义均可。
然后单击“下一步”(八)再次出现兼容性问题提示,直接单击“运行程序”。
(九)进入Visual Basic 6.0 安装程序,单击“继续”后,单击“确定”。
(十)出现“发现了旧版本的Visual SourceSafe”提示,选择“是”(十一)在选择安装类型对话框中,封装Excel VBA 代码选择“典型安装”即可。
(十二)出现“使用新的Visual SourceSafe数据库格式”提示,选择“是”(十三)开始Visual Basic 6.0安装。
(十四)安装完毕,单击“重新启动Windows”。
重新启动Windows后,自动弹出下面的对话框。
如果需要帮助文档,可单击“下一步”继续安装MSDN,对于Visual Basic 6.0的初学者,建议安装。
在安装MSDN 过程中,插入MSDN安装盘按照提示进行安装。
如果不需要帮助文档,单击“退出”,Visual Basic 6.0安装完成。
封装导出excel方法
封装导出excel方法封装导出 Excel 方法是一个常见的需求,可以帮助我们将数据以Excel 表格的形式进行导出,方便查看和处理。
下面将介绍如何通过封装实现这个功能。
在封装导出 Excel 方法之前,我们需要先安装 openpyxl。
可以通过pip 命令来安装,例如 `pip install openpyxl`。
接下来,我们需要创建一个名为 ExcelExporter 的类来封装我们的导出 Excel 方法。
这个类应该包含一个名为 export 的方法,用于导出数据到 Excel 文件。
```pythonimport openpyxlclass ExcelExporter:def __init__(self, filename='output.xlsx'):self.workbook = openpyxl.Workbookself.filename = filenameself.sheet = self.workbook.activedef export(self, data):#写入表头headers = list(data[0].keys()for col_num, header in enumerate(headers, 1):col_letter = openpyxl.utils.get_column_letter(col_num)self.sheet['{}1'.format(col_letter)] = header#写入数据for row_num, row_data in enumerate(data, 2):for col_num, col_name in enumerate(headers, 1):col_letter = openpyxl.utils.get_column_letter(col_num)value = row_data[col_name]self.sheet['{}{}'.format(col_letter, row_num)] = value#保存文件self.workbook.save(self.filename)```在这个实现中,我们传入一个名为 data 的参数,它是一个字典列表,每个字典表示一行数据。
easyexcel 公式和函数处理 封装
一、公式和函数的重要性在表格处理中,公式和函数是非常重要的,能够帮助我们快速计算、分析数据,提高工作效率。
EasyExcel作为一款功能强大的表格处理工具,也提供了丰富的公式和函数,能够满足不同需求的数据处理。
掌握并封装好EasyExcel的公式和函数处理是非常有必要的。
二、 EasyExcel公式和函数的基本操作1. 使用公式在EasyExcel中,我们可以使用标准的Excel公式来进行数据计算。
SUM、AVERAGE、MAX、MIN等公式能够帮助我们进行简单的数据汇总和统计工作。
EasyExcel还支持自定义公式,可以根据自己的需求编写相应的计算公式。
2. 使用函数除了标准的Excel公式外,EasyExcel还提供了一些特定的函数,能够帮助我们进行更复杂的数据处理。
VLOOKUP、INDEX、MATCH等函数在数据查找和匹配方面有着很大的作用。
掌握这些函数的使用方法,能够帮助我们高效地进行数据处理和分析工作。
三、 EasyExcel公式和函数的封装1. 封装公式在实际工作中,我们可能会经常使用一些特定的公式来进行数据计算。
为了方便使用和管理,我们可以将这些公式进行封装,成为自定义的函数。
在EasyExcel中,我们可以通过宏来实现公式的封装,将常用的公式封装成为自定义函数,方便后续的使用。
这样能够简化公式的使用,提高工作效率。
2. 封装函数除了封装公式外,我们还可以将一些常用的函数进行封装。
将频繁使用的数据查找和匹配函数封装成为一个自定义函数,能够方便我们在不同的表格中进行数据查找和匹配工作。
这样能够节省大量的时间,提高工作效率。
四、 EasyExcel公式和函数的封装实例以一个实际的案例来说明,在一个销售业绩表格中,我们经常需要根据销售员工的尊称来查找对应的销售业绩。
这时,我们可以使用VLOOKUP函数来实现,但每次都需要编写一长串的VLOOKUP函数来进行数据查找。
为了简化这一过程,我们可以将VLOOKUP函数进行封装,成为一个自定义函数。
数据封装和解封装过程简述
数据封装和解封装过程简述嘿,朋友!今天咱们来聊聊数据封装和解封装这个超有趣的事儿。
你可别一听这名字就觉得头疼,其实呀,就像我们生活中的包裹一样。
我先来说说数据封装吧。
想象一下,我是一个数据发送者,就叫我小明吧。
我有一些很重要的数据要发给我的朋友小红,这些数据呢,就像是我要送出去的宝贝。
可是这些宝贝不能就这么赤裸裸地送出去呀,就好比你不会把一颗珍贵的钻石就那么随手一放就给人送过去吧。
这时候呢,就需要进行数据封装啦。
数据封装就像是给这个宝贝精心打包的过程。
首先呢,最接近数据本身的那一层包装,我们叫它应用层。
这一层就像是给宝贝先裹上一层柔软的丝绸,它把数据按照应用程序的格式进行处理。
比如说,我要发一个文字消息给小红,这个文字消息在应用层就被整理成合适的格式,就好像丝绸把钻石包裹得服服帖帖的。
然后呢,到了传输层。
这一层啊,就像是给包裹加上了一个小标签,上面写着这个数据是从哪里来的,要到哪里去,还有一些关于这个数据传输的小要求,比如说传输的速度啦,可靠性啦。
这就好比你在包裹上写清楚寄件人和收件人的地址一样重要。
传输层会把来自应用层的数据进行进一步的处理,让这个数据在网络传输中能被准确地识别和管理。
哎呀,这一步可不能马虎呢!要是这标签写错了,数据可就找不到正确的方向啦。
接着呢,就是网络层啦。
网络层就像是给包裹找了一个快递盒子,这个盒子负责把数据从一个网络节点送到另一个网络节点。
它会给数据加上网络地址,就像快递盒子上的物流码一样。
这个网络地址能让数据在复杂的网络环境里顺利地穿梭。
你想啊,如果没有这个地址,这个包裹就像无头苍蝇一样到处乱撞,怎么能准确地到达小红的手里呢?最后,到了数据链路层。
这一层就像是给快递盒子再裹上一层结实的硬纸板,还贴上了收件人的详细地址标签。
它把网络层传来的数据转化成适合物理介质传输的格式,比如说通过网线或者无线信号传输。
这就好比把包裹包装得严严实实的,确保它在运输过程中不会损坏。
好啦,经过这么多层的包装,数据就像一个精心打包好的包裹一样,被发送出去啦。
Excel的函数库与表格及模块的封装与调用
Excel的函数库与表格及模块的封装与调用Excel是一款强大的电子表格应用程序,广泛用于日常办公、商业分析和数据处理等领域。
为了方便用户快速完成各种复杂的计算和数据处理任务,Excel内置了大量的函数库,在不同的场景下使用不同的函数可以大大提高工作效率和准确性。
Excel函数库的组成Excel函数库包含了超过400个不同类型的函数,它们按照功能或类型可以划分为以下几类:1.数值函数:主要用于数值运算,包括基本的数学运算,如加、减、乘、除,以及一些高级的计算函数,如三角函数、对数函数等。
2.文本函数:主要用于字符串的处理和格式化,包括合并、拆分、修改大小写、清除空格和特殊字符等功能。
3.日期和时间函数:主要用于日期和时间格式的处理,如计算日期差值,提取日期和时间分量,格式化日期和时间等。
4.逻辑函数:主要用于逻辑运算,如IF函数可以根据条件判断的结果返回不同的值或执行不同的操作,AND函数可以判断多个条件是否都成立。
5.信息函数:主要用于获取单元格和工作表的信息,如CELL函数可以返回单元格的属性信息和值类型,SHEET函数可以返回当前工作表的名称,INDEX函数可以返回数据中指定位置的值。
6.数据函数:主要用于数据分析和处理,如SUM函数可以计算数据的总和,AVERAGE函数可以计算数据的平均值,COUNT函数可以计算数据的数量等。
Excel函数的调用方法在Excel中使用函数可以采用两种方式:直接输入函数公式和插入函数。
1.直接输入函数公式直接输入函数公式是最基本的方法,可以通过以下的步骤实现:(1)选中要输入公式的单元格。
(2)在单元格中输入“=”符号,表示进入公式编辑模式。
(3)输入函数名称,函数名称后应该跟着左右括号和参数,函数和参数之间用逗号分隔。
(4)按下“Enter”键,Excel会自动计算公式并返回结果。
例如,在单元格A1中输入“=SUM(B1:B5)”即可计算B1到B5单元格的数值总和。
VB封装Excel宏代码的三个方法
VB封装Excel_VBA成DLL技巧使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过。
一、启动VB6.0:执行:“文件夹(F)”——“新建(N)”——选择“ActiveX DLL”,如下图1:二、引用:VB中对Excel的引用执行:“工程(P)”——“引用(N)”——选择所要引用的项目:如下图2Excel 2000中:Microsoft Excel 9.0 Object LibraryMicrosoft Office 9.0 Object LibraryExcel 2003中:Microsoft Excel 11.0 Object LibraryMicrosoft Office 11.0 Object Library三、编写代码:1、将工程默认名称“工程1”,改为“zygtest”,将类模块默认名称“Class1”,改为“zyg365”,2、在类模块的代码编辑区写入代码:如下图3模块名称为“hongtong”,代码如下在VB中编写代码时:要注意以下声名Dim XLAPP As ObjectSet XLAPP = GetObject(, "Excel.Application")代码中引用对象,如SHEET,Cell等,前面要加“XLAPP.”(或按照Sub hongtong() 中的格式编写。
)Sub hongtong()Dim excelApp As New Excel.ApplicationDim excelWorkBook As Excel.WorkbookDim excelWorksheet As Excel.WorksheetSet excelWorkBook = '创建新工作簿Set excelWorksheet = excelWorkBook.Sheets(1)excelWorksheet.Cells(2, 3) = "宏通" '写入数据excelWorksheet.Cells(3, 4) = "zyg365" '写入数据excelApp.Visible = True '显示excel界面,用于调试excelWorkBook.PrintPreview '打印预览excelWorkBook.PrintOut '打印输出excelWorkBook.Saved = True'excelWorkBook.Close '关闭工作薄'excelApp.Quit '退出excelEnd Sub四、工程属性设置:(可以不设置,本步骤可以省略)为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4执行:“工程(P)”——“工程1属性(E)…”(当前工程中为:“zygtest属性(E)…”)五、保存工程、测试、打包生成Dll文件:1、保存:单击保存,保存到一个文件夹中;2、测试:执行工具栏上的“启动”(右向的三角图标)按钮,检查是否存在错误;3、打包生成Dll文件:执行:“文件(F)”——“生成工程1.dll(K)”(当前工程中为:“zygtest.dll”),重命名为“zyg.dll”,至此,Dll文件制作结束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[原创]XLS封装成EXE制作全攻略XLS封装成EXE制作全攻略■ldhyob 2003.12 曾在论坛发表过一张帖,是关于制作动态EXE例子(/cdb/viewthread.php?tid=15781)的,大家对此兴趣颇浓,都建议公开详细制作细节,故决定写出此文以帮助关注那张帖的版友们能完全自已独立完成xls2exe的过程,实现简单的封装。
首先申明,将xls做成exe并不是指就能使您的VBA 工程受到坚强的保护,当然您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等,但“道高一尺,魔高一丈”,所以就没有必要去追求所谓的“完美”加密……关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。
假如您手头已有一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 = FalseForm1.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$(MAX_PATH, 0) lngRet = GetTempPath(Len(strBuffer), strBuffer) If lngRet = 0 Then Exit Function strTempPath = Left$(strBuffer, lngRet) strBuffer = String$(MAX_PATH, 0) lngRet = GetTempFileName(strTempPath, "tmp", 0&, strBuffer) If lngRet = 0 Then Exit Function lngRet = InStr(1, strBuffer, Chr(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() <> "" Then If VBA.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,将其置为隐藏。