Automation 将文件夹中的文件复制到与文件名不完全匹配的列表中的新文件

Automation 将文件夹中的文件复制到与文件名不完全匹配的列表中的新文件,automation,windows-scripting,office-automation,Automation,Windows Scripting,Office Automation,我遇到了一个棘手的问题,我在其他任何地方都找不到帮助 我有一些零件号列表,我需要将这些零件号的技术图纸文件复制到特定文件夹中 主要问题是,尽管文件名与列表匹配,但除了图纸版本(零件号之后和扩展名之前总是有\u 001或\u 002等),它并不完全匹配 基本上,我必须从Excel列表中复制文件,但是我必须指导我使用的任何方法/软件来考虑基于文件名上的后缀的最新版本的图纸。最好(也是最简单)的方法是什么 在Windows/Office之外的工作计算机中,我无法使用任何编程工具,我不确定使用VBA是否

我遇到了一个棘手的问题,我在其他任何地方都找不到帮助

我有一些零件号列表,我需要将这些零件号的技术图纸文件复制到特定文件夹中

主要问题是,尽管文件名与列表匹配,但除了图纸版本(零件号之后和扩展名之前总是有
\u 001
\u 002
等),它并不完全匹配

<>基本上,我必须从Excel列表中复制文件,但是我必须指导我使用的任何方法/软件来考虑基于文件名上的后缀的最新版本的图纸。最好(也是最简单)的方法是什么

在Windows/Office之外的工作计算机中,我无法使用任何编程工具,我不确定使用VBA是否能解决问题


有人能帮我完成这项任务吗?

因此,经过大量挖掘,我终于找到了解决办法。我知道这一切都可以在编码中完成,但我仍在学习,它可以帮助有同样问题的人 1.我打开CMD,进入文件所在的文件夹,键入
dir/b>list.txt
。这将生成一个包含文件夹中所有文件的txt列表。 2.我在Excel中打开txt文件并对其进行了调整,使每个单元格都有一个文件名。 3.在原始零件号列表中,我在右侧添加了一列,并添加了一个“X”,仅用于vlookup。 4.我在文件列表和零件列表之间使用了一个vlookup来查看我需要哪些文件。 5.我从列表中删除了零件列表中没有的所有文件名。 6.我按字母顺序排列了文件名。 7.我将零件号从文件名提取到一个单独的单元格(A3)
=左(A1,14)
。 8.Did
=A3=A4
。任何返回的“TRUE”均被删除(如果一行中的零件号与下一行中的零件号相等,则表示该零件号与旧版本中的图纸相同)。 9使用Excel(VBA)上的以下代码将文件从原始文件夹复制到基于我列出的列表的新文件夹

Sub copyfiles()
Dim xRg As Range, xCell As Range
Dim xSFileDlg As FileDialog, xDFileDlg As FileDialog
Dim xSPathStr As Variant, xDPathStr As Variant
Dim xVal As String
On Error Resume Next
Set xRg = Application.InputBox("Click on the column with the file names:", "File copier", ActiveWindow.RangeSelection.Address, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xSFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xSFileDlg.Title = "Folder to copy from:"
If xSFileDlg.Show <> -1 Then Exit Sub
xSPathStr = xSFileDlg.SelectedItems.Item(1) & "\"
Set xDFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xDFileDlg.Title = "Folder to copy to:"
If xDFileDlg.Show <> -1 Then Exit Sub
xDPathStr = xDFileDlg.SelectedItems.Item(1) & "\"
For Each xCell In xRg
    xVal = xCell.Value
    If TypeName(xVal) = "String" And xVal <> "" Then
        FileCopy xSPathStr & xVal, xDPathStr & xVal
    End If
Next
子复制文件()
尺寸xRg作为范围,xCell作为范围
Dim xSFileDlg As FileDialog、xDFileDlg As FileDialog
Dim xSPathStr作为变体,xDPathStr作为变体
作为字符串的Dim xVal
出错时继续下一步
设置xRg=Application.InputBox(“单击文件名为:”、“文件复制器”、ActiveWindow.RangeSelection.Address、、、8的列)
如果xRg为Nothing,则退出Sub
Set xSFileDlg=Application.FileDialog(msoFileDialogFolderPicker)
xSFileDlg.Title=“要从中复制的文件夹:”
如果xSFileDlg.Show为-1,则退出Sub
xSPathStr=xSFileDlg.SelectedItems.Item(1)和“\”
设置xDFileDlg=Application.FileDialog(msoFileDialogFolderPicker)
xDFileDlg.Title=“要复制到的文件夹:”
如果xDFileDlg.Show为-1,则退出Sub
xDPathStr=xDFileDlg.SelectedItems.Item(1)和“\”
对于xRg中的每个xCell
xVal=xCell.Value
如果TypeName(xVal)=“字符串”和xVal“”,则
文件拷贝xSPathStr&xVal,xDPathStr&xVal
如果结束
下一个
端接头