vba返回带有问号的文件名,因此我无法重命名该文件。如何获得真实的文件名?

时间:2019-04-18 08:59:31

标签: excel vba

我正在尝试使用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':文件名或数字错误。

真的感谢任何可以给我提示的人!

0 个答案:

没有答案