Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2429|回复: 3

[已解决]excel 2003 VBA(资料自动与指定路径下的资料夹内容做比对)

[复制链接]
发表于 2017-2-8 13:35 | 显示全部楼层 |阅读模式
本帖最后由 lkk0063 于 2017-2-13 10:55 编辑

请问excel 2003 VBA 中是否可以实现, 输入资料后自动与指定路径下的资料夹档案名称做比对, 当无资料时, 自动反红, 判定是否有此档案名称





最佳答案
2017-2-8 17:06
本帖最后由 yayahzmeng 于 2017-2-8 17:09 编辑
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Count > 1 Then Exit Sub
  3.     Dim ipath$: ipath = ThisWorkbook.Path & ""
  4.     If Target.Row = 1 And Target.Column = 5 Then
  5.         Target.Interior.ColorIndex = 3
  6.         Dim x$, xfile$
  7.         x = Target.Value
  8.         xfile = Dir(ipath)       '附件中代码指定*.pdf
  9.         Do While xfile <> ThisWorkbook.Name And xfile <> ""
  10.             If Left(xfile, Len(xfile) - 4) = x Then
  11.                 Target.Interior.ColorIndex = xlNone
  12.                 Exit Do
  13.             End If
  14.             xfile = Dir
  15.         Loop
  16.     End If
  17. End Sub
复制代码


请测试
fic-1.jpg

test.zip

32.45 KB, 下载次数: 2

发表于 2017-2-8 17:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 yayahzmeng 于 2017-2-8 17:09 编辑
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Count > 1 Then Exit Sub
  3.     Dim ipath$: ipath = ThisWorkbook.Path & ""
  4.     If Target.Row = 1 And Target.Column = 5 Then
  5.         Target.Interior.ColorIndex = 3
  6.         Dim x$, xfile$
  7.         x = Target.Value
  8.         xfile = Dir(ipath)       '附件中代码指定*.pdf
  9.         Do While xfile <> ThisWorkbook.Name And xfile <> ""
  10.             If Left(xfile, Len(xfile) - 4) = x Then
  11.                 Target.Interior.ColorIndex = xlNone
  12.                 Exit Do
  13.             End If
  14.             xfile = Dir
  15.         Loop
  16.     End If
  17. End Sub
复制代码


请测试

test(ok).rar

28.61 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2017-2-9 08:42 | 显示全部楼层
本帖最后由 lkk0063 于 2017-2-10 16:57 编辑

Hi yayahzmeng,
刚刚测试, 确时可用, 可是只限于.pdf档案与VBA 档案在相同路径下使用, 但仍有以下问题需克服, 麻烦了
1.若想新增档案为.jpg, 可新增何处, 还是只管档案名称, 不管档案属性
回复

使用道具 举报

发表于 2017-2-13 21:27 | 显示全部楼层
1. 只要待比对的文件名中含有输入的字符就显示,也不管文件类型德话,就这样改吧:
将  If Left(xfile, Len(xfile) - 4) = x Then  改为  If instr(xfile, cstr(x)) <>0 Then 即可

2. 通常将主表和比对文件放在一个文件夹下,代码编写比较简单,而且整个文件夹可以随意挪到任何地方也不受影响。如要指定比对文件位置,要么在代码中写入绝对路径,要么shell ,代码复杂,得不偿失
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 09:03 , Processed in 0.681505 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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