Excel сохранить по имени в ячейке

 

Влад

Пользователь

Сообщений: 20
Регистрация: 20.01.2016

Всем привет!
Сабж собственно, можно ли так сделать? Допустим, в ячейке D8 находится текст «бла-бла». Надо, при нажатии на кнопку «сохранить», чтобы книга сохранялась под именем «бла-бла.xlsm».

 

Пытливый

Пользователь

Сообщений: 4586
Регистрация: 22.12.2012

Можно так сделать. Макросом.
Можно макрорекордером записать процесс сохранения файла в нужную папку в нужном формате. Потом там подправить формирование имени файла (чтоб из ячейки дергалось).

Кому решение нужно — тот пример и рисует.

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Только не всякое бла-бла годится как имя файла!

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#4

11.05.2016 10:23:35

Код
ActiveWorkBook.SaveAs "C:dir" & Range("D8") & ".xlsx"

Изменено: Kuzmich11.05.2016 18:00:16

 

Влад

Пользователь

Сообщений: 20
Регистрация: 20.01.2016

#5

11.05.2016 15:22:54

а как оформить в виде процедуры? И чтобы сохранялось в текущей папке?
Просто если пишу

Код
Sub Save()
ActiveWorkBook.Save As Range("D8") & ".xlsx"
End Sub

появляется ошибка «compile error: expected expression» и выделяется «As».

Изменено: Влад11.05.2016 17:12:57

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#6

11.05.2016 16:01:43

Код
ActiveWorkBook.Save As ThisWorkbook.Path & "" & Range("D8") & ".xlsx"
 

Влад

Пользователь

Сообщений: 20
Регистрация: 20.01.2016

Все равно «expected expression». Может вместо Sub что-то другое надо? Или в скобки что-то дописать?

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

Save As пишется слитно: SaveAs

Согласие есть продукт при полном непротивлении сторон.

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#9

11.05.2016 16:27:24

В модуль листа , где ячейка D8

Код
Sub SaveBook()
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "" & Range("D8") & ".xls"
End Sub
 

Влад

Пользователь

Сообщений: 20
Регистрация: 20.01.2016

И как активировать этот макрос? Нажимаю «save» в меню экселя, сохраняется под старым именем.

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

Запускаете макрос Sub SaveBook()

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#12

11.05.2016 17:18:15

Или вставьте эту строку в модуль ЭтаКнига в процедуру Private Sub Workbook_BeforeSave. Как-то так

Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "" & Range("D8") & ".xls"
End Sub

Согласие есть продукт при полном непротивлении сторон.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#13

11.05.2016 17:27:04

У объекта Range() желательно указывать «родителя», т.е. Лист, на котором этот Range() находиться. Без явного указания макрос будет пытаться получить значение ячейки Range(«D8») АКТИВНОГО, на момент сохранения, листа

Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "" & Worksheets("Ваш_лист").Range("D8") & ".xls"
End Sub

Согласие есть продукт при полном непротивлении сторон.

Привет, сейчас мы рассмотрим ситуацию, когда у Вас возникла необходимость в Excel сохранять файл с определенным названием, которое необходимо сформировать из значения ячейки или даже нескольких. В этой заметке я приведу простой пример реализации данной задачи.

Содержание

  1. Исходные данные
  2. Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке
  3. Добавление кнопки в Excel для запуска макроса
  4. Сохранение файла Excel с названием из ячейки — без привязки к ячейке
  5. Сохранение файла Excel с названием, которое сформировано из значений двух ячеек

Исходные данные

Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.

Примечание! Я использую Excel 2013.

Скриншот 2

В зависимости от конкретных требований и условий, задачу можно реализовать по-разному, хотя принцип будет один и тот же, в этой статье мы рассмотрим несколько вариаций реализации.

Начнем мы с самой простой ситуации, когда заранее известна ячейка, на основе которой будет сформировано имя файла, и адрес этой ячейки изменяться не будет.

Заметка! Этапы разработки программы – как создаются и проектируются программы?

Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.

Ниже представлен код процедуры, я его подробно прокомментировал. Единственное скажу, что я во всех примерах сохраняю новые файлы без макросов (расширение .xlsx), т.е. по факту будет один файл с поддержкой макросов, а все производные — без.

Если нужно сохранять макрос в каждом файле, т.е. файлы с поддержкой макросов (расширение .xlsm), то необходимо просто указать другой тип файла при сохранении, а именно xlOpenXMLWorkbookMacroEnabled, в процедурах в комментариях я это указываю.

Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.

Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».

Код процедуры

   
   Sub SaveFile()

   'Объявление переменных
   Dim CellValue As String
   Dim Path As String
   Dim FinalFileName As String

   'Временно отключаем показ вспомогательных сообщений
   Application.DisplayAlerts = False

   'Задаём каталог сохранения файла (в данном случае текущий каталог)
   Path = ThisWorkbook.Path & ""

   'Получаем значение ячейки
   CellValue = Range("B14")

   'Формируем итоговый путь и название файла
   FinalFileName = Path & CellValue

   'Сохраняем файл
   ActiveWorkbook.SaveAs FileName:=FinalFileName, _
                      FileFormat:=xlOpenXMLWorkbook
                      'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом

   'Включаем вывод сообщений
   Application.DisplayAlerts = True

   'Сообщение с результатом выполнения процедуры
   MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат"

  End Sub

После сохранения файла запустите макрос («Макросы -> Выполнить -> SaveFile»).

В результате в моем случае процедура успешно выполнилась, файл сохранился с названием «Марка Авто 1», данное значение взято из ячейки B14, о чем будет свидетельствовать сообщение в конце процедуры. Файл сохранен в каталоге, где и исходный файл (во всех примерах ниже прописано то же самое, т.е. сохранение рядом с исходником, но это Вы можете изменить).

Скриншот 3

Заметка! Статический анализ кода в теории и на практике.

Добавление кнопки в Excel для запуска макроса

Каждый раз открывать окно с макросами и выбирать нужный макрос не очень удобно, поэтому можно легко добавить кнопку где-нибудь рядом с данными и просто нажимать ее. Это делается следующим образом «Вкладка Разработчик -> Вставить -> Кнопка (элемент управления формы)».

Скриншот 4

Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».

Скриншот 5

Курс по SQL для начинающих

В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.

Скриншот 6

Заметка! ТОП 7 популярных языков программирования.

Сохранение файла Excel с названием из ячейки — без привязки к ячейке

Теперь давайте представим, что заранее мы не можем определить, какая именно ячейка будет формировать название файла (может B14, а может и нет), поэтому мы можем немного скорректировать алгоритм таким образом, чтобы он брал значение из ячейки, которая является активной, но в этом случае Вы, конечно же, предварительно, должны выбрать ее (т.е. встать на нее).

Замените код процедуры следующим кодом, который совсем немного, но изменен.

  
   Sub SaveFile()

  'Объявление переменных
   Dim CellValue As String
   Dim Path As String
   Dim FinalFileName As String

   'Временно отключаем показ вспомогательных сообщений
   Application.DisplayAlerts = False

   'Задаём каталог сохранения файла (в данном случае текущий каталог)
   Path = ThisWorkbook.Path & ""

   'Проверка значения ячейки
   If ActiveCell.Value = "" Then
     MsgBox "В ячейке отсутствует значение", vbCritical, "Ошибка!"
     Exit Sub
   End If

   'Получаем значение активной ячейки
   CellValue = ActiveCell.Value

   'Формируем итоговый путь и название файла
   FinalFileName = Path & CellValue

   'Сохраняем файл
   ActiveWorkbook.SaveAs FileName:=FinalFileName, _
                      FileFormat:=xlOpenXMLWorkbook
                      'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом

   'Включаем вывод сообщений
   Application.DisplayAlerts = True

   MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат"

   End Sub

Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).

Скриншот 7

Как видим, все отработало.

Сохранение файла Excel с названием, которое сформировано из значений двух ячеек

Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.

В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.

Код процедуры в данном случае будет выглядеть следующим образом.

   
   Sub SaveFile()

   'Объявление переменных
   Dim CellValue As String
   Dim Path As String
   Dim FinalFileName As String

   'Временно отключаем показ вспомогательных сообщений
   Application.DisplayAlerts = False

   'Задаём каталог сохранения файла (в данном случае текущий каталог)
   Path = ThisWorkbook.Path & ""

   'Проверка значения ячеек B14 и D14
   If Range("B14").Value = "" Or Range("D14").Value = "" Then
     MsgBox "В ячейке отсутствует значение", vbCritical, "Ошибка!"
     Exit Sub
   End If

   'Складываем значения из двух ячеек B14 и D14
   CellValue = Range("B14").Value & " - " & Range("D14").Value

   'Формируем итоговый путь и название файла
   FinalFileName = Path & CellValue

   'Сохраняем файл
   ActiveWorkbook.SaveAs FileName:=FinalFileName, _
                      FileFormat:=xlOpenXMLWorkbook
                      'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом

   'Включаем вывод сообщений
   Application.DisplayAlerts = True

   MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат"

   End Sub

Запускаем макрос.

Скриншот 8

Все ОК, файл создан.

Заметка! Как измерить сложность кода программы при программировании?

Если вдруг нужно реализовать без привязки к конкретным ячейкам, например, значения хранятся в определённых столбцах, но конкретная строка неизвестна Вам заранее. Например, у меня несколько строк со значениями, и какие конкретно значения взять за основу названия файла, я хочу указывать самостоятельно, непосредственно перед сохранением, но при этом не редактировать код процедуры.

Для этого мы снова внесем изменения в нашу процедуру, которая будет работать от активной ячейки (смещение от активной ячейки), только с условием того, что выбран столбец с теми значениями, которые необходимо использовать.

Код процедуры

   
   Sub SaveFile()

   'Объявление переменных
   Dim CellValue As String
   Dim Path As String
   Dim FinalFileName As String

   'Временно отключаем показ вспомогательных сообщений
   Application.DisplayAlerts = False

   'Задаём каталог сохранения файла (в данном случае текущий каталог)
   Path = ThisWorkbook.Path & ""

   'Проверка номера столбца
   If ActiveCell.Column <> 2 Then
     MsgBox "Указан некорректный столбец", vbCritical, "Ошибка!"
     Exit Sub
   End If

  'Проверка значения ячейки
   If ActiveCell.Value = "" Then
     MsgBox "В ячейке отсутствует значение", vbCritical, "Ошибка!"
     Exit Sub
   End If

   'Получаем значение активной ячейки
   CellValue = ActiveCell.Value

   'Смещаемся на 2 столбца, относительно активной ячейки
   ActiveCell.Offset(0, 2).Select

   'Складываем значения из двух ячеек
   CellValue = CellValue & " - " & ActiveCell.Value

   'Формируем итоговый путь и название файла
   FinalFileName = Path & CellValue

   'Сохраняем файл
   ActiveWorkbook.SaveAs FileName:=FinalFileName, _
                      FileFormat:=xlOpenXMLWorkbook
                      'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом

   'Включаем вывод сообщений
   Application.DisplayAlerts = True

   MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат"

   End Sub

Становитесь на любую ячейку со значением в столбце B, и запускайте макрос.

Заметка! Опрос. Какой операционной системой Вы пользуетесь?

У меня на этом все, надеюсь, материал был Вам полезен, пока!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Sub Отчет()
 
i = 2
n = Лист3.Cells(11, 3).Value
s = 1
 
 
While Лист4.Cells(i, 1).Value <> ""                                 'бежим по списку ФИО приставов
    j = 2
    k = 4
    Sheets("Формируемый отчет").Select
    Cells.Select
    Selection.ClearContents
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    While Лист1.Cells(j, 12).Value <> ""                            'бежим по списку исходника
        If Лист1.Cells(j, 1).Value = Лист4.Cells(i, 1).Value And Лист1.Cells(j, 2).Value = Лист4.Cells(i, 2).Value Then
            Лист2.Cells(1, 1).Value = Лист1.Cells(j, 1).Value       'прописываем орган ФССП
            Лист2.Cells(2, 1).Value = Лист1.Cells(j, 2).Value       'прописываем адрес ФССП
                        
            For q = 3 To 13                                         'прописываем все совпадения
 
                'совпадения'
                Лист2.Cells(k, q - 2).Value = Лист1.Cells(j, q).Value
 
            Next q
            k = k + 1
 
        End If
        
        j = j + 1
    Wend
            For q = 3 To 13
                'шапка'
                Лист2.Cells(3, q - 2).Value = Лист1.Cells(1, q).Value
                Range(Лист2.Cells(3, 1), Лист2.Cells(3, 11)).Borders.Weight = 2
                Range(Лист2.Cells(3, 1), Лист2.Cells(3, 11)).Select
                Selection.WrapText = True
            Next q
                'совпадения'
                Range(Лист2.Cells(4, 1), Лист2.Cells(k, 11)).Borders.Weight = 2
                Range(Лист2.Cells(4, 1), Лист2.Cells(k, 11)).Select
                Selection.WrapText = True
    If Лист2.Cells(1, 1).Value <> "" Then                           'заполняем сопроводиловку
        Лист3.Cells(11, 3).Value = n
        Лист3.Cells(12, 5).Value = Лист2.Cells(1, 1).Value
        Лист3.Cells(13, 5).Value = Лист2.Cells(2, 1).Value
        If ((Лист2.HPageBreaks.Count + 1) / 2) <> Fix((Лист2.HPageBreaks.Count + 1) / 2) Then
            Лист3.Cells(20, 3).Value = Fix((Лист2.HPageBreaks.Count + 1) / 2) + 1
        Else
            Лист3.Cells(20, 3).Value = (Fix((Лист2.HPageBreaks.Count + 1) / 2))
        End If
        Sheets("Формируемая сопроводиловка").Select
        ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
        Sheets("Формируемый отчет").Select
        ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
        n = n + 1
        Application.DisplayAlerts = False
      ActiveWorkbook.SaveAs [a1]
      Application.DisplayAlerts = True
            Лист5.Cells(s, 1).Value = "Отчет в " + Лист2.Cells(1, 1).Value   'прописываем орган ФССП
            Лист5.Cells(s, 2).Value = "УФССП"                                'прописываем куда
            Лист5.Cells(s, 3).Value = "Гудовских Е.А."                       'прописываем кто подписал
        s = s + 1
    End If
    i = i + 1
Wend
Application.DisplayAlerts = False
    Sheets("Исходник").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("ФИО пристава").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("список для регистрации").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("Для отдельных").Select
    ActiveWindow.SelectedSheets.Delete
    Range("R12").Select
End Sub
  • 13 Апр 2018

Имеется определенный шаблон куда записываются данные и нужно часто сохранять эту заполненную таблицу Excel в папку, например с накладными. Чтобы избежать рутину по написанию имен файла вручную, можно сделать так, чтобы файл сохранялся с именем из заполненных ячеек. 

Изначальный шаблон с ячейками, после сохранения, должен оставаться неизменным, т.е. в папку сохраняется его копия с измененными данными в ячейках. То же самое, если нажали бы «Файл»«Сохранить как…»

01Имеем шалон, в котором я выделил красным те ячейки, которые заполнил и хочу чтобы из них формировалось новое имя для сохранения файла excel.

02После того как нажали кнопку «Сохранить накладную», заходим в папку с сохраненным файлом и смотрим его имя. Сейчас оно у меня выглядит «01 Монтаж, -Рога-Копыта-, ул. Пушкина, дом Калатушкина-17-28 — -02-«

В имени файла не могут присутствовать запрещенные символы, такие как «»/ и т.д. Поэтому применили функцию автозамены запрещенных символов в имени файла на ««

Код VBA Excel модуль с комментариями:

Function Replace_symbols(ByVal txt As String) As String 'Убираем запрещённые в именах файлов символы!
    Dim st$, i&
    'Ковычки и слэши в данном случае!
    st$ = "/"""
    For i& = 1 To Len(st$)
    'Заменяем их на тире "-"
        txt = Replace(txt, Mid(st$, i, 1), "-")
    Next
    Replace_symbols = txt
End Function
Sub SaveMe()
    'Где будет сохраняться
    ПутьКПапке = "S:Рабочий столСКЛАДРасходные накладные по складу2017Январь"
    'С какого листа берется имя для файла
    With Worksheets("Лист1")
    'Имя_для_сохранения начинается со слова в ячейке [I8]
        Имя_для_сохранения = .[I8]
    End With
    'Следующие слова в имени сохранения файла после [I8], берутся из следющих ячеек, с заменой запрещенных символов из функции Replace_symbols
    ActiveWorkbook.SaveAs ПутьКПапке & Replace_symbols([G2]) & " " & Имя_для_сохранения & ", " & Replace_symbols([D10]) & ", " & Replace_symbols([H10]) & " - " & Replace_symbols([M8]) & ".xlsm"
MsgBox "Накладная сохранена в папке расходных накладных!"
End Sub

*Названия листов, пути для сохранения, имена ячеек меняем на свои.

mr. Mak

Когда вы используете книгу, вы когда-нибудь думали сохранить файл Excel на основе содержимого ячейки? Например, у вас есть «Цена продажи» в ячейке A1, и вы хотите сохранить книгу под именем Цена продажи. Конечно, вы можете ввести имя в диалоговом окне «Сохранить как», а затем сохранить его. Но это будет неэффективный метод в вашем объеме работы. Сегодня я расскажу о быстром решении этой проблемы.

Сохраните файл Excel с определенным значением ячейки, используя код VBA


стрелка синий правый пузырь Сохраните файл Excel с определенным значением ячейки, используя код VBA

Следующий код VBA может помочь вам сохранить книгу с указанным значением ячейки. Сделайте следующее:

1. Удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: сохранить файл Excel с определенным значением ячейки

Private Sub filename_cellvalue()
'Update 20141112
Dim Path As String
Dim filename As String
Path = "C:UsersdtDesktopmy information"
filename = Range("A1")
ActiveWorkbook.SaveAs filename:=Path & filename & ".xls", FileFormat:=xlNormal
End Sub

3, Затем нажмите F5 ключ для выполнения кода, и ваша книга была названа как содержимое ячейки A1. Смотрите скриншот:

doc-save-with-cell-value-1

Ноты:

1. Вы можете указать любое значение ячейки в качестве имени файла, просто изменив A1 на другую ссылку на ячейку в приведенном выше коде.

2. Ваша активная книга будет сохранена в папке C: Users dt Desktop моя информация (последняя косая черта должна оставаться, когда вы вставляете свое местоположение вместо него) location, вы можете изменить путь по своему усмотрению.


Статьи по теме:

Как сохранить файл с датой и временем в Excel?

Как показать путь к файлу в строке заголовка или панели инструментов в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (33)


Оценок пока нет. Оцените первым!

Формировка файлов с именем из значений ячеек. Как сделать?

N-y-son

Дата: Пятница, 06.02.2015, 14:19 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день.
Из значений ячеек нужно создать файлы(любого формата) типа. Например в ячейке C2 значение «123456789012345677», а нужно создать файл с названием «123456789012345677». Вот такая задача.
Таких фалов нужно создать очень много около 10 тыс. шт. — т.е. нужна какое-то «автоматизированое» решение. Все они находятся в столбце «С».
Подскажите, пожалуйста, как решить такую задачку, а то по работе завал))?

Сообщение отредактировал N-y-sonПятница, 06.02.2015, 15:01

 

Ответить

vikttur

Дата: Пятница, 06.02.2015, 14:40 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2941

Создать таким образом файлы — это только макрос. А это в ветке по VBA

 

Ответить

Nic70y

Дата: Пятница, 06.02.2015, 14:44 |
Сообщение № 3

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010


ЮMoney 41001841029809

 

Ответить

N-y-son

Дата: Пятница, 06.02.2015, 14:56 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010


нет, я лучше в ветке vba напишу)
[moder]Не нужно ничего нигде писать. Продолжайте здесь

 

Ответить

N-y-son

Дата: Пятница, 06.02.2015, 15:03 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

del

 

Ответить

DJ_Marker_MC

Дата: Пятница, 06.02.2015, 15:23 |
Сообщение № 6

Группа: Друзья

Ранг: Ветеран

Сообщений: 991


Репутация:

213

±

Замечаний:
0% ±


Excel 2019

N-y-son, положите приложенный файл в отдельную папку и нажмите кнопку.
Так?

 

Ответить

N-y-son

Дата: Пятница, 06.02.2015, 15:38 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

DJ_Marker_MC, круть, то что нужно!
СПАСИБО большущее! Столько времени и усилий Вы помогли сэкономить!
Спасибо Вам!

 

Ответить

Hugo

Дата: Пятница, 06.02.2015, 15:56 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Не могу файл скачать — админы чтоль резать стали макросы…
Поэтому спрошу прямо — там в коде есть защита от всяких левых двоеточий? Или уверены, что на 10 тыс. шт. будут только цифры?


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

RAN

Дата: Пятница, 06.02.2015, 16:08 |
Сообщение № 9

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

:D
[vba]

Код

    iPATH = ThisWorkbook.Path
For i = 1 To iRow
     IName = iPATH & «» & Cells(i, 3).Value

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

DJ_Marker_MC

Дата: Пятница, 06.02.2015, 16:18 |
Сообщение № 10

Группа: Друзья

Ранг: Ветеран

Сообщений: 991


Репутация:

213

±

Замечаний:
0% ±


Excel 2019

RAN, ну да, давайте кинем камень в Модератора))) ибо он не гений VBA и не подумал, что вместо этого, можно сделать так:

[vba]

Код

For i = 1 To iRow
        IName = ThisWorkbook.Path & «» & Cells(i, 3).Value

[/vba]
а еще лучше так
[vba]

Код

For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row
        IName = ThisWorkbook.Path & «» & Cells(i, 3).Value

[/vba]
убрав тем самым и iRow :)

 

Ответить

Hugo

Дата: Пятница, 06.02.2015, 16:19 |
Сообщение № 11

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Ну тогда вот — используйте на всякий случай:
[vba]

Код

Function CheckName(sName As String)
      Dim sSymbols, li As Long
      sSymbols = Array(«:», «», «/», «?», «*»)
      For li = LBound(sSymbols) To UBound(sSymbols)
          sName = Replace(sName, sSymbols(li), «»)
      Next li
      CheckName = sName
End Function

[/vba]
Можете добавить ещё символов — поищите в сети список всех запрещённых, ну и ещё свои можно добавить.


excel@nxt.ru
webmoney: R418926282008 Z422237915069

Сообщение отредактировал HugoПятница, 06.02.2015, 16:21

 

Ответить

RAN

Дата: Пятница, 06.02.2015, 16:22 |
Сообщение № 12

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Я не кидал камень, а просто показал код для Hugo :D
А в лишней переменной ничего плохого нет. Наоборот, избавляет от лишних вычислений.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RANПятница, 06.02.2015, 16:25

 

Ответить

N-y-son

Дата: Пятница, 06.02.2015, 16:44 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Или уверены, что на 10 тыс. шт. будут только цифры

Да, все значения ячеек — только цифры, т.к. двоеточия повсюду убрал.

Спасибо всем откликнувшимся!

 

Ответить

Hugo

Дата: Пятница, 06.02.2015, 16:48 |
Сообщение № 14

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Ну ОК. Если что — я предупреждал :)


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

vikttur

Дата: Пятница, 06.02.2015, 16:51 |
Сообщение № 15

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2941

удалено

Сообщение отредактировал viktturПятница, 06.02.2015, 21:44

 

Ответить

lamden
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 04.04.2004 (Вс) 15:48

Как сохранить файл EXCEL под именем, содержащимся в ячейке?

Господа ПРОФИ!!! помогите ламеру!!!

Есть — EXCEL-овский файл, у него в некой ячейке (например A1:A1 первого листа) содержится (или формируется) некое имя (типа простой текст, например, название и т.д.). Надо, чтобы по нажатию простой кнопочки с этой странички этот EXCEL-овский файл сохранился с этим именем в некой заданной директории.

Т.е. чтобы юзер нажал кнопочку — и все сохранилось бы без его участия с нужным именем. Юзеры у меня совсем непродвинутые — они, ежели им поручить сохранять через меню Файл, да еще, чтобы сами и имя вводили — это у них мозги полетят, а компы даже и задымиться не успеют…

Помогите, плз, совершенному чайнику — я VBA впервые в жизни вижу……. Ну, пожа-а-а-луйста, господа профи, пожалейте, муки творчества не дают спать!!!


sergmagunov
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 01.11.2002 (Пт) 5:58
Откуда: Ukraine

Сообщение sergmagunov » 04.04.2004 (Вс) 18:11

Если я правильно понял, то тебе нужно прицепить это к кнопке на листе (в ячейке А1 будет имя сохраняемого файла. Если нужно, то пропиши путь для сохранения):

Sub MySaveName()

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs [a1]

Application.DisplayAlerts = True

End Sub

Сергей

Banker


lamden
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 04.04.2004 (Вс) 15:48

Сообщение lamden » 04.04.2004 (Вс) 23:30

Сергей, спасибо Вам большое — сработало!!!!!


alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.04.2004 (Пн) 9:10

Ахренеть…

GSerg, ты знал, что можно обходиться без Cells(i,j) и Range(adr), а указывать сразу адрес ячейки, заключив его в квадратные скобки?

Lasciate ogni speranza, voi ch’entrate.


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.04.2004 (Пн) 9:20

Нет, не знал.

Ахренеть…

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


RayShade
Scarmarked
Scarmarked
Аватара пользователя

 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg
  • Сайт
  • ICQ

Сообщение RayShade » 05.04.2004 (Пн) 11:09

:shock: и чего только с утра в понедельник на форуме не прочитаешь…


sergmagunov
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 01.11.2002 (Пт) 5:58
Откуда: Ukraine

Сообщение sergmagunov » 05.04.2004 (Пн) 23:47

Не, ну мужики, я еще года 2 назад, а то и еще раньше писал сюда не раз в такой форме. Range можно заменять на [номер ячейки, либо диапазон]. Правда говорят, что новое — хорошо забытое старое.

Сергей

Banker



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Добрый день!
Нужно сохранить файл, с названием взятым из ячейки B1
(выглядеть должно как 20130419мотомир.txt)

в формате:
Текстовые файлы (с разделителями табуляции)

например, в папку:
C:UsersИвановDocumentsЗаказы

VBA для меня пока = [записал макрос — посмотрел пошагово как работает — попытался что-то скорректировать] параллельно смотрю книжку.

Если мой вопрос совсем чайницкий — ткните носом, пожалуйста, куда посмотреть. Поиском по форуму похожего не нашёл.


Топорно но это второе что пришло в голову. Первым было SaveCopyAs но я удивился не обнаружив в этом методе возможности задания формата файла.

Option Explicit
Sub СохранитьАктивныйЛистКакТекстовыйФайл()
    Dim WbFname$, TFname$, Twb As Workbook
    ActiveWorkbook.Save 'Сохраняем активную книгу
    WbFname = ActiveWorkbook.FullName 'Запоминаем путь к активной книге
    TFname = Range("B1").Value 'Формируем имя файла
    'Сохраняем книгу при этом активная книга закрываеться и открываеться сохраненная
    ActiveWorkbook.SaveAs Filename:=TFname, FileFormat:=xlText, CreateBackup:=False
    Set Twb = ActiveWorkbook 'Запоминаем активну книгу в переменную
    Workbooks.Open WbFname 'Открываем ту книгу которая была активной
    Twb.Close False 'Закрываем книгу из переменной
End Sub

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


Отлично работает!
Один вопрос=пожелание — как, всё-таки, сохранять файл не там где он есть, а там куда надо, просто прописав путь в макросе?


TFname = Range("B1").Value 'Формируем имя файла
я же вроде прокомментировал код

TFname = "C:" & Range("B1").Value

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


Я в восторге!
Отдельное спасибо за подробности!


Если код будет в персонале либо в книге не являющейся экспортируемой то можно записать так
Option Explicit
Sub СохранитьАктивныйЛистКакТекстовыйФайл()
    Dim WbFname$, TFname$

, Twb As Workbook   

ActiveWorkbook.Save ‘Сохраняем активную книгу
    WbFname = ActiveWorkbook.FullName ‘Запоминаем путь к активной книге
    TFname = Range(«B1»).Value ‘Формируем имя файла
    ‘Сохраняем книгу при этом активная книга закрываеться и открываеться сохраненная
    ActiveWorkbook.SaveAs Filename:=TFname, FileFormat:=xlText, CreateBackup:=False

    Set Twb = ActiveWorkbook ‘Запоминаем активну книгу в переменную   

ActiveWorkbook.Close False ‘Закрываем книгу из переменной
    Workbooks.Open WbFname ‘Открываем ту книгу которая была активной
End Sub

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


Уважаемые форумчане,
Воспользовался данным примером но вот возникла следующая потребность:
Есть форма отчета и пытаюсь создать макрос для того, чтоб заполненная форма сохранялась с название из нескольких ячеек а не одной, допустим
TFname = Range(«B9») & («_») & Range(«B10») & («_») & Range(«B11») & «.XLS»
Но он мне сохраняет файл с названием например 1_2_3, а можно ли чтоб вместо подчеркивания создавались пробелы-пустота и выглядело приблизительно так «1 2 3»?
И еще одно, каким методом можно созранять форму без макроса, т.е. чистую, чтоб не весила много?

Заранее спасибо.


Уважаемый, Crysi
вы бы создали новую тему и приложили бы свои старания «пытаюсь создать макрос»

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


Уважаемый boa,
Понял, сейчас все оформим.
Спасибо.


Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel специальная вставка пропала
  • Excel сохранить переменное значение
  • Excel специальная вставка параметры
  • Excel сохранить параметры страницы
  • Excel специальная вставка как текст

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии