Страницы: 1
RSS
Информация в ячейке - имя файла при его сохранении
 
Посоветуйте пожалуйста, хочу сделать так, чтобы информация, которая содержится в определённой ячейке листа, стала бы именем сохраняемого файла.

В ячейке A1 листа 1 указана цифра «9», жму на «сохранить как» и хочу, чтобы в строку «имя файла» перенеслась бы цифра, содержащаяся в ячейке  A1 листа 1, в данном случае «9».
 
В модуль книги ("ЭтаКнига", НЕ в обычный модуль "Module1"!)
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Static esc As Boolean
If esc Then Exit Sub
If SaveAsUI Then
  esc = True
  Cancel = True
  Application.Dialogs(xlDialogSaveAs).Show Range("A1")
  esc = False
End If
End Sub
Изменено: Казанский - 22.05.2015 18:00:22
 
Казанский
Спасибо, получилось!

Подскажите пожалуйста, как сделать так,  чтобы данные, содержащиеся в двух строчках  в ячейках b2:c2 и ячейках b3:c3 стали бы именем сохраняемого файла «акт проверки деталей партии № 455». Если бы желаемое имя сохраняемого файла находилось бы в одной строке, то ясно, что надо в строке Show Range указать диапазон, например, Show Range("b2:c2"). А вот что сделать, если желаемое имя сохраняемого файла находится в двух строках?
 
Цитата
Olga H. написал: что сделать, если желаемое имя сохраняемого файла находится в двух строках
перечислить ячейки в коде выше
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Static esc As Boolean
If esc Then Exit Sub
If SaveAsUI Then
  s$ = Join(Array([B2], [B3]), "")  'переменная из значений 2х ячеек 
  esc = True
  Cancel = True
  Application.Dialogs(xlDialogSaveAs).Show s  
  esc = False
End If
End Sub
Изменено: JeyCi - 23.05.2015 09:43:07
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi. В отношении  " 'переменная из значений 2х ячеек", покажите пожалуйста в строчке макроса, как эта переменная будут выглядеть в приложении к моему Примеру 2
 
уже показала ячейки B2, B3 и подписала в комменте...
код должен находиться там же, где указал Казанский...
прежде, чем задавать вопрос - пробуйте разобраться сами, когда уже всё написано...
непонятно ваше непонимание  
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, извините, я не очень хорошо знаю терминологию по макросам. Что означает в отношении моего Примера 2   'переменная из значений 2х ячеек?
 
Цитата
Olga H. написал: Что означает
для кода - ничего не означает - комментарии не исполняются - просто для инфо...
Цитата
JeyCi написал: подписала в комменте...
для вас - просто прочитать, чтобы понять... неизвестные слова лучше прогуглить, если хотите узнать терминологию макросов ;) для продуктивной работы
p.s. ответ по теме дан - просто примените его
Изменено: JeyCi - 23.05.2015 10:45:42
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, спасибо, всё получилось!  Просто подумала, что по вашему примечанию "'переменная из значений 2х ячеек " требуется дополнительно что то писать в строку макроса s$ = Join(Array([B2], [B3], ""), что то указывать в кавычках этой строки. На самом деле ничего не надо добавлять. Спасибо.
 
Цитата
Olga H. написал: что то указывать в кавычках этой строки
кавычки пустые в данном случае дают пробел между значениями 2х ячеек,
- это разделитель (см справку функции Join - в редакторе vba кнопка F1)
- если поставите в кавычки любой символ(ы), то они пропишутся между значениями ячеек - например, запятую...
хорошо, что разобрались - не бойтесь тестировать СВОИ идеи  
Изменено: JeyCi - 23.05.2015 10:53:58
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, подскажите пожалуйста, что необходимо сделать если в ячейках, данные в которые становятся именем сохраняемого файла, имеется элемент, который построен с помощью ActiveХ и в окошке этого элемента указаны данные? Чтобы имя сохраняемого файла было бы «акт проверки деталей партии № 455».
 
Цитата
Olga H. написал: если в ячейках, данные в которые становятся именем сохраняемого файла, имеется элемент, который построен с помощью ActiveХ
я не использую такие варианты!!..., считаю, чем проще файл в обращении - тем удобнее его обслуживать...
если вы решили вставить этот Элемент - то разберитесь с его свойствами: можете назначить  Linked Cell - и результат будет в ячейке...
P.S. google в помощь по Элементам ActiveX
Изменено: JeyCi - 24.05.2015 09:37:32
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Olga H. написал:
если в ячейках, данные в которые становятся именем сохраняемого файла, имеется элемент, который построен с помощью ActiveХ
Такого не может быть - ActiveX на листе находится НАД ячейкой. Делайте, как советует JeyCi - связывайте контрол с ячейкой.
 
Подскажите пожалуйста, как сделать так, чтобы данные, содержащиеся в двух строчках в ячейках b2:c2 и b3:d3, стали бы именем сохраняемого файла, а именно акт проверки деталей партии № 455. Отличие от предыдущего моего примера № 2 в том, что теперь номер документа (455) расположен в отдельной ячейке (d3), а раньше он был в одной ячейке с текстом «деталей партии №». Помогите пожалуйста подредактировть указанный ниже макрос, чтобы имя сохраняемого документа стало акт проверки деталей партии № 455 Предыдущий работоспособный макрос:
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Static esc As Boolean 
If esc Then Exit Sub 
If SaveAsUI Then 
  s$ = Join(Array([B2], [B3]), "")  'переменная из значений 2х ячеек 
  esc = True 
  Cancel = True 
  Application.Dialogs(xlDialogSaveAs).Show s   
  esc = False 
End If
End Sub
 
Код
s$ = Join(Array([B2], [C2], [B3], [D3]), "")
 
Ольга, Вы не первый день на форуме - коды следует оформлять тегом.
 
Вставила макрос в приложенный к этому посту пример, файл сохраняется под нужным именем, но перед именем файла и после него проявлятся апострофы. Подскажите пожалуйста, что сделать, чтобы из названия файла исчезли апострофы.  
 
А может попробовать обычное сцепление?
Код
Ячейка1 & " " & ячейка2 & " " & ...
 
Уберите из строки точку - кавычек не будет.
Ну и двоеточие - его всё равно придётся удалять.
 
Hugo, убрала точку и двоеточие и апострофы исчезли. А можно ли подредактировать макрос, чтобы точка и двоеточие в ячейке остались или же эти символы недопустимы в названии файла?

Подскажите пожалуйста, что необходимо сделать чтобы в названии файла между no (в книге это находится в ячейке E8) и 455 (в книге это находится в ячейке F8) был бы единичный пробел, а то они сейчас в названии файла сливаются.
 
Лист сохраняется под именем, указанным в ячейках A1:C1, то есть aa-bb-cc. Но если из крайней ячейки (C1) удалить данные (сс), то имя сохраняемого файла получается с «хвостиком» (тире после bb: то есть aa-bb-).

Подскажите пожалуйста, как изменить макрос (он записан в «ЭтаКнига»), чтобы при удалении данных из ячеек B1:C1 имя файла сохранялось бы без «хвостика», и было aa-bb или aa
 
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Static esc As Boolean
If esc Then Exit Sub
If SaveAsUI Then
  s$ = [A1] & "-" & [B1] & "-" & [C1]
  For i = Len(s$) To 1 Step -1
    If Right(s$, 1) = "-" Then s$ = Left(s$, Len(s$) - 1) Else Exit For
  Next
  esc = True
  Cancel = True
  Application.Dialogs(xlDialogSaveAs).Show s
  esc = False
End If
End Sub
Изменено: Михаил Лебедев - 16.06.2015 10:12:02
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев, спасибо, работает! Вставила ваш макрос в «ЭтаКнига» взамен того, который был в Примере 6, и "хвостики" в имени сохраняемого файла исчезают при удалении данных из ячеек B1:C1.
Страницы: 1
Наверх