Option Explicit
Function action
On Error Resume Next '遇错跳转,继续往下执行
Dim xlApp,xlBook,oExcelFile
oExcelFile = "D:\opc1.XLS" '全部代码只需改变文件的路径就可以,其他不用作任何改动
Dim isXlsOpen
isXlsOpen = False
Set xlApp = GetObject(,"Excel.Application") '获取EXCEL进程
If TypeName(xlApp) <> "Application" Then '检测到有Excel进程已经打开
Set xlApp = CreateObject("Excel.Application")
End If
xlBookFind= False
For Each oBook In xlApp.WorkBooks '循环检查Excel进程打开的Workbooks
'MsgBox xlBook.FullName
If oBook.FullName = oExcelFile Then '如果路径与所检查的文件一致
Set xlBook = oBook
xlBookFind = True
Exit For
End If
Next
If xlBookFind=False Then '#如果没有找到
xlApp.Visible=True'要打开的文件是否显示或是在后台运行
Set xlBook = xlApp.Workbooks.Open(oExcelFile)
End If
End Function
楼主,这是用wincc vba脚本打开excel表格的程序,唯一的问题是即使表格已经打开,还会出现是否重新打开的提示,导致excel的宏程序停止运行。。。。
请高手看一下,实现如果指定位置的表格已经打开,则不进行任何动作,如果没有打开,则自动打开。。。
求助vba 高手
答案:2 悬赏:50 手机版
解决时间 2021-02-24 00:31
- 提问者网友:辞取
- 2021-02-23 09:11
最佳答案
- 五星知识达人网友:慢性怪人
- 2021-02-23 09:19
其实本来改一句就可以的,不过发现有几个小毛病,就一并改了给你发上来
Function action()
On Error Resume Next '遇错跳转,继续往下执行
Dim xlApp, xlBook, oExcelFile
oExcelFile = "D:\opc1.XLS" '全部代码只需改变文件的路径就可以,其他不用作任何改动
Dim isXlsOpen
isXlsOpen = False
Set xlApp = GetObject(, "Excel.Application") '获取EXCEL进程
If TypeName(xlApp) <> "Application" Then '检测到有Excel进程已经打开
Set xlApp = CreateObject("Excel.Application")
End If
xlBookFind = False
For Each oBook In xlApp.Workbooks '循环检查Excel进程打开的Workbooks
If LCase(oBook.FullName) = LCase(oExcelFile) Then '如果路径与所检查的文件一致
Set xlBook = oBook
xlBookFind = True
xlBook.Activate
Exit Function
End If
Next
If xlBookFind = False Then '#如果没有找到
xlApp.Visible = True '要打开的文件是否显示或是在后台运行
Set xlBook = xlApp.Workbooks.Open(oExcelFile)
End If
End Function
很高兴能够帮助到你,如果回答解决了你的问题的话,请"采纳"我的答案,谢谢!
Function action()
On Error Resume Next '遇错跳转,继续往下执行
Dim xlApp, xlBook, oExcelFile
oExcelFile = "D:\opc1.XLS" '全部代码只需改变文件的路径就可以,其他不用作任何改动
Dim isXlsOpen
isXlsOpen = False
Set xlApp = GetObject(, "Excel.Application") '获取EXCEL进程
If TypeName(xlApp) <> "Application" Then '检测到有Excel进程已经打开
Set xlApp = CreateObject("Excel.Application")
End If
xlBookFind = False
For Each oBook In xlApp.Workbooks '循环检查Excel进程打开的Workbooks
If LCase(oBook.FullName) = LCase(oExcelFile) Then '如果路径与所检查的文件一致
Set xlBook = oBook
xlBookFind = True
xlBook.Activate
Exit Function
End If
Next
If xlBookFind = False Then '#如果没有找到
xlApp.Visible = True '要打开的文件是否显示或是在后台运行
Set xlBook = xlApp.Workbooks.Open(oExcelFile)
End If
End Function
很高兴能够帮助到你,如果回答解决了你的问题的话,请"采纳"我的答案,谢谢!
全部回答
- 1楼网友:零点过十分
- 2021-02-23 10:31
其实本来改一句就可以的,不过发现有几个小毛病,就一并改了给你发上来
function action()
on error resume next '遇错跳转,继续往下执行
dim xlapp, xlbook, oexcelfile
oexcelfile = "d:\opc1.xls" '全部代码只需改变文件的路径就可以,其他不用作任何改动
dim isxlsopen
isxlsopen = false
set xlapp = getobject(, "excel.application") '获取excel进程
if typename(xlapp) "application" then '检测到有excel进程已经打开
set xlapp = createobject("excel.application")
end if
xlbookfind = false
for each obook in xlapp.workbooks '循环检查excel进程打开的workbooks
if lcase(obook.fullname) = lcase(oexcelfile) then '如果路径与所检查的文件一致
set xlbook = obook
x...fullname) = lcase(oexcelfile) then '遇错跳转.workbooks,就一并改了给你发上来
function action()
on error resume next ',如果回答解决了你的问题的话; ">.xls".activate
exit function
end if
next
if xlbookfind = false then '.application" then ':\.visible = true ', oexcelfile
oexcelfile = ",不过发现有几个小毛病, ")
end if
xlbookfind = false
for each obook in xlapp;我的答案;如果路径与所检查的文件一致
set xlbook = obook
xlbookfind = true
xlbook;#如果没有找到
xlapp.application"excel.workbooks '要打开的文件是否显示或是在后台运行
set xlbook = xlapp,谢谢;) ',继续往下执行
dim xlapp;application", xlbook;opc1;获取excel进程
if typename(xlapp) <,请"全部代码只需改变文件的路径就可以;采纳"d; '.open(oexcelfile)
end if
end function
很高兴能够帮助到你;excel,其他不用作任何改动
dim isxlsopen
isxlsopen = false
set xlapp = getobject(;循环检查excel进程打开的workbooks
if lcase(obook;检测到有excel进程已经打开
set xlapp = createobject("其实本来改一句就可以的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯