Hugo, И макрос кончится. И к чему это? 0 мне не мешает. Он появился после того, как я обработал ошибку с отсутствием файла. Макрос отрабатывает исправно, но задалбывает нажимать ОК на окошке с 0. Его не надо останавливать. Надо чтобы просто макрос сам нажимал ОК или не выдавал окна.
Юрий М, Не понял ответ. Мне не надо выводить. Мне надо убрать. Сейчас я сделал, что при ненахождении файла выходит окно с ошибкой и всё. Но при успешной работе макроса выходит окно с цифрой 0. Как его убрать?
Здравствуйте. Имеется код. Его задача вычесть из имени активного (открытого) файла цифру 1, тем самым получив имя предыдущего файла, открыть его, скопировтаь ячейку, закрыть его и вставить скопированное в определённую ячейку активного файла. Вопрос: Если имя предыдущего файла (вычесть из имени активного (открытого) файла цифру 1, тем самым получив имя предыдущего файла) не найдено, макрос выводит сообщение, что файл с этим именем не найден (не дословно привёл). На нём можно нажать ОК. Если нажать - вылетишь в дебаггер. А как сделать так, чтобы если нажать ок в указанном сообщении - то макрос бы прекращал свою работу (т.е. просто не выполнялся бы). Приложу файл, чтобы можно было запустить код и увидеть сообщение.
Это в коде не обязательно. Оно нужно, если скопированное кодом значение им же вставляется в ОБЪЕДИНЁННУЮ ячейку, и не нужно её разбивать. Поскольку без этой части код при вставке разбивает объединённую ячейку. А с ней после вставки вновь объединяет её.
Также замечу, что данный код работает только с файлами, имеющими расширение .xls Для других файлов код надо слегка видоизменять. Спрашивайте на форуме - я подскажу как по вашим условиям. И не только я.
Большущее Вам спасибо. Даже не просто большущее, а Огромнейшее Человеческое Спасибо. Благодаря Вам смог избавиться от одного лишнего макроса (делал доп макросом, запускаемым отдельно от этого) и ускорить свою работу.
Исправил Есть вопрос: Макрос сей копирует значение из ячейки и вставляет в другую ячейку. А если надо вставлять значение +1? К примеру скопировал 10, вставил 11
Он сам так вставляется. Копирую его в нормальном виде - а вставляется так - это если с другого форума (доппомощь по коду там). Если с ВБА - вставляются кракозябры. Название темы замените на такое: Копирование ячейки по условию что имя файла на один меньше текущего получается не во всех файлах Эксель
И снова я. Короче я не без Вашей помощи смог сделать код. В просто Эксель файле код отрабатывает нормально. Но в файлах, выгруженных из 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
TheBestOfTheBest, Поймите, я сейчас работаю с этими отчётами. Отчётов оооочень много. Мне нужно ссейчас ускорить свою работу путём автоматизации. На изучение ВБА уйдёт минимум месяц, если не больше. помогите, пожалуйста.