系統配置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 擴展集是否加載的不正確?或者是哪里出了問題?
uj5u.com熱心網友回復:
顯然,你的系統中先安裝MS的Office,然后又安裝了金山的WPS Office……
你安裝WPS的時候,它也會把“Excel.Application”系結到它的COM介面上的,
此時你的系統中在創建“Excel.Application”物件時,實際上會加載WPS的et行程。
而WPS對 VBA的支持不太好,有一些“宏功能”它根本沒有實作,因此可能會造成一些不兼容的問題。
并且,WPS“個人版”是不支持宏的,只有它的“專業增強版”才支持。
記得以前安裝WPS2013個人版后,即使“卸載”了,它的那些COM組件注冊資訊都沒清理的,
就比如“Excel.Application物件”,就算卸載WPS了,
在創建時,它還會去加載它的et.exe,然后當然是“失敗”……

所以,建議你先卸載WPS,然后用工具清理一下注冊表資訊,然后再重新安裝一下MS Office ……
然后,再來試試你的代碼…………
uj5u.com熱心網友回復:
原來如此。但是作業中要用wps啊。有什么辦法能解決?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/42050.html
標籤:VB基礎類
上一篇:求大神,vb讀取記憶體中的字串
