Сохранение файла с именем, состоящим из нескольких значений из ячейки
Пользователь
Сообщений: Регистрация: 16.07.2015
21.11.2015 12:59:02
Здравствуйте.
Подскажите, как создать такой процесс, кода при сохранении файла он сохранялся с именем трех первых значений ячейки B2 в той директории, в которой он находится.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Пользователь
Сообщений: Регистрация: 15.09.2012
Профессиональная разработка приложений для MS Office
а как это понять? Чем эти значения разделены и как понять какое первое, какое третье и т.д.? В общем случае может помочь Split, а так же Replace и InStr. Если знать как искать значения внутри ячейки...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Модератор
Сообщений: Регистрация: 14.09.2012
Контакты см. в профиле
21.11.2015 15:55:35
Цитата
The_Prist написал:В общем случае может помочь Split
Или Left, если разговор о трёх первых символах)) А вообще подобных тем (имя файла из ячейки) на форуме целая куча.
Пользователь
Сообщений: Регистрация: 16.07.2015
21.11.2015 16:34:46
, С именем из трех первых значений или знаков текста в ячейки B2, но это не так важно с этим хоть и коряво но разберусь, дело в другом… В одной из тем нашел Ваш код, добавил условие и повесил его на событие закрытие книги
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) ' закрытие книги
If Range("B2").Value <> "" Then 'Если ячейка заполнена то
ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\" & [B2].Value & ".xlsm" 'Сохранить с именем ячейки
Else
'Если ячейка не заполнена, то сохраняется как есть с первоначальным именем
End If
End Sub
Если ячейка пуста то файл сохраняется как есть (то есть с тем изначально шаблонным именем), если ячейка заполнена, то создается новый файл с именем ячейки. Но возникает ошибка после открытия уже созданного файла и повторного его сохранения, с таким сообщением: “Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.” Как обойти данную ошибку и сохранять созданный файл при изменениях?
Изменено: - 21.11.2015 17:23:28
Пользователь
Сообщений: Регистрация: 11.08.2016
20.08.2016 17:11:51
Здравствуйте) имеется файл, который нужно сохранить в папку с названием из ячеек файла, и именем из нескольких ячеек файла. Пробовала вставлять коды из постов на форуме - ругается экселька.
да, имя сохраняет, но папку придется указывать в макросе конкретную.. а мне нужно чтобы макрос сам искал папку в которую нужно сохранить, с данными из ячейки(в ячейках название папки)
Изменено: - 20.08.2016 19:15:53
Пользователь
Сообщений: Регистрация: 21.12.2012
20.08.2016 19:46:04
Код
Sub qq()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="d:\работа\" & CStr(Range("B5")) & "\" & CStr(Range("C5")) & "\" & Range("E5") & Range("G5") & Range("I5"), FileFormat:=51
Application.DisplayAlerts = True
End Sub
Пользователь
Сообщений: Регистрация: 11.08.2016
20.08.2016 20:09:35
спасибо большое!) все просто супер получилось!)
Пользователь
Сообщений: Регистрация: 16.05.2016
02.02.2017 12:59:53
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\" & [J2].Value & ".xls"
End Sub
Пользователь
Сообщений: Регистрация: 05.06.2017
29.08.2018 10:37:55
RAN, применил Ваш макрос, спасибо огромное, мне тоже пригодилось. Подскажите что нужно изменить чтобы макрос сохранял в формате xlsm. Заранее спасибо!
Изменено: - 07.05.2020 22:31:46(Написал код понятнее)
Модератор
Сообщений: Регистрация: 14.09.2012
Контакты см. в профиле
07.05.2020 23:07:44
Код
Sub Macro1()
Dim sPath As String, Txt As String, Rng As Range, sFile As String
sPath = "D:\Downloads\" 'Путь соъранения
Txt = "Слово" ' Искомое слово
Set Rng = Sheets("Лист1").Range("A2:F10").Find(what:=Txt, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not Rng Is Nothing Then
sFile = Rng.Offset(1, 0)
ActiveWorkbook.SaveAs Filename:=sPath & sFile & ".xlsx"
End If
End Sub
Пользователь
Сообщений: Регистрация: 07.05.2020
08.05.2020 09:35:18
Цитата
Юрий М написал: Код ? 12345678910Sub Macro1()Dim sPath As String, Txt As String, Rng As Range, sFile As String sPath = "D:\Downloads\" 'Путь соъранения Txt = "Слово" ' Искомое слово Set Rng = Sheets("Лист1").Range("A2:F10").Find(what:=Txt, LookIn:=xlFormulas, LookAt:=xlWhole) If Not Rng Is Nothing Then sFile = Rng.Offset(1, 0) ActiveWorkbook.SaveAs Filename:=sPath & sFile & ".xlsx" End IfEnd Sub
Все супер! Спасибо огромное! А можно к этому ещё добавить: если файл уже с таким именем существует то спрашивать перезаписать или сохранить с другим именем и ввести каким?
Модератор
Сообщений: Регистрация: 14.09.2012
Контакты см. в профиле
08.05.2020 12:09:45
Зачем Вы меня цитируете? По поводу сохранения файла - давайте уже в отдельной теме.