用GetObject,如出错,则没启动。
解决方案 »
- 隐藏菜单问题
- 如何知道查找到的记录的记录位置号码?
- 有几个程序有错误,我不知道错在哪啊,求帮忙!~我是初学者
- 怎样实现把listbox的所有项在打印机上打印出来?
- RandomArray(ptr) = Int(Rnd() * 100)这句语句有问题吗,我照书上抄的,难道还是我的VB有问题
- 循环下标越界问题
- ######## 根据日期筛选的select语句###############
- 关于VB中调用存储过程返回值的问题...
- 哪位能给提供一下水晶报表FOR VB6的安装程序,谢谢。我可QQ接收
- odbc问题?
- 如何在win2000中添加一个系统环境变量?
- 向高手求救:程序调试(运行)时引起的内存问题(急)!!!!
ByVal lpWindowName As Long) As LongPublic Sub ExistExcel()
Dim hwnd As Longhwnd = FindWindow("XLMAIN", 0)
If hwnd <> 0 Then '<>0 表示有 Excel 在运行。
msgbox "Excel 在运行!"
end ifend sub
Set objexcel = GetObject(, "Excel.Application")If Err.Number <> 0 Then
SetXobjexcel = New Excel.Application
End If
Err.Clear
Set objworkbook = Xobjexcel.Workbooks.Add
Set objworksheet = Xobjworkbook.Worksheets.Add
很遗憾的讲,我的上面的很不稳定 ,常常有其他程序忙什么的提示,
用API哪个的可能好些!!!
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Dim ExcelhWnd As Long
Dim aStr As String ''说明:不能用 0 值代替 aStr 变量。
On Error Resume Next
ExcelhWnd = FindWindow("Xlmain", aStr) ''调用 API 查找 Excel 是否在运行,是则返回非 0 值
If ExcelhWnd = 0 Then
Set FromExcel = CreateObject("Excel.Application") ''重新调用
If Err.Number <> 0 Then ''出错,本机没有安装EXCEL
MsgBox "本机没有安装 Microsoft Excel," + vbCrLf + _
"或由于其它原因 Microsoft Excel 不能正常启动!", vbOKOnly, "错误警告!"
Set FromExcel = Nothing
Exit Function
End If
Else
l = SendMessage(ExcelhWnd, WM_USER + 18, 0, 0) ''如果Excel正在运行则调用 API 将其放入运行对象表
''注意:返回 0,不知道 SendMessage 函数有没有成功运行。
Set FromExcel = GetObject(, "Excel.Application")
End If