Привет, сейчас мы рассмотрим ситуацию, когда у Вас возникла необходимость в Excel сохранять файл с определенным названием, которое необходимо сформировать из значения ячейки или даже нескольких. В этой заметке я приведу простой пример реализации данной задачи.
Содержание
- Исходные данные
- Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке
- Добавление кнопки в Excel для запуска макроса
- Сохранение файла Excel с названием из ячейки — без привязки к ячейке
- Сохранение файла Excel с названием, которое сформировано из значений двух ячеек
Исходные данные
Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.
Примечание! Я использую Excel 2013.
В зависимости от конкретных требований и условий, задачу можно реализовать по-разному, хотя принцип будет один и тот же, в этой статье мы рассмотрим несколько вариаций реализации.
Начнем мы с самой простой ситуации, когда заранее известна ячейка, на основе которой будет сформировано имя файла, и адрес этой ячейки изменяться не будет.
Заметка! Этапы разработки программы – как создаются и проектируются программы?
Итак, данные у нас есть, теперь необходимо написать процедуру на 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, о чем будет свидетельствовать сообщение в конце процедуры. Файл сохранен в каталоге, где и исходный файл (во всех примерах ниже прописано то же самое, т.е. сохранение рядом с исходником, но это Вы можете изменить).
Заметка! Статический анализ кода в теории и на практике.
Добавление кнопки в Excel для запуска макроса
Каждый раз открывать окно с макросами и выбирать нужный макрос не очень удобно, поэтому можно легко добавить кнопку где-нибудь рядом с данными и просто нажимать ее. Это делается следующим образом «Вкладка Разработчик -> Вставить -> Кнопка (элемент управления формы)».
Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».
В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.
Заметка! ТОП 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
Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).
Как видим, все отработало.
Сохранение файла 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
Запускаем макрос.
Все ОК, файл создан.
Заметка! Как измерить сложность кода программы при программировании?
Если вдруг нужно реализовать без привязки к конкретным ячейкам, например, значения хранятся в определённых столбцах, но конкретная строка неизвестна Вам заранее. Например, у меня несколько строк со значениями, и какие конкретно значения взять за основу названия файла, я хочу указывать самостоятельно, непосредственно перед сохранением, но при этом не редактировать код процедуры.
Для этого мы снова внесем изменения в нашу процедуру, которая будет работать от активной ячейки (смещение от активной ячейки), только с условием того, что выбран столбец с теми значениями, которые необходимо использовать.
Код процедуры
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, и запускайте макрос.
Заметка! Опрос. Какой операционной системой Вы пользуетесь?
У меня на этом все, надеюсь, материал был Вам полезен, пока!
Сохранение файла рабочей книги Excel, существующего или нового, с помощью кода VBA. Методы Save и SaveAs объекта Workbook, параметр SaveChanges метода Close.
Сохранение существующего файла
Сохранить существующий открытый файл рабочей книги Excel из кода VBA можно несколькими способами. В примерах используется выражение ActiveWorkbook, которое может быть заменено на ThisWorkbook, Workbooks(«ИмяКниги.xlsx»), Workbooks(myFile.Name), где myFile — объектная переменная с присвоенной ссылкой на рабочую книгу Excel.
Простое сохранение файла после внесенных кодом VBA Excel изменений:
Сохранение файла под другим именем (исходная рабочая книга будет автоматически закрыта без сохранения внесенных изменений):
ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Сохранить файл рабочей книги можно перед закрытием, используя параметр SaveChanges метода Close со значением True:
ActiveWorkbook.Close SaveChanges:=True |
Чтобы закрыть файл без сохранения, используйте параметр SaveChanges метода Close со значением False:
ActiveWorkbook.Close SaveChanges:=False |
Сохранение файла под другим именем при закрытии рабочей книги:
ActiveWorkbook.Close SaveChanges:=True, Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Если в примерах с методом Close параметр SaveChanges пропустить, будет открыто диалоговое окно с запросом о сохранении файла.
Новая книга сохраняется с указанием полного имени:
Workbooks.Add ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
После этого к новой книге можно обращаться по имени: Workbooks ("НоваяКнига.xlsx")
.
Если не указать полное имя для сохраняемого файла:
Workbooks.Add ActiveWorkbook.Save |
тогда новая книга будет сохранена с именем и в папке по умолчанию, например: Книга1.xlsx, Книга2.xlsx, Книга3.xlsx и т.д. в папке «Документы».
Microsoft Excel offers Visual Basic for Application (VBA) as a scripting tool to let you add additional functionality to your Excel spreadsheets. You can use VBA to prompt the user to enter a filename for an Excel spreadsheet and then save the file where the user has indicated.
In newer versions of Excel, you can use JavaScript scripting to achieve similar functionality.
Understanding VBA for Excel
VBA is a scripting language that’s supported by the Microsoft Office suite of productivity software, including the word processing program Microsoft Word and Microsoft Excel, the suite’s spreadsheet program. Microsoft provides extensive documentation for the functionality that is accessible through VBA.
It’s related to other versions of the Basic and Visual Basic programming language, although it has its own distinct syntax and set of features you can access, particularly as it relates to scripting the Microsoft Office programs. You can embed macros, or short programs, into Microsoft Office files for yourself and your colleagues to work with. They can be used to tweak the user interface in Excel and Word and to automate features, such as copying and pasting text.
These macros are separate from Excel formulas, which are used to automatically compute results in a spreadsheet cell based on values in other cells.
VBA and Security Concerns
Keep in mind that if you write code in VBA and embed it in an Excel or Word file, the file will get a distinct extension indicating that it contains macro code. For security reasons, other users and users on other computers may have to approve the code to run before it will function.
In some cases, depending on settings, you may not be able to run the code at all or the file may be flagged by antivirus software and you won’t be able to install it.
If someone sends you a file that you don’t expect to have macro code or you receive a file with macro code from an unexpected source, do not allow the macro code to run until you verify it was written and sent to you by someone you trust, since it could damage files on your computer.
Setting Up the Developer Toolbar
Before you can access the scripting interface in Microsoft Excel, you must enable it. To do so, click the «File» tab on the ribbon menu, then click «Options» to enable the «Options» dialog box. Click «Customize Ribbon» in the left portion of the box, and then select «Popular Commands» under the «Choose commands from» label.
Then, on the right side of the dialog box, select «Main Tabs» in the «Customize the Ribbon» dropdown list and check the box next to the word «Developer.» Click the «OK» button.
The «Developer» tab will now appear on your ribbon menu. From there, you can click the «Visual Basic» button to see the embedded macro code in your spreadsheet.
Adding «Save» Button in Excel
If you want to add a VBA save as button in Excel, you can do so using the «Developer» tab in the ribbon menu. Make sure you have enabled it by customizing the ribbon, and then click the «Insert» button; under «ActiveX Controls,» click the word «Button.»
Then, click in your spreadsheet where you want the button to appear. Next, in the «Controls» group of the ribbon menu’s «Developer» tab, click «View code.» Select the button’s name in the left dropdown menu and the word «Click» in the right dropdown menu to edit the code that will be executed when you click on the button.
Here, you can add code for your «Save As» button to show the familiar prompt that will enable users to choose a location to store the spreadsheet.
Excel VBA and «Save As»
To give an Excel macro «Save As» functionality, you can use the Excel VBA GetSaveAsFilename function. This is part of the «Application» group of functions, since it is part of Excel’s core functionality.
Assign the result of the operation to a variable with a line like «filename = Application.GetSaveAsFileName()». When the code is run, a «Save As» dialog box will pop up, defaulting to the name of the current file.
You can specify an argument to the function called InitialFileName to indicate another default filename, use an argument called Title to customize the title on the dialog box, and use the FileFilter and FilterIndex options to specify a list of file types, such as Excel spreadsheets or text files, and the index within the list of the one you wish to use as a default.
When you select a folder and enter a file name to save the file with, the function will return the file path. If you close or cancel out of the dialog box, it will return «False.»
Accessing an Excel Workbook
Logically, you’ll likely want your Excel VBA SaveAs button to actually save the file using the file path that the user provided rather than just discarding that name. You can use the SaveAs method on a workbook object to do so. Remember that a workbook is just another name for a Microsoft Excel spreadsheet file.
To access the current workbook the user is working in, use the variable ActiveWorkbook. To get an already open workbook by filename, use the Workbooks method, such as by calling up Workbooks («filename.xls»).
Saving the Workbook
Once you have your workbook, you can call the SaveAs method on it using the filename that the user provided through the dialog box, such as by calling «ActiveWorkbook.SaveAs Filename:=filename». You can also pass other parameters to this function, such as the file format to use for the file, which could be a Windows or Mac text file, a Windows or Mac comma-separated value file or a traditional Excel file.
Other parameters allow you to indicate whether to add the file to the list of recently used files and whether to require a password, which you can specify with the method, to interact with the file. You may wish to prompt the user or otherwise indicate if you wish to set a password so you don’t make the file impossible to open.
Saving the File in Place
While an Excel macro for Save as can be useful if you want to prompt a user to enter a new filename, there are also times where you will simply want to save the Excel spreadsheet with its existing filename.
To do this, use the Save method on the workbook without any arguments. For example, you can call ActiveWorkbook.Save to save the active workbook. You can also iterate through the Application.Workbooks variable using a for loop to save each open workbook.
You may wish to notify users when you intend to save open workbooks, either by including a dialog box or a message within the spreadsheet, so that colleagues are not surprised that their work has been written to disk.
Styling Your Excel VBA Button
You may want to style and label buttons you create in Excel VBA to stand out. To do so, click the «Developer» tab in the ribbon menu and then click the «Design Mode» toggle button to turn design mode on.
Select the button you want to configure and design by clicking it with you mouse, and then click «Properties» within the «Controls» group of the «Developer» tab of the ribbon menu. Alternatively, right-click the button and click «Properties» with design mode enabled.
Within the properties menu, you can configure options like the «Caption» that is displayed on the button, which you may want to set to something like «Save As,» as well as the font settings used to display the text on the button. You can also configure whether the button has an image displayed on it and what type of cursor icon will appear when you move your mouse over it.
It’s also possible to configure whether it will appear when you print the spreadsheet. Configure the button so that you think it will be clear to users of the spreadsheet what it does, taking into account your organization’s usual font and styling preferences.
Using the Default Save As
While it may occasionally be useful to trigger a SaveAs dialog menu with the click of a button within your spreadsheet, it’s usually not necessary, because a SaveAs button is already built in to Microsoft Excel.
To access it, click the «File» menu in Microsoft Excel and then click «Save As.» Choose where you want to save the file on your cloud storage or on your local computer, and use the «Save as type» dropdown menu to choose which file format you want to use to store the file.
Use the «File name» box to indicate a name for the file, and click the «Save» button when you are satisfied.
Using the JavaScript API
Newer versions of Microsoft Office also enable scripting with JavaScript, a programming language commonly used for implementing interactive functionality on the web.
So far, saving functionality is only available in a public preview version of the scripting tool. You can save the file by calling the Workbook.save method, similar to the functionality in VBA. Call Workbook.save with the parameter Excel.SaveBehavior.save to indicate that you want to save the file in its existing place; use the argument Excel.SaveBehavior.prompt if you want to prompt the user on where to save the file for the first time.
Note that if the user cancels the Save menu, the method will throw an exception.
Using Google Apps Script
If you’re using Google Sheets instead of Microsoft Excel, you can still write code to script interactive elements and automated functionality in your spreadsheets. The code will be written in a version of JavaScript known as Google Apps Script that has access to Google applications like Google Docs, Google Sheets and Gmail.
If you want to create and populate a spreadsheet with a particular name in Google Sheets, you can use the «SpreadsheetApp.create» method, which takes the spreadsheet’s designed name as an argument and will return the web address of the new spreadsheet. If you pass it the name and a number of rows and a number of columns, such as SpreadsheetApp.create(«MySpreadsheet», 20, 5), it will create a new spreadsheet with those specifications.
Compatibility Between Software Tools
Note that the scripting languages included with various word processing and spreadsheet tools are largely incompatible with those from other makers. If you send someone a Microsoft Excel sheet with VBA code that they open with LibreOffice Calc, Apple Numbers or Google Sheets, it is very likely that the VBA code embedded in the sheet simply will not run on the other program.
Take this factor into consideration if you are exchanging files with people using different spreadsheet or word processing software.
Skip to content
На чтение 3 мин. Просмотров 2.9k.
Что делает макрос: Этот макрос защищает от случайного закрытия файла перед сохранением. Он гарантирует, что Excel автоматически сохранит файл перед закрытием.
Excel обычно предупреждает пользователей, которые пытаются закрыть не сохраненную книгу, давая им возможность сохранить перед закрытием. Тем не менее, многие пользователи могут пропустить это предупреждение, случайно нажать кнопку «Нет».
С этим макросом Вы защитите свой файл от невнимательных пользователей.
Содержание
- Как это работает
- Код макроса
- Как работает этот код
- Как использовать
Как это работает
Этот код запускается событием рабочей книги (BeforeClose- перед закрытием). При нажатии на кнопку Закрыть срабатывает событие и запускается макрос. Суть кода проста — он запрашивает у пользователя, действительно ли он хочет закрыть книгу
Макрос затем проверяет какую кнопку нажал пользователь ОК или Отмена. Оценка производится с помощью конструкции Select Case. Оператор Select Case является альтернативой в If … Then … Else, что позволяет выполнять проверки условий ваших макросов (обычно используется для большого количества условий).
Код макроса
Private Sub Workbook_BeforeClose(Cancel As Boolean)Выведем сообщение с "ОК" или "Отмена" Select Case MsgBox("Сохранить и закрыть?",vbOKCancel) 'Если нажал "Отмена", закрываем окно Case Is = vbCancel Cancel=True 'Если нажал "Да", то сохраняем книгу Case Is=vbOK ActiveWorkbook.Save 'Завершаем проверку, закрываем Select Case End Select End Sub
Как работает этот код
Давайте подробно рассмотрим каждую строчку кода
- На шаге 1 мы активируем окно c сообщением, где в качестве проверки используем оператор Select Case. Здесь мы используем аргумент vbOKCancel, чтобы на формочке отображались кнопки ОК и Отмена.
- Если пользователь нажал кнопку Отмена в окне сообщения, макрос говорит Excel: «Не выходим! Закрой событие!». Это делается путем присвоения переменной Cancel свойства True
(Верно). Если пользователь нажал кнопку OK в окне сообщений, п. 3 вступает в силу. - Здесь мы говорим Excel: «Сохранить книгу!». Здесь мы не пишем Cancel = True, поэтому событие успешно завершается.
- На шаге 4, мы просто закрываем Оператор Select Case.
Как использовать
Для реализации этого макроса, Вам нужно скопировать и вставить его в код события Workbook_BeforeClose. Размещение макроса здесь позволяет запускать макрос непосредственно перед закрытием excel-файла.
- Активируйте редактор Visual Basic, нажав ALT + F11.
- В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы и модуль ЭтаКнига.
- Правой кнопкой мыши нажмите на модуле ЭтаКнига и выберите View Code.
- В левой части окна выберите объект WorkBook (Excel автоматом предложит написать макрос для события Workbook_Open (можете позже удалить его за ненадобностью)
- В правом выпадающем списке свойство BeforeClose
evgeniy_m Пользователь Сообщений: 109 |
#1 01.09.2014 23:36:22 Всем доброе время суток! Есть макрос, после обработки которого вылетает окно с сохранением (имя файла берется автоматически с ячейки «А31» :
НО.. |
||
k61 Пользователь Сообщений: 2441 |
#2 02.09.2014 02:26:10 …
|
||
evgeniy_m Пользователь Сообщений: 109 |
|
socha Пользователь Сообщений: 13 |
Здравствуйте. |
Sanja Пользователь Сообщений: 14838 |
#5 05.10.2014 17:23:12 socha пишет:
Так это-ж ещё проще
Согласие есть продукт при полном непротивлении сторон. |
||||
socha Пользователь Сообщений: 13 |
В оригинале у меня место сохранения файла C:РаботаПродажаКлиентыА1″Папка клиента, имя которой совпадает с ячейкой А1. |
Sanja Пользователь Сообщений: 14838 |
#7 05.10.2014 17:37:42
а имя файла где указываете? Тоже в это-же ячейке (см пост #4)? Согласие есть продукт при полном непротивлении сторон. |
||
socha Пользователь Сообщений: 13 |
#8 05.10.2014 17:46:10 Вот по такому примеру нужно сделать макрос. Подставил свои параметры — все работает, только место сохранения, тоже должно быть переменное по указаной ячейке
Спасибо |
||
Sanja Пользователь Сообщений: 14838 |
#9 05.10.2014 17:51:45 Вы же практически все сделали
Согласие есть продукт при полном непротивлении сторон. |
||
socha Пользователь Сообщений: 13 |
Спасибо, все заработало. Просто не мог разобраться с синтаксисом |
vlasssov71 Пользователь Сообщений: 13 |
#11 05.10.2014 19:52:33 Еще символы надо убрать, которые в имени файла нежелательны
|
||
athe Пользователь Сообщений: 15 |
#12 19.06.2015 10:38:54 Добрый день.
К сожалению есть одно неудобство, данный код делает копию файла с указанным в ячейке названием и переходит в эту копию, закрывая изначальный файл. Может есть у кого код, который делал бы копию файла, не открывая его и не закрывал бы первичный файл? Изменено: athe — 19.06.2015 10:41:32 |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#13 19.06.2015 10:49:13
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
athe Пользователь Сообщений: 15 |
The_Prist |
RNEtidi Пользователь Сообщений: 12 |
#15 12.04.2016 15:58:04
в цикле For..Next выдает ошибку: Имя файла NewName изменяется в цикле:
В чем причина может быть? (DoEvents — не помогает). Изменено: RNEtidi — 12.04.2016 16:37:05 |
||||||||
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
RNEtidi, зачем цитируете всё подряд? Даже подпись. На чём хотели сделать акцент? Кнопка цитирования не для ответа. |
Hugo Пользователь Сообщений: 23257 |
#17 12.04.2016 16:36:25
— да хоть в том, что уже выше озвучивалось — в недопустимом имени файла. |
||
RNEtidi Пользователь Сообщений: 12 |
Hugo
, в моем случае в чем недопустимость имени файла? |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Никто не видит, что у Вас в ячейке, из которой берётся имя файла )) Чему равна переменная х? |
RNEtidi Пользователь Сообщений: 12 |
#20 12.04.2016 17:00:09
x — изменяемый циклом параметр |
||
Hugo Пользователь Сообщений: 23257 |
#21 12.04.2016 17:17:29
|
||
RNEtidi Пользователь Сообщений: 12 |
ну для начала x = 1. Потом x = 2. И так далее до n. К примеру n = 5, тогда x изменяется от 1 до 5. Цикл For..Next так работает. |
Hugo Пользователь Сообщений: 23257 |
Сорри, подслеповат вероятно… |
RNEtidi Пользователь Сообщений: 12 |
запись в каталог не запрещена, но ошибка все равно выскакивает. |
Фродо Пользователь Сообщений: 348 |
#25 12.04.2016 19:16:43
уникальность имени? у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример» |
||
RNEtidi Пользователь Сообщений: 12 |
#26 12.04.2016 19:18:37
|
||
Фродо Пользователь Сообщений: 348 |
#27 12.04.2016 19:23:15 для начало попробуйте все убрать.
у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример» |
||
RNEtidi Пользователь Сообщений: 12 |
в этом то вся и прелесть: вне цикла все хорошо сохраняет. а в теле цикла при попытке сохранить выскакивает вышеназванная ошибка и excel напрочь зависает. |
Фродо Пользователь Сообщений: 348 |
#29 12.04.2016 20:02:38
а так попробуйте файл пример сделайте у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример» |
||
RNEtidi Пользователь Сообщений: 12 |
#30 12.04.2016 21:49:14 для чего писать true после имени файла? Прикрепленные файлы
Изменено: RNEtidi — 12.04.2016 22:35:42 |