用FlexGrid类似控件输出查询excel结果,修改数据后保存到excel,同时重新读取excel数据到控件,我个人比较熟悉这样的操作方式,一般不直接引用excel对象。
读取excel的代码:
Dim objExcelFile As Excel.Application
Dim objImportSheet As Excel.Worksheet
Dim objWorkBook As Excel.Workbook
Set objExcelFile = New Excel.Application '´´创建新的excel应用程序
objExcelFile.DisplayAlerts = False 'Excel不可见
Set objWorkBook = objExcelFile.Workbooks.Open(App.Path & "\公司在册人员名单.xls")
Set objImportSheet = objWorkBook.Sheets(1) '选定工作表单1
objWorkBook.RunAutoMacros (xlAutoOpen)
Do Until line = 3000
line = line + 1
a(line)= objImportSheet.Cells(line, 2)
b(line)= objImportSheet.Cells(line, 3)
Loop
objWorkBook.RunAutoMacros (xlAutoClose) '''后台关闭excel
objWorkBook.Close (True)
objExcelFile.Quit
保存excel数据的代码:
Dim objExcelFile As Excel.Application
Dim objImportSheet As Excel.Worksheet
Dim objWorkBook As Excel.Workbook
Set objExcelFile = New Excel.Application
objExcelFile.DisplayAlerts = False
Set objWorkBook = objExcelFile.Workbooks.Open(App.Path & "\公司在册人员.xls")
Set objImportSheet = objWorkBook.Sheets(1)
objWorkBook.RunAutoMacros (xlAutoOpen)
objImportSheet.Cells(PrizeLine, 7) = a
objImportSheet.Cells(PrizeLine, 8) = b
objImportSheet.Cells(PrizeLine, 9) =c
objExcelFile.SaveWorkspace '''保存表单
objWorkBook.RunAutoMacros (xlAutoClose)
objWorkBook.Close (True)
objExcelFile.Quit
引用用EXCEL对象。具体使用比较复杂。引用对象以后,建立一个新的EXCEL应用,然后打开EXCEL表book,这个会有很多属性,用得最多的是SHEET,可以用SHEET(1,1)代表第一行第一列。可以赋值。
你那个OLE对象完全没必要用。
在VB中,直接用Excel.Application对象读写 .xls文件就行了。