Excel vba xlsm xlsx

 

Василька

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

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

Добрый день, подскажите пожалуйста как можно методом перебора осуществить пересохранение всех файлов в выбранной директории (или на всем устройстве) с формата .xlsm в формат файла .xlsx? А также последующим удалением .xlsm.
Макрос на перебор файлов в директории тут—>

Ссылка

Изменено: Василька09.08.2018 16:00:47
(Добавил ссылку)

 

Ёк-Мок

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

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

Здравствуйте!
.xlsm (на всякий случай) — это формат файлов содержащих макросы. При смене расширения функционал VBA будет удален. Вопрос: хотите удалить все разработки на VBA?
ps А зачем ссылка на чужой макрос?

Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.

 

Василька

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

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

Ёк-Мок, Да я хочу макросом запущенным из одного файла менять расширение файлов в директории указанной мною с формата .xlsm на формат .xlsx соответственно понимаю что все макросы в данных файлах будут удалены.
На текущий момент я пробую объединить 2 макроса:
1-перебор файлов в директории
2-сохранение файлов в другом формате
Оба макроса в приложенном файле

Прикрепленные файлы

  • Die.xlsm (16.12 КБ)

Изменено: Василька09.08.2018 16:23:51

 

Ёк-Мок

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

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

Так в чем вопрос-то? Что не работает? Что не получается? Внешне в Вашем файле все в ажуре.

ps Зачем пересохранение в другом формате, если весь функционал удалит процедура «УдалениеМакросовИзКнигиEXCEL»? Ну и пусть будет пустой файл .xlsm.

Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.

 

Василька

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

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

Вопрос в том как сделать чтобы макрос «УдалениеМакросовИзКнигиEXCEL» работал не только в той книге которой записан, а удалял макросы из директории методом перебора каждого файла.

 

Ёк-Мок

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

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

Вариант
Кнопку «Да» пока что нужно жать для каждого файла (см.скрин)

Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.

 

Василька

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

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

Ёк-Мок, что-то не так видимо у меня, указал путь к папке, в которой 2 файла xlsm, нажал удалить макросы, вышла табличка что Готово, на самом деле изменений не было.

 

Ёк-Мок

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

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

#8

10.08.2018 09:02:34

На моих файлах .xlsm макрос отрабатывает нормально.
Попробуйте закоментить вот эту строку в коде:

Код
'On Error Resume Next: Err.Clear

Что напишет VBA после запуска?

Изменено: Ёк-Мок10.08.2018 09:03:33

Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.

 

Hugo

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

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

#9

10.08.2018 09:15:00

Цитата
Василька написал:
я хочу макросом запущенным из одного файла менять расширение файлов

— зачем это написали? Будьте точны, а то ведь можно и так сделать :)

 

Василька

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

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

Попробовал ничего не изменилось, он считывает кол-во файлов в папке, и спрашивает «Продолжить?», после нажатия на кнопку «Да», сразы выходит msgBox «Готово»

 

Василька

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

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

#11

10.08.2018 09:19:39

Цитата
Hugo написал:
Будьте точны, а то ведь можно и так сделать

Буду точным, открыть и сохранить файл с другим расширением и после этого удалить исходник с форматом .xlsm

 

Василька

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

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

Ребят я нашел решение, сторонний макрос задействовал (нашел на другом ресурсе готовую сборку) если можно, то могу выложить сюда «MulTEx»

Изменено: Василька10.08.2018 09:32:41

 

Hugo

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

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

#13

10.08.2018 13:47:59

Цитата
Василька написал:
Буду точным, открыть и сохранить файл с другим расширением

— буду придирчивым — тут нет точности. Например — открываем блокнотом (неважно зачем, просили), сохраняем с другим расширением :)
Да и даже можно Экселем открыть и сохранить с другим расширением, не меняя формат — если делать это кодом.

Изменено: Hugo10.08.2018 14:52:15

 

sokol92

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

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

#14

10.08.2018 14:37:15

Цитата
Василька написал:
если можно, то могу выложить сюда «MulTEx»

Думаю, что

Дмитрий Щербаков

(автор надстройки) будет удивлен :)  

Владимир

 

Alemox

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

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

#15

12.08.2018 22:10:47

Цитата
sokol92 написал:
автор надстройки) будет удивлен

Я думаю не будет удивлён. У нас целыми сайтами воруют и ничего за это ни кому не делают. В том числе и у меня, несколько лет назад весь сайт под копирку стырили. Бумажки на закрытие плагиата не помогли. Так и работает. А мой сайт закрыли за неуплату. Что тут говорить, весь мир на винде пиратской сидит.

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.

 

Василька

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

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

#16

13.08.2018 08:30:45

sokol92,

Цитата
sokol92 написал:
Думаю, что  Дмитрий Щербаков  (автор надстройки) будет удивлен

Ребят я с дружественного сайта её скачал и так полагаю там она была размещена с согласия автора.

 

Юрий М

Модератор

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

Контакты см. в профиле

#17

13.08.2018 21:02:31

Цитата
Василька написал:
я с дружественного сайта её скачал

Что за сайт?

 

Василька

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

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

#18

14.08.2018 07:48:03

Цитата
Юрий М написал:
Что за сайт?

excel-vba.ru

При установке на комп программа просит вашу почту для подтверждения и потом подписывает вас на новости с сайта.

 

Vladimir Chebykin

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

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

#19

14.08.2018 08:00:43

Начиная отсюда

Цитата
sokol92 написал:
Думаю, что  Дмитрий Щербаков  (автор надстройки) будет удивлен

и досюда

Цитата
Василька написал:
excel-vba.ru

очень забавный топик получился! :D  

 

Василька

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

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

#20

15.08.2018 08:16:30

Главное вопрос заданный в первом посте решен, а остальное не так важно)

  • #2

The path is the critical part of this endeavor. The path takes you to the directory and then the rest is basic. Where you have more than one path, you could list the patn names in a column and then loop down the column to work them one at a time. Assume they are in column A of sheet 1.

Code:

For each c In Sheets(1).Range("A2:A4")
    fPath = c,Value
    If Right(fPath, 1) <> "" Then fPath = fPath & ""
    fName = Dir(fPath & "*.xl*)
    Do While fName <> ""
         Set wb = Worksbooks.Open(fName)
         SaveAs wb.Name & ".xlsb"  
         wb.Close False
         fName = Dir
    Loop
Next

  • #3

The path is the critical part of this endeavor. The path takes you to the directory and then the rest is basic. Where you have more than one path, you could list the patn names in a column and then loop down the column to work them one at a time. Assume they are in column A of sheet 1.

Code:

For each c In Sheets(1).Range("A2:A4")
    fPath = c,Value
    If Right(fPath, 1) <> "" Then fPath = fPath & ""
    fName = Dir(fPath & "*.xl*)
    Do While fName <> ""
         Set wb = Worksbooks.Open(fName)
         SaveAs wb.Name & ".xlsb"  
         wb.Close False
         fName = Dir
    Loop
Next

Thanks for the quick response JLG.

I’m a little perplexed as to how this works.

What is the FPath = c, Value saying?

To use one path as an example could we use the desktop?

  • #4

Basically I want to be able to create a path within the code

The lower case ‘c’ is a variable representing a cell object, in the case, From A2 thru A4 where it was assumed the file paths would have been listed for the various sources to find the files you want to open. The statemehnt fPath = c.Value is to assign the value of the cell in Column A to a variable with a name that identifies what it represents. c.Value could just as easily been used everywhere that fPath appears, but it might make it confusing to read the code if debugging is required. What the snippet that I posted does Is:
1. Creates a For…Next loop to walk down the designated cells in column A.
2. Assigns the current cell in Col A to the fPath variable
3. Checks for valid attenuation symbol in path and inserts one if needed.
4. Uses Dir function to assugn a file name to the fName variable
5. Starts Do Loop to
…a. Open a workbook with the path and file name previously identified (Notice that I forgot to inclued path here)
…b. Save the file with new extension
…c. Close the workbook that was just saved.
…d. get new file name for fName variable
6. Loop until all files in directory have been worked.
7. Loop to the next directory in column A.
Here is the corrected snippet:

Code:

For each c In Sheets(1).Range("A2:A4")
    fPath = c,Value
    If Right(fPath, 1) <> "" Then fPath = fPath & ""
    fName = Dir(fPath & "*.xl*)
    Do While fName <> ""
         Set wb = Worksbooks.Open(fPath & fName)
         SaveAs wb.Name & ".xlsb"  
         wb.Close False
         fName = Dir
    Loop
Next

Last edited: Dec 5, 2013

  • #5

The lower case ‘c’ is a variable representing a cell object, in the case, From A2 thru A4 where it was assumed the file paths would have been listed for the various sources to find the files you want to open. The statemehnt fPath = c.Value is to assign the value of the cell in Column A to a variable with a name that identifies what it represents. c.Value could just as easily been used everywhere that fPath appears, but it might make it confusing to read the code if debugging is required. What the snippet that I posted does Is:
1. Creates a For…Next loop to walk down the designated cells in column A.
2. Assigns the current cell in Col A to the fPath variable
3. Checks for valid attenuation symbol in path and inserts one if needed.
4. Uses Dir function to assugn a file name to the fName variable
5. Starts Do Loop to
…a. Open a workbook with the path and file name previously identified (Notice that I forgot to inclued path here)
…b. Save the file with new extension
…c. Close the workbook that was just saved.
…d. get new file name for fName variable
6. Loop until all files in directory have been worked.
7. Loop to the next directory in column A.
Here is the corrected snippet:

Rich (BB code):

For each c In Sheets(1).Range("A2:A4")
    fPath = c,Value
    If Right(fPath, 1) <> "" Then fPath = fPath & ""
    fName = Dir(fPath & "*.xl*)
    Do While fName <> ""
         Set wb = Worksbooks.Open(fPath & fName)
         SaveAs wb.Name & ".xlsb"  
         wb.Close False
         fName = Dir
    Loop
Next

Thanks again for the reply JLG. I tried simply entering a path is cell A2:

C:UsershollandoDocumentsTest

Also, when I placed the code within the VBA Project there were two areas identified as a Syntax Error.

Code:

Sub Test()
For Each c In Sheets(1).Range("A2:A4")
    [COLOR=#ff0000]fPath = c,Value[/COLOR]
    If Right(fPath, 1) <> "" Then fPath = fPath & ""
    [COLOR=#ff0000]fName = Dir(fPath & "*.xl*)[/COLOR]
    Do While fName <> ""
         Set wb = Worksbooks.Open(fPath & fName)
         SaveAs wb.Name & ".xlsb"
         wb.Close False
         fName = Dir
    Loop
Next
End Sub

Was there something I needed to change with thes two key areas?

  • #6

In the first one replace the comma with a dot. In the second one insert a double quote before the closing parenthesis.

  • #7

In the first one replace the comma with a dot. In the second one insert a double quote before the closing parenthesis.

Thanks Andrew!

One extra issue now.

I get a Compile error: ‘Sub or Function not defined’ this appears to stem from the

  • #8

That should be:

Rich (BB code):

wb.SaveAs wb.Name & ".xlsb"

  • #9

That should be:

Rich (BB code):

wb.SaveAs wb.Name & ".xlsb"

Excellent. We’re getting close.

Run-time error ‘1004’:

This extension can not be used with the selected file type. Change the file extension in the file name text box or select a different file type by change the Save as type.

  • #10

Try:

Code:

wb.SaveAs wb.Name & ".xlsb", FileFormat:=50

Сохранить как из xlsm в xlsx

Nic70y

Дата: Четверг, 15.01.2015, 21:28 |
Сообщение № 1

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

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

Сообщений: 8132


Репутация:

1998

±

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


Excel 2010

[vba]

Код

   ActiveWorkbook.SaveAs Filename:=Cells(2, 1).Value & «.xlsx»

[/vba]пытаюсь сохранить как… книгу содержащую макросы в книгу без макросов — выдает ошибку.
макрописцы подскажите пжл где я туплю.


ЮMoney 41001841029809

Сообщение отредактировал Nic70yЧетверг, 15.01.2015, 21:28

 

Ответить

krosav4ig

Дата: Четверг, 15.01.2015, 21:57 |
Сообщение № 2

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

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

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


Excel 2007,2010,2013

Nic70y, FileFormat забыли
[vba]

Код

   ActiveWorkbook.SaveAs Filename:=Cells(2, 1).Value, FileFormat:=51

[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4igЧетверг, 15.01.2015, 21:58

 

Ответить

Nic70y

Дата: Четверг, 15.01.2015, 22:03 |
Сообщение № 3

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

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

Сообщений: 8132


Репутация:

1998

±

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


Excel 2010

krosav4ig, спс, действительно забыл (да еще и не знал)


ЮMoney 41001841029809

 

Ответить

In this Article

  • Save Workbook – VBA
    • Save a Specified Workbook
    • Save the Active Workbook
  • VBA Coding Made Easy
    • Save the Workbook Where the Code is Stored
    • Save all Open Workbooks
    • Save all open workbooks that were not opened ReadOnly
    • Save a workbook defined by a variable
    • Save a workbook defined by a string variable
    • Save a workbook defined by the order it was opened.
    • Save a workbook based on a cell value
  • Save As – VBA
    • SaveAs Syntax:
    • Save As Syntax Examples:
    • Workbook Save As – Same Directory
    • Workbook Save As – New Directory
    • Workbook Save As – New Directory, Specify File Extension
    • Workbook Save As – New Directory, Specify File Extension – Alt Method
    • Workbook Save As – Add Password to Open File
    • Workbook Save As – Add Password for Write Privileges
    • Workbook Save As – Read-Only Recommended
  • Other Save As Examples
    • Create Save As Dialog Box
    • Create Save As Dialog Box with Default File Name Provided
    • Create Save As Dialog Box with Default File Name Provided
    • Create & Save New Workbook
    • Disable Save Alerts

This VBA Tutorial covers how to save a file using the Save and Save As commands in VBA.

Save Workbook – VBA

The VBA Save command saves an Excel file similarly to clicking the Save icon or using the Save Shortcut (CTRL + S).

Save a Specified Workbook

To save a workbook, reference the workbook object and use the Save command.

Workbooks("savefile.xlsm").Save

Save the Active Workbook

Note: This is the current active workbook from with in the VBA code, which is different from ThisWorkbook which contains the running code.

ActiveWorkbook.Save

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

vba save as

Learn More!

Save the Workbook Where the Code is Stored

ThisWorkbook.save

Save all Open Workbooks

This will loop through all open workbooks, saving each one.

Dim wb as workbook

For Each wb In Application.Workbooks
	wb.Save
Next wb

Save all open workbooks that were not opened ReadOnly

Note: opening a workbook in ReadOnly mode prevents the file from being saved.
To save the file you will need to use Save As and save the file with a different name.

Dim wb as workbook

For Each wb In Application.Workbooks
	If not wb.ReadOnly then
		wb.Save
	End if
Next wb

Save a workbook defined by a variable

This will save a workbook that was assigned to a workbook object variable.

Dim wb as workbook

set wb = workbooks("savefile.xlsm")
wb.save

Save a workbook defined by a string variable

This will save a workbook that’s name was saved to a string variable.

Dim wbstring as string

wbstring = "savefile.xlsm"
workbooks(wbstring).save

Save a workbook defined by the order it was opened.

Note: The first workbook opened would have 1, the second 2, etc.

workbooks(1).save

VBA Programming | Code Generator does work for you!

Save a workbook based on a cell value

This will save a workbook that’s name is found in a cell value.

Dim wbstring as string

wbstring = activeworkbook.sheets("sheet1").range("wb_save").value
workbooks(wbstring).save

Save As – VBA

The VBA Save As command saves an Excel file as a new file, similar to clicking the Save As icon or using the Save As Shortcut (Alt > F > A).
Above, we identified all the ways to specify which workbook to save. You can use those exact same methods to identify workbooks when using Save As.

Save As behaves similarly to Save, except you also need to specify the name of the new file.
In fact, Save As has many potential variables to define:

SaveAs Syntax:

workbook object .SaveAs(FileName, FileFormat, Password, WriteResPassword, _
ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, _
AddToMru,TextCodepage, TextVisualLayout, Local)

A full description of all of the SaveAs arguments is included below. For now we will focus on the most common examples.
Note: These arguments can be entered as string with parenthesis or as defined variables.

Save As Syntax Examples:

Workbook Save As – Same Directory

ActiveWorkbook.SaveAs Filename:= "new"

or

ActiveWorkbook.SaveAs "new"

or

Dim wbstring as string

wbstring = "new"
ActiveWorkbook.SaveAs Filename:= wbstring

AutoMacro | Ultimate VBA Add-in | Click for Free Trial!

Workbook Save As – New Directory

ActiveWorkbook.SaveAs Filename:= "C:new"

or

Dim wbstring as string

wbstring = "C:new"
ActiveWorkbook.SaveAs Filename:= wbstring=

Workbook Save As – New Directory, Specify File Extension

ActiveWorkbook.SaveAs Filename:= "C:new.xlsx"

or

Dim wbstring as string

wbstring = "C:new.xlsx"
ActiveWorkbook.SaveAs Filename:= wbstring

Workbook Save As – New Directory, Specify File Extension – Alt Method

You can also specify the file format in it’s own argument.

.xlsx = 51 '(52 for Mac)
.xlsm = 52 '(53 for Mac)
.xlsb = 50 '(51 for Mac)
.xls = 56 '(57 for Mac)
ActiveWorkbook.SaveAs Filename:= "C:new", FileFormat:= 51

Workbook Save As – Add Password to Open File

ActiveWorkbook.SaveAs Filename:= "C:new.xlsx", Password:= "password"

AutoMacro | Ultimate VBA Add-in | Click for Free Trial!

Workbook Save As – Add Password for Write Privileges

If correct password is not supplied then workbook opens as Read-Only

ActiveWorkbook.SaveAs Filename:= "C:new.xlsx", WriteRes:= "password"

Workbook Save As – Read-Only Recommended

TRUE to display a message box, recommending that the file is opened read-only.

ActiveWorkbook.SaveAs Filename:= "C:new.xlsx", ReadOnlyRecommended:= TRUE

Other Save As Examples

Create Save As Dialog Box

This Generates the Save As Dialog Box, prompting the user to Save the file.
Keep in mind that this simple code may not be appropriate in all cases.

Application.GetSaveAsFilename

AutoMacro | Ultimate VBA Add-in | Click for Free Trial!

Create Save As Dialog Box with Default File Name Provided

Application.GetSaveAsFilename InitialFilename:="test.xlsx"

Create Save As Dialog Box with Default File Name Provided

Application.GetSaveAsFilename InitialFilename:="test.xlsx"

Create & Save New Workbook

This will create a new workbook and immediately save it.

Dim wb As Workbook

Set wb = Workbooks.Add
Application.DisplayAlerts = False
wb.SaveAs Filename:=”c:Test1.xlsx”
Application.DisplayAlerts = True

Disable Save Alerts

As you work with saving in VBA, you may come across various Save Warnings or Prompts. To disable warnings, add this line of code:

Application.DisplayAlerts=False

and to re-able alerts:

Application.DisplayAlerts=True

Создание файлов Excel методами Workbooks.Add, Worksheet.Copy и текстовых файлов с помощью оператора Open и метода CreateTextFile из кода VBA Excel. Создание документов Word рассмотрено в отдельной статье.

Метод Workbooks.Add

Описание

Файлы Excel можно создавать из кода VBA с помощью метода Add объекта Workbooks.

Workbooks.Add – это метод, который создает и возвращает новую книгу Excel. Новая книга после создания становится активной.

Ссылку на новую книгу Excel, созданную методом Workbooks.Add, можно присвоить объектной переменной с помощью оператора Set или обращаться к ней, как к активной книге: ActiveWorkbook.

Синтаксис

Workbooks.Add (Template)

Template – параметр, который определяет, как создается новая книга.

Значение Template Параметры новой книги
Отсутствует Новая книга с количеством листов по умолчанию.
Полное имя существующего файла Excel Новая книга с указанным файлом в качестве шаблона.
xlWBATChart Новый файл с одним листом диаграммы.
xlWBATWorksheet Новый файл с одним рабочим листом.

Примеры

Пример 1
Создание новой книги Excel с количеством листов по умолчанию и сохранение ее в папку, где расположен файл с кодом VBA:

Sub Primer1()

‘Создаем новую книгу

Workbooks.Add

‘Сохраняем книгу в папку, где расположен файл с кодом

ActiveWorkbook.SaveAs (ThisWorkbook.Path & «Моя новая книга.xlsx»)

‘Закрываем файл

ActiveWorkbook.Close

End Sub

Файл «Моя новая книга.xlsx» понадобится для следующего примера.

Пример 2
Создание новой книги по файлу «Моя новая книга.xlsx» в качестве шаблона с присвоением ссылки на нее объектной переменной, сохранение нового файла с новым именем и добавление в него нового рабочего листа:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Sub Primer2()

‘Объявляем объектную переменную с ранней привязкой

Dim MyWorkbook As Workbook

‘Создаем новую книгу по шаблону файла «Моя новая книга.xlsx»

Set MyWorkbook = Workbooks.Add(ThisWorkbook.Path & «Моя новая книга.xlsx»)

    With MyWorkbook

        ‘Смотрим какое имя присвоено новому файлу по умолчанию

        MsgBox .Name ‘»Моя новая книга1″

        ‘Сохраняем книгу с новым именем

        .SaveAs (ThisWorkbook.Path & «Моя самая новая книга.xlsx»)

        ‘Смотрим новое имя файла

        MsgBox .Name ‘»Моя самая новая книга»

        ‘Добавляем в книгу новый лист с именем «Мой новый лист»

        .Sheets.Add.Name = «Мой новый лист»

        ‘Сохраняем файл

        .Save

    End With

End Sub

Метод Worksheet.Copy

Описание

Если в коде VBA Excel применить метод Worksheet.Copy без указания параметра Before или After, будет создана новая книга с копируемым листом (листами). Новая книга станет активной.

Примеры

Пример 3
Создание новой книги с помощью копирования одного листа (в этом примере используется книга, созданная в первом примере):

Sub Primer3()

‘Если книга источник не открыта, ее нужно открыть

Workbooks.Open (ThisWorkbook.Path & «Моя новая книга.xlsx»)

‘Создаем новую книгу копированием одного листа

Workbooks(«Моя новая книга.xlsx»).Worksheets(«Лист1»).Copy

‘Сохраняем новую книгу с именем «Еще одна книжица.xlsx» в папку,

‘где расположен файл с кодом

ActiveWorkbook.SaveAs (ThisWorkbook.Path & «Еще одна книжица.xlsx»)

End Sub

Также, как и при создании нового файла Excel методом Workbooks.Add, при создании новой книги методом Worksheet.Copy, можно ссылку на нее присвоить объектной переменной.

Пример 4
Создание новой книги, в которую включены копии всех рабочих листов из файла с кодом VBA:

Sub Primer4()

ThisWorkbook.Worksheets.Copy

End Sub

Пример 5
Создание новой книги, в которую включены копии выбранных рабочих листов из файла с кодом VBA:

Sub Primer5()

ThisWorkbook.Sheets(Array(«Лист1», «Лист3», «Лист7»)).Copy

End Sub

Создание текстовых файлов

Оператор Open

При попытке открыть несуществующий текстовый файл с помощью оператора Open, такой файл будет создан. Новый файл будет создан при открытии его в любом режиме последовательного доступа, кроме Input (только для чтения).

Пример

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Sub Primer6()

Dim ff As Integer, ws As Object

‘Получаем свободный номер для открываемого файла

ff = FreeFile

‘Создаем новый текстовый файл путем открытия

‘несуществующего в режиме чтения и записи

Open ThisWorkbook.Path & «Мой-новый-файл.txt» For Output As ff

‘Записываем в файл текст

Write #ff, «Этот файл создан при его открытии оператором « & _

«Open по несуществующему адресу (полному имени).»

‘Закрываем файл

Close ff

‘Открываем файл для просмотра

Set ws = CreateObject(«WScript.Shell»)

ws.Run ThisWorkbook.Path & «Мой-новый-файл.txt»

Set ws = Nothing

End Sub

В имени текстового файла пробелы заменены дефисами (знаками минус), так как метод Run объекта Wscript.Shell не способен открывать файлы с именами, содержащими пробелы.

Рекомендую открывать файлы для просмотра методом ThisWorkbook.FollowHyperlink. Пример и преимущества этого метода в статье VBA Excel. Открыть файл другой программы.

Метод FileSystemObject.CreateTextFile

Для создания нового текстового файла из кода VBA Excel по указанному имени, можно использовать метод CreateTextFile объекта FileSystemObject.

Пример

Sub Primer7()

Dim fso, fl, ws

‘Создаем новый экземпляр объекта FileSystemObject

Set fso = CreateObject(«Scripting.FileSystemObject»)

‘Присваиваем переменной fl новый объект TextStream,

‘связанный с созданным и открытым для записи файлом

Set fl = fso.CreateTextFile(ThisWorkbook.Path & «Еще-один-текстовый-файл.txt»)

‘Записываем в файл текст

fl.Write («Этот текстовый файл создан методом CreateTextFile объекта FileSystemObject.»)

‘Закрываем файл

fl.Close

‘Открываем файл для просмотра

Set ws = CreateObject(«WScript.Shell»)

ws.Run ThisWorkbook.Path & «Еще-один-текстовый-файл.txt»

End Sub

Стоит отметить, что новый текстовый файл может быть создан и с помощью метода OpenTextFile объекта FileSystemObject при условии присвоения параметру create значения True.

Понравилась статья? Поделить с друзьями:
  • Excel vba time formats
  • Excel vba worksheetfunction trim
  • Excel vba thisworkbook sheets
  • Excel vba worksheetfunction max
  • Excel vba thisworkbook saved