VB新手求助VB操作EXCEL的问题
muyi 2018-10-25 05:07:17 系统配置win10_64系统,VS2017,EXCEL2016
实现简单的excel打开和读取数据的功能:窗口创建两个按钮:一个打开,一个关闭。一个combobox。按打开按钮就打开data.xls这个文件,读取excel文件第二列数据导入combobox1显示,代码如下:
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Dim xlApp As Excel.Application '定义EXCEL类
Dim xlBook As Excel.Workbook '定义工件簿类
Dim xlsheet As Excel.Worksheet '定义工作表类
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If Dir("D:\DoExcel\data.bz") = "" Then '判断EXCEL是否打开
xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
xlApp.Visible = True '设置EXCEL可见
xlBook = xlApp.Workbooks.Open("d:\DoExcel\data.xls") '打开EXCEL工作簿
xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表
xlsheet.Activate() '激活工作表
xlBook.RunAutoMacros(Excel.XlRunAutoMacro.xlAutoOpen) '运行EXCEL中的启动宏
Dim n As Integer = 1
Dim comboboxstring() As String
Do While CStr(xlsheet.Cells(n + 1, 3).value) <> ""
ReDim Preserve comboboxstring(n - 1)
comboboxstring(n - 1) = xlsheet.Cells(n + 1, 2).value
n = n + 1
Loop
Me.ComboBox1.Items.Clear()
Me.ComboBox1.Items.AddRange(comboboxstring)
Else
Me.ComboBox1.Items.Clear()
MsgBox("EXCEL已打开")
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
If Dir("D:\DoExcel\data.bz") <> "" Then '由VB关闭EXCEL
xlBook.RunAutoMacros(Excel.XlRunAutoMacro.xlAutoClose) '执行EXCEL关闭宏
xlBook.Close(True) '关闭EXCEL工作簿
xlApp.Quit() '关闭EXCEL
End If
xlApp = Nothing '释放EXCEL对象
Me.ComboBox1.Items.Clear()
End Sub
End Class
excel里的宏程序:
Sub auto_open()
Open "D:\DoExcel\data.bz" For Output As #1 '写标志文件
Close #1
End Sub
Sub auto_close()
Kill "D:\DoExcel\data.bz" '删除标志文件
End Sub
代码大部分是从网上抄来的。但是运行后不能生成excel.bz的临时文件,所以按关闭按钮也关不了excel文件,出现问题。
网上抄代码时候有一点没做到一致,就是说要加载“Microsoft.office.Interop.Excel 14.0.0.0”的扩展程序集,但是VS2017的项目-添加引用里找不到这个,没有这个调试出错。于是在C盘搜索,在C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c这个文件夹下找到一个dll文件,加载后调试通过,但是点打开按钮时是wps打开的excel文件。
是不是wps打开的造成excel宏没有运行呢?那个Microsoft.office.Interop.Excel 扩展集是否加载的不正确?或者是哪里出了问题?