本帖最后由 流星的承诺 于 2016-6-26 20:17 编辑
提取切割文件夹时只提取D列“程序名称”下的文件名,要求,把切割文件夹下的文件夹名提取到图号下,对应文件夹下的“程序名称”。有两个文件夹以上的,中间就空一行做为分界。效果图见表格!!
并把*.3b文本第三行的“Length= 299.553 mm”,中的数值“299.553”提取到“线长L=”列下对应的“程序名称”效果图见表格。
另外提取文件名及图号文件夹时需要的窗口是下面这样的。
- '***********递归获取本文件夹及所有子文件夹下所有文件名,
- Dim w(1 To 10000), s%
- Sub 提取文件名()
- On Error Resume Next
- s = 0: d = [a1]
- zdir ThisWorkbook.Path & ""
- ReDim arr(1 To 2 * s, 1 To 5)
- Application.ScreenUpdating = False
- For i = 1 To s
- Open w(i) For Input As #1
- wrr = Split(w(i), ""): k = UBound(wrr)
- Do While Not EOF(1)
- Line Input #1, x '读入每行
- If InStr(x, "Length=") > 0 Then
- l = Val(Split(x, "Length=")(1))
- n = n + 1
- If n > 1 Then If "" & wrr(k - 1) & "" <> arr(n - 1, 1) Then n = n + 1
- arr(n, 1) = "" & wrr(k - 1) & ""
- arr(n, 4) = wrr(k)
- arr(n, 5) = l
- End If
- Loop
- Close #1
- Next
-
- For i = n To 2 Step -1
- If arr(i, 1) = arr(i - 1, 1) Then arr(i, 1) = ""
- Next
- Sheet1.[a3].Resize(n, 5) = arr
- Application.ScreenUpdating = True
- End Sub
- Sub zdir(p) '递归获得本文件夹及所有子文件夹内文件名
- Set fs = CreateObject("scripting.filesystemobject")
- For Each f In fs.GetFolder(p).Files
- If f <> ThisWorkbook.FullName Then s = s + 1: w(s) = f
- Next
- For Each m In fs.GetFolder(p).SubFolders
- zdir m
- Next
- End Sub
复制代码
|