Здравствуйте. Имеется код. Его задача вычесть из имени активного (открытого) файла цифру 1, тем самым получив имя предыдущего файла, открыть его, скопировтаь ячейку, закрыть его и вставить скопированное в определённую ячейку активного файла. Вопрос: Если имя предыдущего файла (вычесть из имени активного (открытого) файла цифру 1, тем самым получив имя предыдущего файла) не найдено, макрос выводит сообщение, что файл с этим именем не найден (не дословно привёл). На нём можно нажать ОК. Если нажать - вылетишь в дебаггер. А как сделать так, чтобы если нажать ок в указанном сообщении - то макрос бы прекращал свою работу (т.е. просто не выполнялся бы). Приложу файл, чтобы можно было запустить код и увидеть сообщение.
И снова я. Короче я не без Вашей помощи смог сделать код. В просто Эксель файле код отрабатывает нормально. Но в файлах, выгруженных из 1С, путём сохранения в формате Эксель почему-то не верно считает имя предыдущего файла. Помогите понять в чём проблема, пожалуйста. Для примера прилагаю два файла. Код:
Код
Sub DateFiles1()
Dim NameXLSM1 As String 'Имя открываемого файла с расширением
Dim Name1 As String 'Имя открываемого файла без расширения
Dim NameXLSM0 As String 'Имя предыдущего файла с расширением
Dim NameFull0 As String 'Полное имя предыдущего файла с расширением
Dim Name0 As String 'Имя предыдущего файла без расширения
Dim dtName As Date 'Дата для преобразования (для вычитания 1)
Dim intLenght As Integer 'Длина имени открываемого файла с расширением
'Определение имени текущего (открываемого) файла и преобразование его в дату.
NameXLSM1 = ActiveWorkbook.Name
intLenght = Len(NameXLSM1)
Name1 = Left(NameXLSM1, intLenght - 4) ' Отсекает 4 знака слева
dtName = CDate(Name1)
'Вычитание из названия файла 1 (т.е. определение имени предыдущего файла).
dtName = dtName - 1
Name0 = Format(dtName, "yyyy/mm/dd")
' Открытие макросом предыдущего файла .
NameFull0 = ActiveWorkbook.Path & "\" & Name0 & ".xls"
Workbooks.Open Filename:=NameFull0
NameXLSM0 = Name0 & ".xls"
Windows(NameXLSM0).Activate
' Копирование содержимого предыдущего файла .
Application.DisplayAlerts = False 'Чтобы на задавал вопросов
Range("V39").Select
Selection.Copy
'Закрытие предыдущего файла.
ActiveWindow.Close
'Вставка данных из буфера обмена в указанное место нового файла.
Windows(NameXLSM1).Activate
Range("Q39").Select
ActiveSheet.Paste
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Application.DisplayAlerts = True
End Sub
И снова здравствуйте. Возникла новая просьба. Из 1С выгружаются путём сохранения в формате Эксель отчёты КМ-6. (См. примеры). Первый вопрос: Файл 2015.01.01.xlsm (29.12 КБ)(далее файл 1) - первый отчёт. В файле 2015.01.02.xlsm (24.32 КБ)(далее файл 2) значение в выделенной жёлтым ячейке берётся из предыдущего файла (файл 1) также из выделенной жёлтым ячейки. В файле 2015.01.03.xlsm(23.95 КБ)(далее файл 3) значение в выделенной зелёным ячейке берётся уже из файла (файл 2) являющегося предыдущим (по названию, которое есть дата в формате гг,мм,дд, и отличается днём) для файла (файл 2). И так по каждому следующему файлу. То есть если будет аналогичный файл (назовём его файл 4), то данные в ту же ячейку (ячейки одинаковые во всех файлах), что и выделенная зелёным в файле (файл 3) будут браться уже из файла (файл 3). И так далее. Мне нужно сделать указанное выше в макросе, желательно так, чтобы можно было добавить его в макрос из файла. Второй вопрос: Можно ли реализовать в макросе (желательно опять же связать с макросом из файла) следующее: В ячейке "Смена" (в файле 1 это 0057, в файле 2 - 0058 и т.д.) вводятся цифры - номера смены. Если посмотреть все три приложенных мной файла, то видно, что из файла в файл эти номера увеличиваются на одну единицу. Можно ли в макросе реализовать автоматический ввод таких номеров? Если да - можно пример макроса. И прошу. не судите строго, с макросами я пока ещё очень НА ВЫ, лучше всего пока получается делать макрос макрорекордером и допиливать его строчками, также сделанными макрорекордером или найденными на этом и других форумах поиском. П первому вопросу знаю что похожие темы были, но что-то поиском не получается их найти.