Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Последние сообщения

#1
Можете написать мне в личные сообщения на форуме или через форму заказа на сайте: Заказ на разработку
Задачу тогда надо будет обсуждать более детально, прежде чем начать разработку.
#2
Вопросы по Excel и VBA / Re: макрос по открытию файлов
Последний ответ от madina9114 - 14.11.2025, 14:27:14
Дмитрий, подскажите, а эту задачу можно делегировать? за какую-то денежку. я не особо представляю как такие заказы делаются. Похоже, что сама буду очень долго ковыряться(
#3
Там почти все править надо. Возьмите код из ссылки, которую я выше скидывал. Там код как раз берет и файлы в папке и в подпапках. А в приложенном Вами - только в одной папке.
А сама ошибка означает, что некорректное имя файла. Возможно, проблема в том, что Вы пытаетесь перебрать все файлы, а не только файлы Excel. А там могут быть и временные, и скрытые, и системные.
#4
Вопросы по Excel и VBA / Re: макрос по открытию файлов
Последний ответ от madina9114 - 14.11.2025, 10:23:02
вот на этом моменте ошибка: 
fileName = Dir(folderPath & "*.*")

BAG 52 Bad file name or number.

может, сможете подсказать как поправить?
#5
Ну и вдруг кому-то пригодится - если отдельных колонок посередине не делать, а все вынести в крайний левый столбец - получится, конечно, очень глубокая многоуровневая иерархическая структура, но в таком виде функция "Подготовить таблицу - строки" ее берет в легкую.

спасибо.
#6
Вместо этого куска:
On Error Resume Next
        appExcel.Workbooks.Open fullPath
        If Err.Number <> 0 Then
            newName = "ПОДОЗРИТЕЛЬНЫЙ_ФАЙЛ_" & fileName
            fso.MoveFile fullPath, folderPath & newName
            Err.Clear
        Else
            appExcel.ActiveWorkbook.Close
        End If
попробуйте вот такой:
On Error Resume Next
set wb = Nothing
set wb = appExcel.Workbooks.Open(fullPath)
If wb is Nothing Then
    newName = "ПОДОЗРИТЕЛЬНЫЙ_ФАЙЛ_" & fileName
    fso.MoveFile fullPath, folderPath & newName
    Err.Clear
Else
    ws.Close 0
End If
И где-нибудь вверху добавьте объявление:
Dim wb As Object
И не забывайте оформлять коды соответствующими тегами.
#7
Вопросы по Excel и VBA / Re: макрос по открытию файлов
Последний ответ от madina9114 - 14.11.2025, 02:16:48
Дмитрий, большое спасибо за ссылку.

У нас проблема в том, что часть данных повреждена. При открытии поврежденного файла Excel выдаёт сообщение: "Ошибка в части содержимого файла ... Выполнить попытку восстановления?". Мы хотим пометить эти поврежденные файлы. ФОрматы xls, xlsx. Сами пробовали, ерунда получается.

Sub ОткрытьИПроверитьФайлы()
    Dim fso As Object
    Dim folderPath As String
    Dim fileName As String
    Dim fullPath As String
    Dim i As Integer
    Dim files() As String
    Dim appExcel As Object
    Dim newName As String

    folderPath = "C:C:\Users\Da!Rosa\Desktop\BM"
    Set fso = CreateObject("Scripting.FileSystemObject")
    fileName = Dir(folderPath & "*.*")
    Set appExcel = CreateObject("Excel.Application")
    appExcel.Visible = False '
    Do While fileName <> ""
    fullPath = folderPath & fileName
        On Error Resume Next
        appExcel.Workbooks.Open fullPath
        If Err.Number <> 0 Then
            newName = "ПОДОЗРИТЕЛЬНЫЙ_ФАЙЛ_" & fileName
            fso.MoveFile fullPath, folderPath & newName
            Err.Clear
        Else
            appExcel.ActiveWorkbook.Close
        End If
       
        fileName = Dir
    Loop
    appExcel.Quit
    Set fso = Nothing
    Set appExcel = Nothing

    MsgBox "Проверка завершена.", vbInformation
End Sub
#8
А хоть что-то Вы уже попробовали? И что значит "проблемы с открытием"? Какого рода проблемы? И формат файлов не забудьте уточнить.
Про просмотр файлов в папке на сайте есть статья: Просмотреть все файлы в папке
Останется лишь добавить проверку на "проблему с открытием".
#9
Вопросы по Excel и VBA / макрос по открытию файлов
Последний ответ от madina9114 - 13.11.2025, 17:59:48
Добрый вечер! не могли бы вы помочь разобраться с проблемой - нам нужен макрос, который будет поочередно в указанной папке (и папок внутри нее) открывать файлы и помечать те файлы, с открытием которых есть проблемы. Помечать можно путем изменения названия. КАк это реализовать в VBA?

#10
Дмитрий, большое спасибо за подсказку с ВПР! и правда это две секунды и нужный результат - спасибо!
В любом случае тоже поиграюсь с параметрами по вашему последнему скрину, чтобы лучше прочувствовать работу функции.

Еще раз, спасибо!
Яндекс.Метрика Рейтинг@Mail.ru