吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 550|回复: 3
收起左侧

[求助] 小白来了,在word2003中找文件然后用excel默认程序打开

[复制链接]
cherrycdh 发表于 2024-2-25 16:17
我需要在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

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

vethenc 发表于 2024-2-25 21:08
不会,帮顶
sai609 发表于 2024-2-25 22:05
miocaro507 发表于 2024-2-28 08:12
[Visual Basic] 纯文本查看 复制代码
' 在 Private Sub CommandButton1_Click() 这一行的上方声明以下函数:

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


' 在打开文件的地方调用,filePath是文件的完整路径
' 最后一个参数: 0=隐藏; 1=用最近的大小和位置显示且激活; 2=最小化且激活; 3=最大化且激活; 4=用最近的大小和位置显示且不激活; 6=最小化且不激活
ShellExecute 0, "open", filePath, "", "", 3 
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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