[/vba] В активной книге беру 2 листа (НужныйЛист и НужныйЛистТоже). Присваиваю этим не сохраненным, но уже открытым листам название новой книги из ячейки "C11" (исходный файл не трогаю, т.к. имена не мешают одновременному открытию. Однако, при повторном проигрывании макроса возникает ошибка во второй строчке кода, т.к. файл с таким названием уже открыт. Хочу избежать этой ошибки путем добавления к каждому последующему названию файла "v.1", "v.2",.. чтобы защититься от человеческого фактора. Нашел подходящий код, но он сложен для меня и через встроенные Private Sub. Можно ли как-то решить данную задачу внутри одного тела кода? Типа проверка на открытые книги с таким названием, если нет открытых с таким именем, то сохраняем из ячейки C11, если есть открытые, то C11 & "v.1", если и с таким именем файл открыт, то "v.2". Думаю пользователю хватит трех открытий.
[/vba] В активной книге беру 2 листа (НужныйЛист и НужныйЛистТоже). Присваиваю этим не сохраненным, но уже открытым листам название новой книги из ячейки "C11" (исходный файл не трогаю, т.к. имена не мешают одновременному открытию. Однако, при повторном проигрывании макроса возникает ошибка во второй строчке кода, т.к. файл с таким названием уже открыт. Хочу избежать этой ошибки путем добавления к каждому последующему названию файла "v.1", "v.2",.. чтобы защититься от человеческого фактора. Нашел подходящий код, но он сложен для меня и через встроенные Private Sub. Можно ли как-то решить данную задачу внутри одного тела кода? Типа проверка на открытые книги с таким названием, если нет открытых с таким именем, то сохраняем из ячейки C11, если есть открытые, то C11 & "v.1", если и с таким именем файл открыт, то "v.2". Думаю пользователю хватит трех открытий.timo64uk
В файле прикрепил макрос. Название листа в новом файле звучит как "Название новой Книги (состоящей из НужныйЛист и НужныйЛистТоже) в этой ячейке" При запуске второй раз макроса высккакивает ошибка, т.к. такое название уже имеет открытый файл.
В файле прикрепил макрос. Название листа в новом файле звучит как "Название новой Книги (состоящей из НужныйЛист и НужныйЛистТоже) в этой ячейке" При запуске второй раз макроса высккакивает ошибка, т.к. такое название уже имеет открытый файл.timo64uk
если есть открытые, то C11 & "v.1", если и с таким именем файл открыт, то "v.2".
А если не открыт, но существует в закрытом виде? Спросит про перезапись. Может, при каждом сохранении просто этим же макросом добавлять к тексту в ячейке С11 номер версии? К сожалению, файл с макросом скачать и посмотреть не могу, на работе запрет стоит, поэтому только общие слова
если есть открытые, то C11 & "v.1", если и с таким именем файл открыт, то "v.2".
А если не открыт, но существует в закрытом виде? Спросит про перезапись. Может, при каждом сохранении просто этим же макросом добавлять к тексту в ячейке С11 номер версии? К сожалению, файл с макросом скачать и посмотреть не могу, на работе запрет стоит, поэтому только общие слова_Boroda_
Да не проблема, в отдельной пустой ячейке (например, в С12) белым текстом по белому фону пишите версию. Без буквы, просто цифра, к которой потом удобно будет прибавлять по единичке [vba]
[/vba] Кстати, при закрытии файла (или при открытии) ячейку с12 обнулять можно
Да не проблема, в отдельной пустой ячейке (например, в С12) белым текстом по белому фону пишите версию. Без буквы, просто цифра, к которой потом удобно будет прибавлять по единичке [vba]
If SuffixVersion = maxVersions And IsWorkbookOpen(newFileName) Then MsgBox "Достигнуто максимальное число версий. Файл не был сохранен.", vbExclamation Exit Sub End If
Sheets(Array("НужныйЛист", "НужныйЛистТоже")).Copy ActiveWorkbook.SaveAs newFileName, FileFormat:=51 End Sub
Function IsWorkbookOpen(wbName As String) As Boolean On Error Resume Next IsWorkbookOpen = Not (Workbooks(wbName) Is Nothing) On Error GoTo 0 End Function
[/vba] В противном случае необходимо будет сделать ещё дополнительную проверку что
If SuffixVersion = maxVersions And IsWorkbookOpen(newFileName) Then MsgBox "Достигнуто максимальное число версий. Файл не был сохранен.", vbExclamation Exit Sub End If
Sheets(Array("НужныйЛист", "НужныйЛистТоже")).Copy ActiveWorkbook.SaveAs newFileName, FileFormat:=51 End Sub
Function IsWorkbookOpen(wbName As String) As Boolean On Error Resume Next IsWorkbookOpen = Not (Workbooks(wbName) Is Nothing) On Error GoTo 0 End Function
[/vba] В противном случае необходимо будет сделать ещё дополнительную проверку что