Я пытаюсь запустить код, который будет замещать все файлы excel в папке. Во-первых, вот код:Почему я получаю несуществующее имя файла?
Dim FileSystem As Object
Dim HostFolder As String
Dim StringA As String
Dim StringB As String
Sub Init()
Application.DisplayAlerts = False
HostFolder = "\\Pc-dell\d\Documentos\LSM2\CLIENTES\SRB CDT 2 PROGRESSO2\"
Set FileSystem = CreateObject("Scripting.FileSystemObject")
DoFolder FileSystem.GetFolder(HostFolder)
Application.DisplayAlerts = True
End Sub
Sub DoFolder(Folder)
Dim SubFolder
For Each SubFolder In Folder.SubFolders
DoFolder SubFolder
Next
Dim File
For Each File In Folder.Files
If Right(File.Name, 4) = ".xls" Or Right(File.Name, 5) = ".xlsx" Then
With Workbooks.Open(File, False)
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
SwapStringsInActiveWorkbook "l1", "l2", ws
SwapStringsInActiveWorkbook "L1", "L2", ws
SwapStringsInActiveWorkbook "l 1", "l 2", ws
SwapStringsInActiveWorkbook "L 1", "L 2", ws
SwapStringsInActiveWorkbook "loja1", "loja2", ws
SwapStringsInActiveWorkbook "LOJA1", "LOJA2", ws
SwapStringsInActiveWorkbook "loja 1", "loja 2", ws
SwapStringsInActiveWorkbook "LOJA 1", "LOJA 2", ws
SwapStringsInActiveWorkbook "Loja1", "Loja2", ws
SwapStringsInActiveWorkbook "Loja 1", "Loja 2", ws
SwapStringsInActiveWorkbook "LOJA1", "LOJA2", ws
SwapStringsInActiveWorkbook "LOJA 1", "LOJA 2", ws
Next ws
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
Continue:
Next
End Sub
Sub SwapStringsInActiveWorkbook(StringA As String, StringB As String, ws As Worksheet)
On Error Resume Next
ws.Cells.SpecialCells(xlCellTypeConstants).Replace What:=StringA, Replacement:="_AUXTEMPREPL_", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
On Error Resume Next
ws.Cells.SpecialCells(xlCellTypeConstants).Replace What:=StringB, Replacement:=StringA, LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
On Error Resume Next
ws.Cells.SpecialCells(xlCellTypeConstants).Replace What:="_AUXTEMPREPL_", Replacement:=StringB, LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
On Error GoTo 0
End Sub
Но в определенный момент, после нескольких замен, он дает мне ошибку, говоря, что он не может открыть файл:
«Excel не может открыть файл '~ $ PLAN COMPARAT de CUSTOS Rancho Bom Loja2-2015.xlsx', потому что формат файла или расширение файла недействительны. Проверьте, не поврежден ли файл и если расширение соответствует формату файла. " (это перевод с сообщения об ошибке, который был на португальском языке, извините, я не мог изменить язык)
Дело в том, что я сделал поиск в этой папке, и такого файла нет. Существует файл под названием «PLAN COMPARAT de CUSTOS RB-L2-2015.xlsx», хотя это аббревиатура. Может быть, файл, который он пытается открыть, и старый файл, который больше не существует?
У меня также был скрипт для замены в файлах слов, а также попытка открыть некоторые файлы, которые не существуют, или попытаться открыть файл с именем «~ $» плюс имя файл, который существует. Откуда это «~ $»?
Мне нужны некоторые подсказки.
Что такое ".xlsl"? Я бы ожидал ".xlsx"/". Xlsxm"/". Xls". –
'.xlsl' - это заблокированная версия файла. скорее всего, файл был сохранен, когда Excel в какой-то момент разбился и он скрыт в диске. Если вы выберете вариант отображения скрытых файлов в Internet Explorer, вы увидите его. Вы можете сделать проверку, которую я считаю проверкой на скрытые файлы (или, по крайней мере, проверить на '~ $' или '.xlsl' в имени файла, и если это там пропустить (или даже удалить его). –
@ Grade'Eh'Bacon - см. Мой комментарий о '.xlsl' –