Макрос збереження листа excel в файл, макроси для excel

Для використання цього макросу на будь-якому аркуші в книзі Excel створіть кнопку, і призначте їй макрос СохранітьЛістВФайл.

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

PS: Хтось може сказати, що для збереження листа в файл в об'єктної моделі Excel є метод SaveAs. який можна застосовувати до об'єкта Worksheet.







Але, як не дивно, виконання коду ActiveSheet.SaveAs "<имя файла>"Призводить до збереження книги цілком, що рівносильно використанню коду ActiveWorkbook.SaveAs"<имя файла>"

Чому цей метод збереження працює так нелогічно - особисто мені не зрозуміло (мабуть, Microsoft щось там перемудрил)

Переконайтеся, що макроси взагалі включені в налаштуваннях Excel.
Перед запуском файлу з макросами, необхідно виконати наступне:

> Знайти файл з макросами в папці
> Натиснути правою кнопкою миші на файлі - Властивості - Розблокувати - ОК
> І тільки після цього запускати

Добрий день, макрос супер. Тільки підкажіть будь ласка, як його змусити при збереженні брати дані імені файлу з певною осередку напр. Лист1, А1?

Sub СохранітьЛістВФайл ()
On Error Resume Next
'Назва папки, в яку за замовчуванням буде запропоновано зберегти файл
Const REPORTS_FOLDER = "Звіти"
'Створюємо папку для файлу, якщо її ще немає
MkDir ThisWorkbook.Path "" REPORTS_FOLDER
'Вибираємо стартову папку
ChDrive Left (ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path "" REPORTS_FOLDER

'Висновок діалогового вікна для запиту імені файлу
Filename = Application.GetSaveAsFilename ( "отчёт.xls", "Звіти Excel (* .xls),". _
"Введіть ім'я файлу для зберігається звіту", "Зберегти")
'Якщо користувач відмовився від вибору імені файлу - скасовуємо збереження листа в файл
If VarType (Filename) = vbBoolean Then Exit Sub

'Закриваємо збережений файл
'(Видаліть наступний рядок, якщо закривати створений файл не потрібно)
ActiveWorkbook.Close False
End If
End Sub

Доброго вам дня! Зіткнувся з проблемою і з пошуку видало Ваш сайт. Дуже сподіваюсь на вашу допомогу.

Є таблиця, макрос виробляє деякі маніпуляції з таблицею і зберігає файли в папку. Необхідно щоб у процесі створювалася папка з поточною датою (dd), а в ній вже створювалися папки містять у своїй назві змінну (usrnm). Макрос працював, до того моменту, як додалося створення папки в папці.







Dim usrnm As String
usrnm = Range ( "N6"). Value
Dim dd As String
dd = Format (Now, "dd-mm-yyyy", vbUseSystemDayOfWeek)
Dim tdd As String
tdd = Format (Now, "dd-mm-yyyy (hh'mm'ss)")
Dim x As Boolean
x = Len (Dir ( "D: \ ________ work" dd "" usrnm, vbDirectory))
If usrnm = "" And Len (Dir ( "D: \ ________ work \ error", vbDirectory)) = 0 Then
MkDir "D: \ ________ work \ error"
ActiveWorkbook.SaveAs ( "D: \ ________ work \ error") "Error_" tdd, FileFormat: = 51
End If
ActiveSheet.Range ( "$ A $ 5: $ AE $ 9999»). AutoFilter Field: = 14, Criteria1: = usrnm
If x = False Then
MkDir "D: \ ________ work" dd "" usrnm
ChDrive Left ( "D: \ ________ work", 1): ChDir "D: \ ________ work" dd "" usrnm
ActiveWorkbook.SaveAs bsnm "_" usrnm "_" tdd, FileFormat: = 51
End If
If x = True Then
ChDrive Left ( "D: \ ________ work", 1): ChDir "D: \ ________ work" dd "" usrnm
ActiveWorkbook.SaveAs bsnm "_" usrnm "_" tdd, FileFormat: = 51
End If

Привіт, Кайрат.
Це зовсім інший макрос потрібен (макрос, описаний в статті, робить зовсім інше)
Ваш макрос теж треба переробляти, - багато файлів одним рядком коду типу Workbooks.Open "C: \ *. Xlsx" не відкрити
(Потрібен цикл по файлах)
Можемо зробити макрос під замовлення. Або зверніться на форуми по Excel, якщо хочете безкоштовно.

Добрий день, мені необхідно переробити даний макрос, щоб він копіював, не з однієї книги, а з декількох, а також вставляв їх у один лист, один за одним інф. по вертикалі, тобто вниз

Sub Get_Value_From_Book2 ()
Dim sShName As String, sAddress As String, vData
Application.ScreenUpdating = False
Workbooks.Open "C: \ *. Xlsx"
sAddress = "A1: L26"
vData = Sheets ( "eNodeBOutdoor fin"). Range (sAddress) .Value
ActiveWorkbook.Close False
If IsArray (vData) Then
[A1] .Resize (UBound (vData, 1), UBound (vData, 2)). Value = vData
Else
[A1] = vData
End If
Application.ScreenUpdating = True
End Sub

Sub Збереження ()
On Error Resume Next
'Назва папки, в яку за замовчуванням буде запропоновано зберегти файл
Const REPORTS_FOLDER = "Виконавча"
'Створюємо папку для файлу, якщо її ще немає
MkDir ThisWorkbook.Path "" REPORTS_FOLDER
'Вибираємо стартову папку
ChDrive Left (ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path "" REPORTS_FOLDER

'Висновок діалогового вікна для запиту імені файлу
Filename = Application.GetSaveAsFilename ([e4] ".xlsm", "Виконавча (* .xlsm),". _
"Введіть ім'я файлу для зберігається звіту", "Зберегти")
'Якщо користувач відмовився від вибору імені файлу - скасовуємо збереження листа в файл
If VarType (Filename) = vbBoolean Then Exit Sub

Я спробував переписати тип xlsx на xlsm і внизу поставив зберегти як книгу з включеними макросами, але в підсумку він пише те, що постом нижче.
Прикладаю макрос який я спробував доопрацювати. Я не спец в написанні макросів, так для себе цікавлюся, для полегшення роботи.

Пише: "Наступні компоненти неможливо зберегти в книзі без підтримки макросів:
-проект VB
Щоб зберегти файл з усіма компонентами, натисніть кнопку "ні", а потім в списку "Тип файлу" виберіть тип файлу з підтримкою макросів "

Якщо ваші макроси в модулі листа - то вони скопійовано разом з листом, і будуть працювати.
Якщо ж макроси в модулі - то, звичайно, при збереженні листа в файл ці комутаторів для послуг не будуть перенесені в новий файл