word vba 如何通过打开对话框获得打开文件名

 我来答
合标儒W
2015-10-23 · 知道合伙人养生行家
合标儒W
知道合伙人养生行家
采纳数:1030 获赞数:29892
就读于河南中医学院针灸推拿学,现为学生,读过医学类书籍近百本。

向TA提问 私信TA
展开全部
1 遍历已经打开的word对象的文件名,如果跟你要打开的一致,那就是已经打开了。
2 打开新文件,监控打开新文件时word的提示,如果有文件已打开的提示,那也是已经打开了
表里如一
2015-05-02 · 知道合伙人软件行家
表里如一
知道合伙人软件行家
采纳数:2066 获赞数:11636
从事6年生产管理,期间开发了多款小软件进行数据处理和分析,后

向TA提问 私信TA
展开全部

使用GetOpenFilename即可,filenames即是文件的全路径带文件名称。

Sub ass2()
    filenames = Application.GetOpenFilename("所有文件 (*.*), *.*", 0, "选定文件", , False)
    MsgBox filenames
End Sub

如果仅仅只需得到文件的名称,不带路径。那么用这个:

Sub test2()
    filenames = Application.GetOpenFilename("所有文件 (*.*), *.*", 0, "选定文件", , False)
    If filenames <> False Then
        fname = Right(filenames, Len(filenames) - InStrRev(filenames, "\"))
        MsgBox fname
    End If
End Sub
追问
你好,运行时,Application.GetOpenFilename提示 方法和数据成员未找到,这个怎么解决。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
铁铺啦啦
2022-04-16
知道答主
回答量:8
采纳率:0%
帮助的人:3720
展开全部
word没有GetOpenFilename这个方法,需要通过excel打开
Set 连接 = CreateObject("Excel.Application")
Dim i
i = 连接.GetOpenFilename("Word文件,*.doc;*.docx;*.docm", FilterIndex:=3)
If i = False Then
'MsgBox "没有选择任何文件!"
其他 = "当前文件"
Else
其他 = i
End If
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微微一笑回
推荐于2016-08-22 · TA获得超过273个赞
知道小有建树答主
回答量:467
采纳率:0%
帮助的人:357万
展开全部
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
        "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
 
Type OPENFILENAME
     lStructSize As Long
     hwndOwner As Long
     hInstance As Long
     lpstrFilter As String
     lpstrCustomFilter As String
     nMaxCustFilter As Long
     nFilterIndex As Long
     lpstrFile As String
     nMaxFile As Long
     lpstrFileTitle As String
     nMaxFileTitle As Long
     lpstrInitialDir As String
     lpstrTitle As String
     flags As Long
     nFileOffset As Integer
     nFileExtension As Integer
     lpstrDefExt As String
     lCustData As Long
     lpfnHook As Long
     lpTemplateName As String
End Type

Sub t()
    Dim ofn As OPENFILENAME
    Dim rtn As String 
    ofn.lStructSize = Len(ofn)
    ofn.lpstrFilter = "doc Files (*.doc)" & Chr(0) & "*.doc" & Chr(0)
    ofn.lpstrFile = Space(254)
    ofn.nMaxFile = 255
    ofn.lpstrFileTitle = Space(254)
    ofn.nMaxFileTitle = 255
    ofn.lpstrInitialDir = "C:"
    ofn.lpstrTitle = "打开文件"
    ofn.flags = 6148 
    rtn = GetOpenFileName(ofn)    If rtn >= 1 Then
        MsgBox ofn.lpstrFile
    Else
        MsgBox "Cancel Was Pressed"
    End If
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黔含品2
2017-02-10 · TA获得超过3.8万个赞
知道小有建树答主
回答量:2.7万
采纳率:45%
帮助的人:1395万
展开全部
楼主可能说的是InlineShapes,这个是没有name属性,如果不是InlineShapes,那么只有ShapeRange了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式