ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-25 15:15 | 显示全部楼层 |阅读模式
本帖最后由 cherrycdh 于 2024-2-25 16:17 编辑

我需要在word中做一个工具按钮,然后状态形式如下的:

image.png
当我点击这个按钮时,先获取2列1行的数据作为搜索项,然后搜索D盘特殊标签文件夹中的文件,如果找到包含那个单元格数据的文件夹时往下一层找,找到包含特殊标签-单元格数据的文件,现在的问题是,我搜索到的文件有可能是doc也有可能是xls后者pdf的,我怎么让它自动使用相应的默认程序打开文件呢
文件内容大致是这样的
image.png
  1. Private Sub CommandButton1_Click()
  2.     ' 获取第一个表格的第一行第二列左边起前7个数据作为客户编号数据
  3.     Dim 客户编号 As String
  4.     客户编号 = Left(ActiveDocument.Tables(1).Cell(1, 2).Range.Text, 7)

  5.     ' 构建特殊标签文件夹路径
  6.     Dim 文件夹路径 As String
  7.     文件夹路径 = "D:\特殊标签"

  8.     ' 查找包含客户编号的文件夹
  9.     Dim 客户文件夹路径 As String
  10.     客户文件夹路径 = 文件夹包含客户编号(文件夹路径, 客户编号)

  11.     If 客户文件夹路径 <> "" Then
  12.         ' 在客户文件夹中查找包含内容为客户标签-客户编号数据的文件
  13.         Dim 文件名数据 As String
  14.         文件名数据 = 文件夹中包含客户标签文件(客户文件夹路径, "客户标签-" & 客户编号)

  15.         If 文件名数据 <> "" Then
  16.             ' 弹出对话框
  17.             Dim response As VbMsgBoxResult
  18.             response = MsgBox("是否打开文件 " & 文件名数据 & "?", vbYesNo + vbExclamation, "文件打开预警")

  19.             ' 根据用户的选择进行操作
  20.             If response = vbYes Then
  21.                 ' 打开文件
  22.                 Documents.Open 客户文件夹路径 & "" & 文件名数据
  23.             End If
  24.         Else
  25.             ' 弹出对话框询问是否打开客户文件夹
  26.             Dim responseFolder As VbMsgBoxResult
  27.             responseFolder = MsgBox("未找到包含客户标签的文件,是否打开客户文件夹?", vbYesNo + vbExclamation, "文件夹打开预警")

  28.             ' 根据用户的选择进行操作
  29.             If responseFolder = vbYes Then
  30.                 ' 打开客户文件夹
  31.                 Shell "explorer.exe """ & 客户文件夹路径 & """", vbNormalFocus
  32.             End If
  33.         End If
  34.     Else
  35.         ' 弹出对话框
  36.         MsgBox "未找到包含客户编号的文件夹"
  37.     End If
  38. End Sub

  39. Function 文件夹包含客户编号(文件夹路径 As String, 客户编号 As String) As String
  40.     ' 使用FileSystemObject检查文件夹是否存在
  41.     Dim fso As Object
  42.     Set fso = CreateObject("Scripting.FileSystemObject")

  43.     ' 获取文件夹列表
  44.     Dim 文件夹 As Object
  45.     For Each 文件夹 In fso.GetFolder(文件夹路径).SubFolders
  46.         ' 检查文件夹名称是否包含客户编号
  47.         If InStr(1, 文件夹.Name, 客户编号) > 0 Then
  48.             文件夹包含客户编号 = 文件夹.Path
  49.             Exit Function
  50.         End If
  51.     Next 文件夹

  52.     ' 未找到匹配的文件夹
  53.     文件夹包含客户编号 = ""
  54. End Function

  55. Function 文件夹中包含客户标签文件(文件夹路径 As String, 客户标签 As String) As String
  56.     ' 使用FileSystemObject检查文件夹是否存在
  57.     Dim fso As Object
  58.     Set fso = CreateObject("Scripting.FileSystemObject")

  59.     ' 获取文件列表
  60.     Dim 文件 As Object
  61.     For Each 文件 In fso.GetFolder(文件夹路径).Files
  62.         ' 检查文件名是否包含客户标签
  63.         If InStr(1, 文件.Name, 客户标签) > 0 Then
  64.             文件夹中包含客户标签文件 = 文件.Name
  65.             Exit Function
  66.         End If
  67.     Next 文件

  68.     ' 未找到匹配的文件
  69.     文件夹中包含客户标签文件 = ""
  70. End Function


复制代码

复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-30 04:30 , Processed in 0.036190 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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