ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1206|回复: 5

[求助] 如何判断指定word文档是否已打开

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-8-31 15:22 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
目前我有一个word文档,名为模版.docx。我想在excel中用VBA判断改文件是否处于打开状态;若已打开则提示该文件已打开并激活成为活动word文档,若没有打开则打开该文件,求助各位大神指点

TA的精华主题

TA的得分主题

发表于 2020-8-31 15:47 | 显示全部楼层


Sub test1()
Dim wordDoc As Object
Dim wordApp1 As Object
Dim mydoc As String
Dim myapp As String
'On Error GoTo errorhandler
mydoc = "C:\Users\along22\Desktop\New folder\invite1.doc"
myapp = "word.application"
If Not docexists(mydoc) Then
    MsgBox 请先创建
    Exit Sub
End If
If Not isrunning(myapp) Then
'    MsgBox "软件未运行,将创建"
    Set wordApp1 = CreateObject("word.application")
    Set wordDoc = wordApp1.documents.Open(mydoc)
Else
    MsgBox "软件已运行,将打开文件"
    Set wordDoc = GetObject(mydoc)
End If

With wordDoc.Paragraphs(1).Range
    .ParagraphFormat.Alignment = wdalignparagraphcenter
End With
wordDoc.Application.Quit savechanges:=True
Set wordoc = Nothing
Set wordApp1 = Nothing
Exit Sub
errorhandler:
MsgBox Err.Description, vbCritical, "错误为:" & Err.Number
End Sub

Function docexists(ByVal mydoc As String) As Boolean
On Error Resume Next
    If Dir(mydoc) <> "" Then
        docexists = True
        Else
        docexists = False
    End If
End Function

Function isrunning(ByVal myapp As String) As Boolean
    Dim appref As Object
    On Error Resume Next
    Set appref = GetObject(, myapp)
    If Err.Number = 429 Then
        isrunning = False
        Else
        isrunning = True
    End If
    Set appref = Nothing
End Function

TA的精华主题

TA的得分主题

发表于 2020-8-31 15:50 | 显示全部楼层
花儿为什么这样 发表于 2020-8-31 15:47
Sub test1()
Dim wordDoc As Object
Dim wordApp1 As Object

要先引用word库么

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-8-31 16:38 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
花儿为什么这样 发表于 2020-8-31 15:47
Sub test1()
Dim wordDoc As Object
Dim wordApp1 As Object

感谢老师指点,不过我是文件已经创建好了,只需要判断当前打开的文档中是否包含指定的word文档,如果包含则激活,如果不包含则打开该文档。

TA的精华主题

TA的得分主题

发表于 2020-9-1 09:03 | 显示全部楼层
用心修炼 发表于 2020-8-31 16:38
感谢老师指点,不过我是文件已经创建好了,只需要判断当前打开的文档中是否包含指定的word文档,如果包含 ...

有什么区别?
你有文档,宏会跳过创建的文件,直接打开他,打开的时候会激活这个文档
其他部分你可以选择性不要

TA的精华主题

TA的得分主题

发表于 2020-9-1 09:04 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-21 00:44 , Processed in 0.021690 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表