我正在尝试使用excel vba从指定的文件夹中获取文件列表,然后将这些文件抓取到PowerPoint演示文稿中。
问题是:返回的文件列表vba类似于:
EOT_ByStepEQ_ByProd_107_Toxinv_5_25_PCAPT-AVERAGE_StepName?-?ProdID_0820_SD-RTP?-?AC28C.png
EOT_ByStepEQ_ByProd_108_Toxinv_5_25_PCAPT-AVERAGE_StepName?-?ProdID_0820_SD-RTP?-?AH04A.png
EOT_ByStepEQ_ByProd_109_Toxinv_5_25_PCAPT-AVERAGE_StepName?-?ProdID_0820_SD-RTP?-?AH04C.png
EOT_ByStepEQ_ByProd_110_Toxinv_5_25_PCAPT-AVERAGE_StepName?-?ProdID_0830_LRTP?-?AC28C.png
EOT_ByStepEQ_ByProd_111_Toxinv_5_25_PCAPT-AVERAGE_StepName?-?ProdID_0830_LRTP?-?AH04A.png
EOT_ByStepEQ_ByProd_112_Toxinv_5_25_PCAPT-AVERAGE_StepName?-?ProdID_0830_LRTP?-?AH04C.png
文件名中的问号使我无法按文件名找到这些文件。
这些问号被认为是空格,正如我直接从文件夹中看到的那样。 因此,我尝试替换“?-?”带有“-”,但替换后我仍然无法使用vba找到这些文件。 文件名中似乎有一些特殊字符,但在Windows中显示为空格。
Dir或FSO都返回“?”在文件名中。 有什么办法可以获取真实的文件名? 还是我可以通过通配符模式找到那些文件? 因此,我可以重命名它们以替换为“?”。
我正在使用以下代码查看发生的情况:
Dim MyFSO As FileSystemObject
Dim FileX As File
Dim MyFolder As Folder
Set MyFSO = New Scripting.FileSystemObject
Set MyFolder = MyFSO.GetFolder("C:\Will\6.Tools\2_VBA\Macro_ReplaceChars\Trial")
'To print a list of file names in excel table:
Worksheets("Printing").Activate
Range("A1").Select
For Each FileX In MyFolder.Files
Selection.Value = FileX.Name
Selection.Offset(1, 0).Select
Next
'Try to rename files:
For Each FileX In MyFolder.Files
'Name FileX as
Debug.Print FileX.Name
Dim regexFileX As Object: Set regexFileX = CreateObject("VBScript.RegExp")
With regexFileX
.Pattern = "\W-\W"
.Global = True
End With
Set matches = regexFileX.Execute(FileX.Name)
For Each Match In matches
strNewFileName = regexFileX.Replace(FileX.Name, "-")
Next Match
Debug.Print " " & strNewFileName
Debug.Print " " & FileX.Path
Debug.Print " " & MyFolder & "\" & strNewFileName
Name FileX.Path As "C:\Will\6.Tools\2_VBA\Macro_ReplaceChars\Trial\EOT.png"
Next FileX
这是我直接从文件夹中看到的文件名:
EOT_ByStepEQ_ByProd_107_Toxinv_5_25_PCAPT-AVERAGE_StepName - ProdID_0820_SD-RTP - AC28C.png
在这些代码将文件列表打印到excel表之后,我看到了相同的文件名。 但是代码停止了 将FileX.Path命名为“ C:\ Will \ 6.Tools \ 2_VBA \ Macro_ReplaceChars \ Trial \ EOT.png” 显示运行时错误'52':文件名或数字错误。
真的感谢任何可以给我提示的人!