Вопрос LeoCats

программирование программы ПО Eexcel

Здравствуйте. Если у вас есть время и желание я по поводу вчерашней темы.

1. Содержание темы::
Как создать макрос в excel, где при клике по кнопке «Сохранить» будет выполняться условие.
Создать папку с именем (путь, где должна, находится данная папка, и имя папки «V ГСМ»), если папка такая существует то отменить создание, если такой папки нет, то создать. Или можно без условия? Затем в эту папку сохранить файл, с именем данных ячейки (А9), и в последующем сохранять файлы (насчет сохранение, вы говорили вчера, просто все это действие надо объединить в один макрос)

2. Вы вчера дали код макроса
Sub SaveThisBook()
Dim PathToSave As String, FolderName As String, FellPathToSave As String
Dim fs As Object
PathToSave = "C:\Documents and Settings\Сергей\Мои документы\" '<--------------- Здесь укажи путь к папке в которую нужно сохранить книгу
FolderName = "V ГСМ" '<--------------- Здесь задай название папки
FellPathToSave = PathToSave & FolderName & "\"
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FolderExists(FellPathToSave) Then
fs.CreateFolder (FellPathToSave)
End If
Application.ThisWorkbook.SaveAs FellPathToSave & "Приход " & Left(Now, 10) & ".xlsx"
End Sub
Создание папки происходит, но сохранение файла с именем данных ячейки нет, папка пуста.
При просмотре в окне кода VBA ода из строк макроса выделена желтым.
Application.ThisWorkbook.SaveAs FellPathToSave & "Приход " & Left(Now, 10) & ".xlsx

3. Если путь создание папки и сохранение файла C:\Documents and Settings\Сергей\Мои документы где в данном пути значится папка под именем пользователя Сергей, будет ли данный макрос работать на другом компьютере если там зарегистрирован другой пользователь? Или необходимо изменить путь?
Файл будет скопирован на флэш, для возможной работы на другом компьютере.


Примечание:
-----------------------------------------------------------------------------------------------------------------------------------------
Выходит окно предупреждения, на код:
Application.ThisWorkbook.SaveAs FellPathToSave & "Приход " & Left(Now, 10) & ".xlsx

Текст:
Данное расширение нельзя использовать с выбранным типом файла. Измените расширение в поле «имя файла» или выберите другой тип файла в списке «тип файла».

Желательно сохранять просто как Книгу Excel без поддержки макросов с именем данных ячейки «А9»

Примечание:
Office 2007
Изменил на xls все нормально
Только где подправить, чтобы сохранение шло одного листа (Лист1) с именем данных ячейки (А9) и без поддержки макросов (просто как лист exсеl)

Примечание:
_____________________________________________________________________________________
На основание ваших кодов (в прошлых вопросах), попытался сделать макрос какой мне нужен.
Здесь данные сохраняются с расширением xlsх, тоже нормально, а в ваше коде вы правильно сказали необходимо расширение хls. Не понятно почему, ну ладно.
Макрос пронумерован для вопросов

Sub SaveThisBook()
1. Dim PathToSave As String, FolderName As String, FellPathToSave As String
2. Dim fs As Object
3. PathToSave = "C:\Documents and Settings\Сергей\Мои документы\"
4. FolderName = "V ГСМ"
5. FellPathToSave = PathToSave & FolderName & "\"
6. Set fs = CreateObject("Scripting.FileSystemObject")
7. If Not fs.FolderExists(FellPathToSave) Then
8. fs.CreateFolder (FellPathToSave)
9. End If
10. Range("A9").Select
11. ActiveWorkbook.SaveAs Filename:= _
12. "C:\Documents and Settings\Сергей\Мои документы\V ГСМ\" & ActiveCell.Value & ".xlsx", _
13. FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

Правильно ли составлен код?
Какой пункт необходимо изменить, что бы сохранялся лист а не вся книга, например (Лист1)?
Какой пункт необходимо изменить или добавить, чтобы сохранение шло уже без поддержки макросов?
В пункте 3. И 12. указан путь, где есть папка пользователя \Сергей\. Если основной файл с макросами будет скопирован на флэшку и подключен к другому компьютеру, который принадлежит другому пользователю, макрос определит путь, или необходимо поменять путь?
_____________________________________________________________________________________

Примечание:
У меня осталось всего два вопроса:
1. После выполнение в рабочей таблицы команды сохранить, сохраненная таблица открыта перед пользователем, а рабочая таблица, где производилось сохранение, закрыта. Как бы сделать наоборот, чтобы рабочая таблица была открыта, а сохраняемая закрывалась.
2. Пути создание папки и сохранение файлов. Не будет ли сбоя, при выполнение данного макроса на другом компьютере, из за папки пользователя \Сергей\.
_____________________________________________________________________________________

Примечание:
-------------------------------------------------------------------------------------------------------------------------------------------------
Sub Макрос2()
'
' Макрос2 Макрос
'

Dim PathToSave As String, FolderName As String, FellPathToSave As String
Dim fs As Object
PathToSave = "C:\Documents and Settings\Сергей\Мои документы\"
FolderName = "V ГСМ"
FellPathToSave = PathToSave & FolderName & "\"
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FolderExists(FellPathToSave) Then
fs.CreateFolder (FellPathToSave)
End If
Range("A9").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Сергей\Мои документы\V ГСМ\V ГСМ " & ActiveCell.Value & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.Goto Reference:="К_Сброс"
End Sub
-------------------------------------------------------------------------------------------------------------------------------------------------------

Примечание:
------------------------------------------------------------------------------------------------------------------------------------
Поменял значения. В принципе тоже самое. Что можно вставить в конце чтобы вся программа после сохранения закрывалась?

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

Сейчас код выглядит так

Dim PathToSave As String, FolderName As String, FellPathToSave As String
Dim fs As Object
PathToSave = ""
FolderName = "C:\Documents and Settings\Сергей\Мои документы\V ГСМ\"
FellPathToSave = PathToSave & FolderName & "\"
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FolderExists(FellPathToSave) Then
fs.CreateFolder (FellPathToSave)
End If
Range("A9").Select
ActiveWorkbook.SaveAs Filename:= _
FolderName & ActiveCell.Value & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
--------------------------------------------------------------------------------------------------------------------------------------------

Примечание:
Спасибо я поэкспериментирую, завтра выйду с темой «Вопрос к LeoCats»
Немног я усложнил действие, надо было бы пороще.
Ответы:
Какая версия офиса? Попробуй изменить расширение вместо xlsx - на xls. Вообще, неплохо бы указывать версии ПО, тут же не состязание по гаданию
Добрый вечер. Был занят и только сегодня смог зайти на ВиО.
А вообще, я постарался написать код в соответствии с твоими требованиями. Данный код копирует лист с именем "Лист1" в новую книгу и сохраняет его по пути, указанному в ячейке А9 на этом же листе. При это путь в ячейке нужно задавать в формате C:\Documents and Settings\Сергей\Мои документы\V ГСМ\Приход 18.06.2009.xls Т.е. полный путь и имя файла. Если папка указанная в пути последней отсутствует, макрос её создаст. После копирования листа, файл закрывается и перед пользователем остаётся исходная таблица. Ну вот и собственно код:
Небольшое уточнение, макрос копирует лист не с именем "Лист1" а активный лист, т.е. тот лист который открыт в момент вызова макроса.
Да ничего сложного нет, всё реально сделать. Просто когда все требования есть проще писать код.


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.