【vb精品源码栏目提醒】:网学会员在vb精品源码频道为大家收集整理了“VB打开EXCEL的方法 - 其它资料“提供大家参考,希望对大家有所帮助!
VB 打开 EXCEL 的方法一楼的没有指明Dim xlBook As Excel.WorkBookSet xlBook App.Workbooks.Openquot文件名quot这种语法同样要求 excel 已经存在才能操作。
Public xlApp As Excel.ApplicationPublic xlBook As Excel.WorkbookPublic xlChar As New Excel.ChartPublic xlSheet As New Excel.WorksheetSet xlApp New Excel.ApplicationSet xlApp CreateObjectquotExcel.ApplicationquotSet xlBook xlApp.Workbooks.AddSet xlSheet xlBook.Worksheets.AddxlSheet.Cells1 1 quot测试quot 写入内容xlBook.SaveAs quotFILENAMEquot 保存文件xlApp.QuitSet xlApp Nothing本方法采用 add 添加 excel 文件和 datasheet,然后用 save 保存。
如果用 xlApp.VisibleFalse,则自动生成文件。
但是如果文件已经存在,则会弹出是否覆盖的提示。
因此,最好先在程序中检查文件是否已经存在,如果存在,则用普通方法打开。
如果不存在,则用 add 添加,并保存。
★打开相对路径下的文件Private Sub Command1_ClickShell App.Path amp quotaaa.batquotEnd Sub还有更简单的:Private Sub Command1_ClickShell quotaaa.batquotEnd Subaaa.bat 就是那个 BAT 的名字.那就不一定......因为 SHELL 只对可执行文件有效.你可用 WINDOWS 外壳程序 explorer.exe 打开任何文件包括文件夹代码:Private Sub Command1_ClickShell quotexplore.exe aaa.jpgquotEnd Sub★
VB 调用 EXCEL 自带的查询功能在表格中查找内容Private Sub ComCx_ClickOn Error GoTo 50i xlBook.Worksheetsquot代码quot.RangequotA:Aquot.FindTrimTexDm.Text.Row★将程序中所有这一类的对象的某一属性全部更改为需要的属性Dim Item As Object 定义对象For Each Item In MeIf TypeOf Item Is TextBox Then Item.Text quotquot 将所有 TextBox 的 Text 属性值变为空If TypeOf Item Is ComboBox Then Item.ListIndex -1 将所有的 ComboBox 的 ListIndex 属性值变为“-1”NextIf Not i 0 ThenDm TrimTexDm.TextSm TrimxlBook.Worksheetsquot代码quot.Cellsi quotBquot.ValueDw TrimxlBook.Worksheetsquot代码quot.Cellsi quotDquot.ValueTexSm.Text Sm amp quot quot amp quotquot amp Dw amp quotquotComQd.Visible TrueGoTo 100End If50TexSm.Text quot没有找到相匹配的信息!quot100End Sub★如何使编的程序可以调用 excel首先要引用再定义对象及其类型Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetSet xlApp CreateObjectquotExcel.Applicationquot 创建 EXCEL 对象Set xlBook xlApp.Workbooks.OpenquotD:检包组合金厂代码查询xls合金 JDE 代码.xlsquotxlApp.Visible FalseSet xlSheet xlBook.Worksheetsquot确认信息quot★另存为ChDir quotD:quot ActiveWorkbook.SaveAs Filename:quotD:合金厂产品质检明细表.xlsquot FileFormat:xlExcel8 _ Password:quotquot WriteResPassword:quotquot ReadOnlyRecommended:False _ CreateBackup:FalseVB 是常用的应用软件开发工具之一,由于
VB 的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。
因此有很多程序员现在已经充分利用 EXECL 的强大报表功来实现报表功能。
但由于
VB 与 EXCEL 由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。
一、
VB 读写 EXCEL 表:
VB 本身提自动化功能可以读写 EXCEL 表,其方法如下: 1、在工程中引用 Microsoft Excel 类型库: 从quot工程quot菜单中选择quot引用quot栏; (E 选择 Microsoft Excel 9.0 Object LibraryXCEL2000),然后选择quot确定quot。
表示在工程中要引用EXCEL 类型库。
2、在通用对象的声明过程中定义 EXCEL 对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet 3、在程序中操作 EXCEL 表常用命令:Set xlApp CreateObjectquotExcel.Applicationquot 创建 EXCEL 对象Set xlBook xlApp.Workbooks.Openquot文件名quot 打开已经存在的 EXCEL 工件簿文件xlApp.Visible True 设置 EXCEL 对象可见(或不可见)Set xlSheet xlBook.Worksheetsquot表名quot 设置活动工作表xlSheet.Cellsrow col 值 给单元格(rowcol)赋值xlSheet.PrintOut 打印工作表xlBook.Close True 关闭工作簿xlApp.Quit 结束 EXCEL 对象Set xlApp Nothing 释放 xlApp 对象xlBook.RunAutoMacros xlAutoOpen 运行 EXCEL 启动宏xlBook.RunAutoMacros xlAutoClose 运行 EXCEL 关闭宏 4、在运用以上
VB 命令操作 EXCEL 表时,除非设置 EXCEL 对象不可见,否则
VB 程序可继续执行其它操作,也能够关闭 EXCEL,同时也可对EXCEL 进行操作。
但在 EXCEL 操作过程中关闭 EXCEL 对象时,
VB 程序无法知道,如果此时使用 EXCEL 对象,则
VB 程序会产生自动化错误。
形成
VB 程序无法完全控制 EXCEL 的状况,使得
VB 与 EXCEL 脱节。
二、 EXCEL 的宏功能: EXCEL 提供一个 Visual Basic 编辑器,打开 Visual Basic 编辑器,其中有一工程属性窗口,点击右键菜单的quot插入模块quot,则增加一个quot模块 1quot,在此模块中可以运用 Visual Basic 语言编写函数和过程并称之为宏。
其中,EXCEL 有两个自动宏:一个是启动宏(Sub Auto_Open),另一个是关闭宏(Sub Auto_Close)。
它们的特性是:当用 EXCEL 打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。
但是通过
VB 的自动化功能来调用 EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在
VB 中通过命令xlBook.RunAutoMacros xlAutoOpen和 xlBook.RunAutoMacros xlAutoClose 来运行启动宏和关闭宏。
三、
VB 与 EXCEL 的相互勾通: 充分利用 EXCEL 的启动宏和关闭宏,可以实现
VB 与 EXCEL 的相互勾通,其方法如下: 在 EXCEL 的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。
VB 程序在执行时通过判断此标志文件存在与否来判断 EXCEL 是否打开,如果此标志文件存在,表明 EXCEL 对象正在运行,应该禁止其它程序的运行。
如果此标志文件不存在,表明 EXCEL 对象已被用户关闭,此时如果要使用 EXCEL 对象运行,必须重新创建 EXCEL 对象。
四、举例: 1、在
VB 中,建立一个 FORM,在其上放置两个命令按钮,将Command1 的 Caption 属性改为 EXCEL,Command2 的 Caption 属性改为 End。
然后在其中输入如下程序:Dim xlApp As Excel.Application 定义 EXCEL 类Dim xlBook As Excel.Workbook 定义工件簿类Dim xlsheet As Excel.Worksheet 定义工作表类Private Sub Command1_Click 打开 EXCEL 过程 If DirquotD:tempexcel.bzquot quotquot Then 判断 EXCEL 是否打开 Set xlApp CreateObjectquotExcel.Applicationquot 创建 EXCEL 应用类 xlApp.Visible True 设置 EXCEL 可见 Set xlBook xlApp.Workbooks.OpenquotD:tempbb.xlsquot 打开 EXCEL 工作簿 Set xlsheet xlBook.Worksheets1 打开 EXCEL 工作表 xlsheet.Activate 激活工作表 xlsheet.Cells1 1 quotabcquot 给单元格 1 行驶列赋值 xlBook.RunAutoMacros xlAutoOpen 运行 EXCEL 中的启动宏 Else MsgBox quotEXCEL 已打开quot End IfEnd SubPrivate Sub Command2_Click If DirquotD:tempexcel.bzquot ltgt quotquot Then 由
VB 关闭 EXCEL xlBook.RunAutoMacros xlAutoClose 执行 EXCEL 关闭宏 xlBook.Close True 关闭 EXCEL 工作簿 xlApp.Quit 关闭 EXCEL End If Set xlApp Nothing 释放 EXCEL 对象 EndEnd Sub 2、在D盘根目录上建立一个名为 Temp 的子目录,在 Temp 目录下建立一个名为quotbb.xlsquot的 EXCEL 文件。
3、在quotbb.xlsquot中打开 Visual Basic 编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:Sub auto_open Open quotd:tempexcel.bzquot For Output As 1 写标志文件 Close 1End SubSub auto_close Kill quotd:tempexcel.bzquot 删除标志文件End Sub 4、运行
VB 程序,点击 EXCEL 按钮可以打开 EXCEL 系统,打开 EXCEL系统后,
VB 程序和 EXCEL 分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在
VB 程序中重复点击 EXCEL 按钮时会提示 EXCEL已打开。
如果在 EXCEL 中关闭 EXCEL 后再点 EXCEL 按钮,则会重新打开EXCEL。
而无论 EXCEL 打开与否,通过
VB 程序均可关闭 EXCEL。
这样就实现了
VB 与 EXCEL 的无缝连接。
★JDE 代码查询程序源代码Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim Dm As StringDim Sm As StringDim Dw As StringDim i As IntegerDim SouS As ObjectPrivate Sub ComCx_Clicki 2Do While i lt 10000Dm TrimxlBook.Worksheetsquot代码quot.Cellsi quotAquot.Value If Dm TrimTexDm.Text Then Sm TrimxlBook.Worksheetsquot代码quot.Cellsi quotBquot.Value Dw TrimxlBook.Worksheetsquot代码quot.Cellsi quotDquot.Value TexSm.Text Sm amp quot quot amp quotquot amp Dw amp quotquot GoTo 100 End Ifi i 1LoopTexSm.Text quot没有找到相匹配的信息!quotOn Error GoTo 50i xlBook.Worksheetsquot代码quot.RangequotA:Aquot.FindTrimTexDm.Text.RowIf Not i 0 ThenDm TrimTexDm.TextSm TrimxlBook.Worksheetsquot代码quot.Cellsi quotBquot.ValueDw TrimxlBook.Worksheetsquot代码quot.Cellsi quotDquot.ValueTexSm.Text Sm amp quot quot amp quotquot amp Dw amp quotquotComQd.Visible TrueGoTo 100End If50TexSm.Text quot没有找到相匹配的信息!quot100End SubPrivate Sub ComQc_ClickTexDm.Text quot请在此输入 10 位数的代码quotTexSm.Text quotquotDm quotquotSm quotquotDw quotquotComQd.Visible FalseEnd SubPrivate Sub ComQd_ClickxlSheet.Cells2 quotAquot.Value DmxlSheet.Cells2 quotBquot.Value SmxlSheet.Cells2 quotCquot.Value DwxlBook.SaveEnd SubPrivate Sub ComTc_ClickxlBook.Close FalsexlApp.QuitSet xlApp NothingSet xlBook NothingSet xlSheet NothingEndEnd SubPrivate Sub Form_LoadSet xlApp CreateObjectquotExcel.Applicationquot 创建 EXCEL 对象Set xlBook xlApp.Workbooks.OpenApp.Path amp quotxls合金 JDE 代码.xlsquotxlApp.Visible FalseSet xlSheet xlBook.Worksheetsquot确认信息quotEnd SubPrivate Sub TexDm_DblClickTexDm.Text quotquotEnd Sub★ select case.... case ... end select 用法:Select Case ComFgYy1.Text Case quot缺边掉角quot xlsheet.Cellsi quotPquot.Value TrimTexFg1P.Text xlsheet.Cellsi quotQquot.Value TrimTexFg1Kg.Text xlsheet.Cellsi quotRquot.Value TrimTexFgQk1.Text Case quot变形quot xlsheet.Cellsi quotSquot.Value TrimTexFg1P.Text xlsheet.Cellsi quotTquot.Value TrimTexFg1Kg.Text xlsheet.Cellsi quotUquot.Value TrimTexFgQk1.Text Case quot表面鼓泡quot xlsheet.Cellsi quotVquot.Value TrimTexFg1P.Text xlsheet.Cellsi quotWquot.Value TrimTexFg1Kg.Text xlsheet.Cellsi quotXquot.Value TrimTexFgQk1.Text Case quot尺寸超差quot xlsheet.Cellsi quotYquot.Value TrimTexFg1P.Text xlsheet.Cellsi quotZquot.Value TrimTexFg1Kg.Text xlsheet.Cellsi quotAAquot.Value TrimTexFgQk1.Textend select★ 添加子程序的时候,要在括号里面声明要从主程序引用的变量和对象Public Sub FangGuoByVal i As Integer ByVal xlapp As Excel.Application ByVal xlbook As Excel.Workbook ByVal xlsheet As Excel.Worksheet ——————————向下为放过区域—————————————————————— Debug.Print i 即显信息 ————放过 1—————— Select Case ComFgYy1.Text Case quot缺边掉角quot xlsheet.Cellsi quotPquot.Value TrimTexFg1P.Text xlsheet.Cellsi quotQquot.Value TrimTexFg1Kg.Text xlsheet.Cellsi quotRquot.Value TrimTexFgQk1.Text Case quot变形quot xlsheet.Cellsi quotSquot.Value TrimTexFg1P.Text xlsheet.Cellsi quotTquot.Value TrimTexFg1Kg.Text xlsheet.Cellsi quotUquot.Value TrimTexFgQk1.Text end selectEnd Sub★点击窗口右上角的关闭 是 “unload” 或 “QueryUnload”事件★子程序改变来自主程序的变量的值:Private Sub Com1_Click dim CfZ as integer QrCf CfZ If CfZ 1 Then quot MsgBox quot放过原因或报废原因有重复! amp vbCrLf amp quot请查看红色标识......quot End Ifend subPublic Sub QrCfCf As Integer Select Case ComFgYy1.Text Case ComFgYy2.Text If ComFgYy1.Text ltgt quotquot Then ComFgYy1.BackColor ampHFFamp ComFgYy2.BackColor ampHFFamp Cf 1 End If end selectend sub运行效果:如果 case 中 Cf1 执行,则 CfZ 的值变为 1,并弹出消息框★如何判断字符串为是否为数字判断表达式的运算结果是否为数字,返回 Boolean 值(True or False)。
描述返回 Boolean 值指明表达式的值是否为数字。
语法IsNumericexpressionexpression 参数可以是任意表达式。
说明如果整个 expression 被识别为数字,IsNumeric 函数返回 True;否则函数返回 False。
如果 expression 是日期表达式,IsNumeric 函数返回 False。
下面的示例利用 IsNumeric 函数决定变量是否可以作为数值:Dim MyVar MyCheckMyVar 53 赋值。
MyCheck IsNumericMyVar 返回 True。
MyVar quot459.95quot 赋值。
MyCheck IsNumericMyVar 返回 True。
MyVar quot45 Helpquot 赋值。
MyCheck IsNumericMyVar 返回 False。
★在 frmlogin 中设置用户及密码检查功能 Dim LogIn As Boolean Select Case ComUserName.Text Case quot测试quot If txtPassword.Text quot.....quot Then txtUserName.Text quot测试quot LogIn True Else LogIn False End If Case quot魏敏quot If txtPassword.Text quotwmquot Then txtUserName.Text quot魏敏quot LogIn True Else LogIn False End IfCase quot黄选华quotIf txtPassword.Text quothxhquot ThentxtUserName.Text quot黄选华quotLogIn TrueElseLogIn FalseEnd IfCase quot胡丽萍quotIf txtPassword.Text quothlpquot ThentxtUserName.Text quot胡丽萍quotLogIn TrueElseLogIn FalseEnd IfCase quot张岚quotIf txtPassword.Text quotzlquot ThentxtUserName.Text quot张岚quotLogIn TrueElseLogIn FalseEnd IfCase quot冯现萍quotIf txtPassword.Text quotfxpquot ThentxtUserName.Text quot冯现萍quotLogIn TrueElseLogIn FalseEnd IfCase quot陶学群quotIf txtPassword.Text quottxqquot ThentxtUserName.Text quot陶学群quotLogIn TrueElseLogIn FalseEnd IfCase quot陶明艳quotIf txtPassword.Text quottmyquot ThentxtUserName.Text quot陶明艳quot LogIn True Else LogIn False End If End Select★将一个文件复制到另外一个目录,并改变名字Dim xlFile xlFileCopy As String xlFile App.Path amp quotxls合金厂产品质检明细表.xlsquot xlFileCopy quotC:xlTempquot amp quotCopyquot amp FormatNow quotYYYY_MM_DD_HH_MM_SSquot amp quot.xcquot FileCopy xlFile xlFileCopy★用 format函数自定义日期/时间格式★
VB 读取一个文件的创建日期:我看网上找到一个,用 fso 的 Dim file As Variant Dim fso As Variant Set fso CreateObjectquotScripting.FileSystemObjectquot Set file fso.GetFile.filename MsgBox vbLf amp quot创建时间:quot amp file.DateCreated amp _ vbLf amp quot修改时间:quot amp file.DateLastModified amp _ vbLf amp quot访问时间:quot amp file.DateLastAccessed 另外还有一个问题,就是获取文件版本,可以使用 Declare Function GetFileVersionInfo Lib quotversion.dllquot _ Alias quotGetFileVersionInfoAquot ByVal lptstrFilename As String_ ByVal dwHandle As Long ByVal dwLen As Long lpData As Any As Long 但是我对其中的一些参数意思不太明白。
lptstrfilename 自然是文件的名字,应该是包括全路径的;后面三个参数是什么意思我就不太懂了,特别的,最后一个类型是 any,这是什么东东?★删除指定位置的普通文件Private Declare Function FindFirstFile Lib quotkernel32quot Alias quotFindFirstFileAquot ByVal lpFileName As String lpFindFileData As WIN32_FIND_DATA As LongPrivate Declare Function FindNextFile Lib quotkernel32quot Alias quotFindNextFileAquot ByVal hFindFile As Long lpFindFileData As WIN32_FIND_DATA As LongPrivate Declare Function FindClose Lib quotkernel32quot ByVal hFindFile As Long As LongPrivate Declare Function FileTimeToSystemTime Lib quotkernel32quot lpFileTime As FILETIME lpSystemTime As SYSTEMTIME As LongPrivate Const FILE_ATTRIBUTE_DIRECTORY ampH10Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As IntegerEnd TypePrivate Type FILETIME dwLowDateTime As Long dwHighDateTime As LongEnd TypePrivate Const MAX_PATH 260Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String MAX_PATH cAlternate As String 14End TypeDim Fdata As WIN32_FIND_DATAPrivate Sub DelFilesByVal sPath As String ByVal xD As StringOn Error Resume NextDim R1 As Long R2 As Long TmpTime As StringDim SYSTM As SYSTEMTIMER1 FindFirstFilesPath amp quotquot FdataIf Fdata.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY False ThenFileTimeToSystemTime Fdata.ftCreationTime SYSTMTmpTime CStrSYSTM.wYear amp quot-quot amp CStrSYSTM.wMonth amp quot-quot amp CStrSYSTM.wDay amp quot quot amp CStrSYSTM.wHour amp quot:quot amp CStrSYSTM.wMinute amp quot:quot amp CStrSYSTM.wSecondIf CDateTmpTime lt CDatexD Then Kill sPath amp StrFFdata.cFileNameEnd IfDoR2 FindNextFileR1 FdataIf R2 0 Then Exit DoIf Fdata.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY False ThenFileTimeToSystemTime Fdata.ftCreationTime SYSTMTmpTime CStrSYSTM.wYear amp quot-quot amp CStrSYSTM.wMonth amp quot-quot amp CStrSYSTM.wDay amp quot quot amp CStrSYSTM.wHour amp quot:quot amp CStrSYSTM.wMinute amp quot:quot amp CStrSYSTM.wSecondIf CDateTmpTime lt CDatexD Then Kill sPath amp StrFFdata.cFileNameEnd IfDoEventsLoopEnd SubPrivate Function StrFByVal S As String As StringStrF LeftS InStrS Chr0 - 1End Function用法:(删除“c:xltemp”这里所有的 10 天前的文件)Private Sub Command1_ClickDim NowDate As StringNowDate StrDate - 10DelFiles quotc:xltempquot NowDateEnd Sub(若需要删除指定扩展名的文件,将 R1 FindFirstFilesPath amp quotquot Fdata这一行里面的 “” 改成 “.扩展名”)(另外有一点,在这个程序里面,文件的创建时间是精确到秒的.