Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2015, 10:20   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Не факт что Лист1 -у меня например таких почти нет...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 19.02.2015, 10:42   #12
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. В ячейке А1 файла со скриптом ссылка останется в том случае, если макрос завершился с ошибкой. Т. е. не отработал до конца.
2. Макрос получает значение из ячеек "A1" всех файлов в папке из листов с именем "Лист1". Если такого листа нет - будет ошибка. Уточните, из каких листов нужно получать данные? Чему они должны соответствовать и что делать если данные не соответствуют требованиям, либо отсутствуют?
3. Если макрос запускается из Excel 2007, то файлы с расширением, соответствующим маске "*.xls*" должны обрабатываться без ошибок.

Думаю, что проблема связана с пунктом 2. Давайте ее решим, затем поработаем дальше.
Еще лучше, если Вы прикрепите файл Excel (можно пустой, только с значением в ячейке "A1"), который не обрабатывается без пересохранения.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.02.2015, 10:59   #13
MIKID
Пользователь
 
Регистрация: 30.08.2013
Сообщений: 29
По умолчанию

Лист оказывается в документах xls называется Sheet1. Но я в скрипте заменил, все равно не работает. Только после пересохранения, он меняется на Лист1 и тогда все работает.
MIKID вне форума Ответить с цитированием
Старый 19.02.2015, 11:01   #14
MIKID
Пользователь
 
Регистрация: 30.08.2013
Сообщений: 29
По умолчанию

Файл прикрепил
Вложения
Тип файла: rar Задача.rar (3.5 Кб, 21 просмотров)
MIKID вне форума Ответить с цитированием
Старый 19.02.2015, 11:05   #15
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Где файл?
Если листы "Sheet1" по умолчанию есть в файлах, то измените в коде имя листа при формировании ссылки.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.02.2015, 21:44   #16
MIKID
Пользователь
 
Регистрация: 30.08.2013
Сообщений: 29
По умолчанию

Добрый вечер.
Файлы примеры, которые переименовываются только после пересохранения в архиве задача.rar.
В скрипте менял на "Sheet1" не помогает.
MIKID вне форума Ответить с цитированием
Старый 20.02.2015, 06:17   #17
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Попробуйте это:
Код:
Sub Main()
    Dim p As String, f As String, myDir As String, s As String, x As Object, fso
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку": .ButtonName = "Выбрать": .Show
        If .SelectedItems.Count = 0 Then Exit Sub Else p = .SelectedItems(1) & "\"
    End With
    Application.ScreenUpdating = False
    myDir = "C:\Error\": f = Dir(p & "*.xls*")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            Set x = GetObject(p & f): s = x.Sheets(1).[A1]: x.Close False
            If Not s Like "######" Then s = "error_" & s
            If fso.FileExists(p & fso.GetBaseName(p & f) & ".pdf") Then
                Name fso.GetFile(p & fso.GetBaseName(p & f) & ".pdf") As p & s & ".pdf"
                Kill p & f
            Else
                s = myDir & s & "." & fso.GetExtensionName(p & f)
                If fso.FileExists(s) Then Kill s
                Name fso.GetFile(p & f) As s
            End If: [A1].ClearContents
        End If: f = Dir
    Loop
End Sub
ВАЖНО: Если в папке есть файл, в ячейке "A1" которого, например, "ABCD" (т. е. не соответствует маски из 6-ти цифр), то такой файл будет переименован в "error_ABCD". Правильно? Но... Пусть, например, в папке присутствует два Excel файла, в которых ячейка "A1" пуста. В этом случае (т. к. это значение Не 6 цифр) файл будет переименован в "error_". Затем, при обработке 2-ого файла с пустой ячейкой "A1", файл будет переименован в такое же имя, и, соответственно, 1-ый файл будет заменен. То же произойдет, если в разных файлах значения в ячейках "A1" одинаковы.
Укажите, что в таких случаях делать макросу.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 20.02.2015 в 06:37. Причина: Добавлено
SAS888 вне форума Ответить с цитированием
Старый 20.02.2015, 11:40   #18
MIKID
Пользователь
 
Регистрация: 30.08.2013
Сообщений: 29
По умолчанию

Добрый день.
Да не додумано, я оказался не подготовленным, извините за украденное время.
Могут же еще и присутствовать символы в А1, которые нельзя применять в имени файла.
Тогда прошу проще:
1. Если в А1 цифры и их 6, то переименовать PDF этим значением и XLS удалить.
2. Во всех остальных случаях и в случаях совпадений значений в А1- значением из А1 PDF не переименовывать, а переименовать PDF "error_ 1,2,3, и т д по порядку, XLS так же после обработки удалить.
Во вложении разные варианты в ячейках А1, а так же PDF ки и файл со скриптом последний вариант. Он сейчас не работает.
Запускаю скрипт под Excel 2007.

Спасибо!!!!!!
MIKID вне форума Ответить с цитированием
Старый 20.02.2015, 11:47   #19
MIKID
Пользователь
 
Регистрация: 30.08.2013
Сообщений: 29
По умолчанию

Файл оказался большим, оставил только правильную пару.
Вложения
Тип файла: rar Пример.rar (436.4 Кб, 9 просмотров)
MIKID вне форума Ответить с цитированием
Старый 20.02.2015, 15:07   #20
MIKID
Пользователь
 
Регистрация: 30.08.2013
Сообщений: 29
По умолчанию

Еще раз извините, макрос работает, это я накосячил, вставил неопределенные условия в А1. Те о которых Вы и спрашивали.
Очень прошу поправить по условиям, что чуть выше.

Спасибо!!

Последний раз редактировалось MIKID; 20.02.2015 в 22:37.
MIKID вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переименование файлов в папке макросом из Excel xamillion Microsoft Office Excel 32 14.10.2013 11:48
Скрипт, который считает количество файлов в каждой папке, находящихся в данной папке so1idsnake Помощь студентам 20 07.08.2013 22:38
Excel переименование файлов в папке макросом RamZes1715 Microsoft Office Excel 7 20.10.2011 16:39
Переименование файлов в папке. mr_Smitt Общие вопросы Delphi 1 28.09.2009 17:20
Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке. RammFan Win Api 1 09.06.2007 11:09