Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
При ошибке в макросе чтобы выскакивало окошко.
 
     Здравствуйте.
    Имеется код. Его задача вычесть из имени активного (открытого) файла цифру 1, тем самым получив имя предыдущего файла, открыть его, скопировтаь ячейку, закрыть его и вставить скопированное в определённую ячейку активного файла.
Вопрос:
    Если имя предыдущего файла (вычесть из имени активного (открытого) файла цифру 1, тем самым получив имя предыдущего файла) не найдено, макрос выводит сообщение, что файл с этим именем не найден (не дословно привёл). На нём можно нажать ОК. Если нажать - вылетишь в дебаггер. А как сделать так, чтобы если нажать ок в указанном сообщении - то макрос бы прекращал свою работу (т.е. просто не выполнялся бы).
Приложу файл, чтобы можно было запустить код и увидеть сообщение.
Изменено: Екселист - 19.06.2015 19:17:12
Копирование ячейки по условию: имя файла на один меньше текущего
 
И снова я.
Короче я не без Вашей помощи смог сделать код. В просто Эксель файле код отрабатывает нормально. Но в файлах, выгруженных из 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                  
Изменено: Екселист - 19.06.2015 14:30:14
Вставка значения из предыдущего файла
 
И снова здравствуйте.
Возникла новая просьба.
Из 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 и т.д.) вводятся цифры - номера смены. Если посмотреть все три приложенных мной файла, то видно, что из файла в файл эти номера увеличиваются на одну единицу. Можно ли в макросе реализовать автоматический ввод таких номеров? Если да - можно пример макроса.
И прошу. не судите строго, с макросами я пока ещё очень НА ВЫ, лучше всего пока получается делать макрос макрорекордером и допиливать его строчками, также сделанными макрорекордером или найденными на этом и других форумах поиском.
П первому вопросу знаю что похожие темы были, но что-то поиском не получается их найти.
Страницы: 1
Наверх