Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2009, 11:48   #11
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
остался такой нюанс - при открытии нового сохраненного файла слетает запрет на выделение защищенных ячеек
Тут мы вряд ли чем сможем помочь.
Это документированный баг Excel - при ручной установке защиты она сохраняется в файле, а при программной - не сохраняется.
(значение свойства EnableSelection теряется после закрытия файла, если Вы изменяли его программно)
В Excel 2002 и 2003 данная проблема решается установкой патча, но для Excel 2007 такой патч ещё не выпущен (насколько мне известно)

О проблеме можно почитать здесь:
http://www.asap-utilities.com/blog/i...-is-not-saved/
http://yandex.ru/yandsearch?clid=145...nableSelection

Так что, придётся искать другой вариант...

Немного укоротил Ваш макрос:
Вложения
Тип файла: rar пример.rar (14.1 Кб, 47 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 05.03.2009, 12:50   #12
eto
Пользователь
 
Регистрация: 24.02.2009
Сообщений: 29
По умолчанию

нда, вот оно что..

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

кстати, если бы не пришлось - как вставить макросом другой макрос в создаваемую им книгу?

помимо этого, нашла вот такую фразу "Проблема - решена с помощью WSH: галку, соответствующую EnableSelection, ставит SendKeys(...). " но цитата от 2005 года, так что спросить, что конкретно имелось в виду могу только у вас, если вы знаете
eto вне форума Ответить с цитированием
Старый 05.03.2009, 13:01   #13
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
нашла вот такую фразу "Проблема - решена с помощью WSH: галку, соответствующую EnableSelection, ставит SendKeys(...). "
Знаю, думал про этот вариант.
Но он непрост в реализации, на разных компах может работать по-разному, и поэтому я не стал предлагать Вам этот способ.

Это не что иное, как отправка приложению Excel набора команд с клавиатуры (как если бы Вы нажали вручную несколько горячих клавиш, вручную устанавливая защиту)

Цитата:
как вставить макросом другой макрос в создаваемую им книгу?
Можно, но сложно.
Проще не создавать новый лист:
Код:
'новый лист
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "данные"
а поместить в исходный файл скрытый лист Данные уже с нужными макросами (или, возможно, просто установив на нём защиту)
а потом вместо создания листа просто перемещать этот скрытый лист в новую книгу, попутно отображая его.

Пример во вложении:
(добавил скрытый лист Данные, установил на нём (вручную) защиту с паролем 123)
Вложения
Тип файла: rar пример.rar (15.7 Кб, 31 просмотров)

Последний раз редактировалось EducatedFool; 05.03.2009 в 13:19.
EducatedFool вне форума Ответить с цитированием
Старый 05.03.2009, 15:52   #14
eto
Пользователь
 
Регистрация: 24.02.2009
Сообщений: 29
По умолчанию

Цитата:
Знаю, думал про этот вариант.
Но он непрост в реализации, на разных компах может работать по-разному, и поэтому я не стал предлагать Вам этот способ.
примерно так я и подумала

запомню на будущее про копировать скрытый лист с макросом
eto вне форума Ответить с цитированием
Старый 21.10.2010, 13:40   #15
LLIaMaH
Пользователь
 
Регистрация: 22.09.2010
Сообщений: 14
По умолчанию

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

With ActiveWorkbook.Sheets("Форма")
Имя_для_сохранения = [A9] & [A8]
End With

FName = Application.GetSaveAsFilename(Initi alFileName:=Имя_для_сохранения, _
FileFilter:="Excel Files (*.xls), *.xls", _
Title:="Выберите имя файла для сохранения")


If VarType(FName) <> vbBoolean Then ActiveWorkbook.SaveAs FName

Последний раз редактировалось LLIaMaH; 21.10.2010 в 14:31.
LLIaMaH вне форума Ответить с цитированием
Старый 21.10.2010, 16:04   #16
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте так:

Код:
Sub test()
    ПутьКПапке = "C:\Documents and Settings\Admin\Рабочий стол\Моя папка\"

    With Worksheets("Форма")
        Имя_для_сохранения = .[A9] & .[A8]    ' НЕ ЗАБЫВАЕМ ПРО ТОЧКИ перед ссылками на ячейки
    End With

    ActiveWorkbook.SaveAs ПутьКПапке & Имя_для_сохранения & ".xls"
End Sub
Ну или так (то же самое, только короче)
Код:
Sub test()
    ActiveWorkbook.SaveAs "C:\Моя папка\" & [Форма!A9] & [Форма!A8] & ".xls"
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 07.06.2012, 16:58   #17
NaMoRZA
 
Регистрация: 30.07.2010
Сообщений: 3
По умолчанию

Здравствуйте. Очень помогла эта тема в решении моей задачи.
Вот мой макрос:
Код:
Sub RepDay()
   
    Const Path = "C:\Rep\RepDay\"             'Объявляем путь для сохранен
    Dim NameDate As String                        'Вводим переменную для определения даты для имени файла
    Dim RepFileName As String                              'Вводим переменную для имени файла
    NameDate = Format((Sheets("Отчет").Range("C2")), "yyyy-mm-dd") 'Указываем значение переменной даты для имени файла
    RepFileName = "RepDay_" & NameDate & ".xls"                    'Указываем значение переменной всего имени файла
  
    Sheets("Отчет").Select
    Cells.Select
    Range("B1").Activate
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Sheets("Лист1").Select
    Sheets("Лист1").Name = "Отчет"
    ActiveWindow.Zoom = 80
    ActiveWorkbook.SaveAs Filename:=Path & RepFileName, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
End Sub
Все отлично работает, но надо еще чтобы перед сохранением проверялось наличие такого файла и если такой файл уже существует, то к имени файла чтоб добавлялась версия, например, если файл уже есть, то чтоб файл сохранялся с именем
RepFileName = "RepDay" & RepFileVer & "_" & NameDate & ".xls"
где, RepFileVer - это версия файла в формате "v1, v2, v3....vN". Но желательно, чтобы первая версия файла была
RepFileName = "RepDay_" & NameDate & ".xls". Возможно ли такое? Если да, то как? Помогите пож-та.
Спасибо.

Последний раз редактировалось NaMoRZA; 07.06.2012 в 16:59. Причина: Правка форматирования
NaMoRZA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги по графам. нахождение пути Rusl92 Паскаль, Turbo Pascal, PascalABC.NET 3 17.12.2008 14:44
Значение ячейки по названию листа VadimSh Microsoft Office Excel 4 02.12.2008 15:29
Как задать свойства ячейки в Excel? Dux Microsoft Office Excel 6 16.08.2008 17:03
Защитить ячейки в Excel Т@тьян@ Общие вопросы Delphi 2 29.04.2008 14:47
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39