Я пытаюсь использовать 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.
Но коды остановились на линии
Имя файла X.Path как "C: \ Will \ 6.Tools \ 2_VBA \ Macro_ReplaceChars \ Trial \ EOT.png"
показывая ошибку времени выполнения '52': неверное имя или номер файла.
Действительно, спасибо всем, кто может дать мне подсказку!