'声明必要的 API 例程: Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName as String, _ ByVal lpWindowName As Long) As LongDeclare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _ ByVal wParam as Long, _ ByVal lParam As Long) As LongSub GetExcel() Dim MyXL As Object '用于存放 'Microsoft Excel 引用的变量。 Dim ExcelWasNotRunning As Boolean '用于最后释放的标记。'测试 Microsoft Excel 的副本是否在运行。 On Error Resume Next '延迟错误捕获。 '不带第一个参数调用 Getobject 函数将 '返回对该应用程序的实例的引用。 '如果该应用程序不在运行,则会产生错误。 Set MyXL = Getobject(, "Excel.Application") If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear '如果发生错误则要清除 Err 对象。'检测 Microsoft Excel。如果 Microsoft Excel 在运行, '则将其加入运行对象表。 DetectExcel'将对象变量设为对要看的文件的引用。 Set MyXL = Getobject("c:\vb4\MYTEST.XLS")'设置其 Application 属性,显示 Microsoft Excel。 '然后使用 MyXL 对象引用的 Windows 集合 '显示包含该文件的实际窗口。 MyXL.Application.Visible = True MyXL.Parent.Windows(1).Visible = True '在此处对文件 '进行操作。 ' ... '如果在启动时,Microsoft Excel 的这份副本不在运行中, '则使用 Application 属性的 Quit 方法来关闭它。 '注意,当试图退出 Microsoft Excel 时, '标题栏会闪烁,并显示一条消息 '询问是否保存所加载的文件。 If ExcelWasNotRunning = True Then MyXL.Application.Quit End IF Set MyXL = Nothing '释放对该应用程序 '和电子数据表的引用。 End SubSub DetectExcel() '该过程检测并登记正在运行的 Excel。 Const WM_USER = 1024 Dim hWnd As Long '如果 Excel 在运行,则该 API 调用将返回其句柄。 hWnd = FindWindow("XLMAIN", 0) If hWnd = 0 Then '0 表示没有 Excel 在运行。 Exit Sub Else 'Excel 在运行,因此可以使用 SendMessage API '函数将其放入运行对象表。 SendMessage hWnd, WM_USER + 18, 0, 0 End If End Sub
我现在可以把excel文件里的数据读出来了 这样读的: Dim VBExcel As Excel.Application Dim xlbook As Excel.Workbook '定义Excel工作簿对象 Dim xlsheet As Excel.Worksheet '定义Excel工作表对象 Set VBExcel = CreateObject("excel.application") VBExcel.Visible = False '根据操作人员是否需要见到Excel此处可设为TRUE或FALSE Set xlbook = VBExcel.Workbooks.Open(xlsPath.Text) 'ExcelFile为事先设计好的Excel模板文件,包括路径 Set xlsheet = xlbook.Worksheets(1) '1为Excel模板工作表的index,或者用表名称,如:Sheet1 xlsheet.Activate ' MsgBox CStr(xlsheet.Cells(1, 1).Value)我用了MSFlexGrid控件,我想把数据显示到这个控件里 就不知道怎么写了 ^_^,呵呵,再帮帮我吧 如果想多要分,另外再加。
另外,我的excel表不是规则的
怎么办?
strDBSource文件名
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As LongDeclare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _
ByVal wParam as Long, _
ByVal lParam As Long) As LongSub GetExcel()
Dim MyXL As Object '用于存放
'Microsoft Excel 引用的变量。
Dim ExcelWasNotRunning As Boolean '用于最后释放的标记。'测试 Microsoft Excel 的副本是否在运行。
On Error Resume Next '延迟错误捕获。
'不带第一个参数调用 Getobject 函数将
'返回对该应用程序的实例的引用。
'如果该应用程序不在运行,则会产生错误。
Set MyXL = Getobject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear '如果发生错误则要清除 Err 对象。'检测 Microsoft Excel。如果 Microsoft Excel 在运行,
'则将其加入运行对象表。
DetectExcel'将对象变量设为对要看的文件的引用。
Set MyXL = Getobject("c:\vb4\MYTEST.XLS")'设置其 Application 属性,显示 Microsoft Excel。
'然后使用 MyXL 对象引用的 Windows 集合
'显示包含该文件的实际窗口。
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
'在此处对文件
'进行操作。
' ...
'如果在启动时,Microsoft Excel 的这份副本不在运行中,
'则使用 Application 属性的 Quit 方法来关闭它。
'注意,当试图退出 Microsoft Excel 时,
'标题栏会闪烁,并显示一条消息
'询问是否保存所加载的文件。
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF Set MyXL = Nothing '释放对该应用程序
'和电子数据表的引用。
End SubSub DetectExcel()
'该过程检测并登记正在运行的 Excel。
Const WM_USER = 1024
Dim hWnd As Long
'如果 Excel 在运行,则该 API 调用将返回其句柄。
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then '0 表示没有 Excel 在运行。
Exit Sub
Else
'Excel 在运行,因此可以使用 SendMessage API
'函数将其放入运行对象表。
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub
这样读的:
Dim VBExcel As Excel.Application
Dim xlbook As Excel.Workbook '定义Excel工作簿对象
Dim xlsheet As Excel.Worksheet '定义Excel工作表对象
Set VBExcel = CreateObject("excel.application")
VBExcel.Visible = False '根据操作人员是否需要见到Excel此处可设为TRUE或FALSE
Set xlbook = VBExcel.Workbooks.Open(xlsPath.Text) 'ExcelFile为事先设计好的Excel模板文件,包括路径
Set xlsheet = xlbook.Worksheets(1) '1为Excel模板工作表的index,或者用表名称,如:Sheet1
xlsheet.Activate
' MsgBox CStr(xlsheet.Cells(1, 1).Value)我用了MSFlexGrid控件,我想把数据显示到这个控件里
就不知道怎么写了
^_^,呵呵,再帮帮我吧
如果想多要分,另外再加。