我需要在word中做一个工具按钮,然后状态形式如下的:
当我点击这个按钮时,先获取2列1行的数据作为搜索项,然后搜索D盘特殊标签文件夹中的文件,如果找到包含那个单元格数据的文件夹时往下一层找,找到包含特殊标签-单元格数据的文件,现在的问题是,我搜索到的文件有可能是doc也有可能是xls后者pdf的,我怎么让它自动使用相应的默认程序打开文件呢
文件内容大致是这样的
Private Sub CommandButton1_Click()
' 获取第一个表格的第一行第二列左边起前7个数据作为客户编号数据
Dim 客户编号 As String
客户编号 = Left(ActiveDocument.Tables(1).Cell(1, 2).Range.Text, 7)
' 构建特殊标签文件夹路径
Dim 文件夹路径 As String
文件夹路径 = "D:\特殊标签"
' 查找包含客户编号的文件夹
Dim 客户文件夹路径 As String
客户文件夹路径 = 文件夹包含客户编号(文件夹路径, 客户编号)
If 客户文件夹路径 <> "" Then
' 在客户文件夹中查找包含内容为客户标签-客户编号数据的文件
Dim 文件名数据 As String
文件名数据 = 文件夹中包含客户标签文件(客户文件夹路径, "客户标签-" & 客户编号)
If 文件名数据 <> "" Then
' 弹出对话框
Dim response As VbMsgBoxResult
response = MsgBox("是否打开文件 " & 文件名数据 & "?", vbYesNo + vbExclamation, "文件打开预警")
' 根据用户的选择进行操作
If response = vbYes Then
' 打开文件
Documents.Open 客户文件夹路径 & "" & 文件名数据
End If
Else
' 弹出对话框询问是否打开客户文件夹
Dim responseFolder As VbMsgBoxResult
responseFolder = MsgBox("未找到包含客户标签的文件,是否打开客户文件夹?", vbYesNo + vbExclamation, "文件夹打开预警")
' 根据用户的选择进行操作
If responseFolder = vbYes Then
' 打开客户文件夹
Shell "explorer.exe """ & 客户文件夹路径 & """", vbNormalFocus
End If
End If
Else
' 弹出对话框
MsgBox "未找到包含客户编号的文件夹"
End If
End Sub
Function 文件夹包含客户编号(文件夹路径 As String, 客户编号 As String) As String
' 使用FileSystemObject检查文件夹是否存在
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' 获取文件夹列表
Dim 文件夹 As Object
For Each 文件夹 In fso.GetFolder(文件夹路径).SubFolders
' 检查文件夹名称是否包含客户编号
If InStr(1, 文件夹.Name, 客户编号) > 0 Then
文件夹包含客户编号 = 文件夹.Path
Exit Function
End If
Next 文件夹
' 未找到匹配的文件夹
文件夹包含客户编号 = ""
End Function
Function 文件夹中包含客户标签文件(文件夹路径 As String, 客户标签 As String) As String
' 使用FileSystemObject检查文件夹是否存在
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' 获取文件列表
Dim 文件 As Object
For Each 文件 In fso.GetFolder(文件夹路径).Files
' 检查文件名是否包含客户标签
If InStr(1, 文件.Name, 客户标签) > 0 Then
文件夹中包含客户标签文件 = 文件.Name
Exit Function
End If
Next 文件
' 未找到匹配的文件
文件夹中包含客户标签文件 = ""
End Function
|