Страница 1 из 2

Запустить макрос книги, книга не постоянная

Добавлено: 18 ноя 2010, 19:57
Diivika
Добрый вечер
Кто может помочь?
Есть команда Application.Run "'Segment 901.xls'!switchusermode" - запускает макрос switchusermode в книге Segment 901.xls. Нужно написать то же самое, только, чтобы книга менялась и написать переменную, например fFile - имя файла книги.

Re: Запустить макрос книги, книга не постоянная

Добавлено: 18 ноя 2010, 21:00
VictorM
А может проще поместить этот макрос в персональную книгу?
Тогда он будет доступен из любой рабочей книги просто по имени

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 10:47
Diivika
VictorM писал(а):А может проще поместить этот макрос в персональную книгу?
Тогда он будет доступен из любой рабочей книги просто по имени

Проще, но эта книге не моя, она защищена и этом макрос не доступен. Он как раз и снимает защиту книги.

Суть всего макроса в том, что есть папка, в ней лежат защищенные однотипные файлы. Они по очереди все открываются (как это сделать уже реализовано).

Неоюходимо внутрь поместить код, который совершает манипуляции непосредственно в файле (копировани, вставка, изменение формата) - это тоже реализованно. Но перед этим необходимо снять защиту и ввести пароль, это делается с помощью нажатия кнопки, что находиться в этих файлах.

Этот макрос как раз ее и нажимает.
Если есть другой способ ее нажать, я буду рада помощи.

Другая моя идея: это перезаписывать файл как другой временный, а потом записать снова как изначальный. Но как это написать?
Я новичок в VBA. Поэтому и прошу помощи...

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 11:40
Terminators
Diivika,
Но перед этим необходимо снять защиту и ввести пароль, это делается с помощью нажатия кнопки, что находиться в этих файлах.
напишите код, как это делается.

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 12:13
Diivika
Terminators писал(а):Diivika,

напишите код, как это делается.

В конечном результате я хочу получить такой макрос:

Есть папка, в ней лежат защищенные однотипные файлы. Они по очереди все открываются (как это сделать уже реализовано).

Необходимо внутрь поместить код, который совершает манипуляции непосредственно в файле (копирование, вставка, изменение формата) - это тоже реализованно. Но перед этим необходимо снять защиту и ввести пароль, это делается с помощью нажатия кнопки, что находиться в этих файлах.

Этот макрос как раз ее и нажимает.
Если есть другой способ ее нажать, я буду рада помощи.

Другая моя идея: это перезаписывать файл как другой временный, а потом записать снова как изначальный. Но как это написать?


Данный код прописывает дает пользователю выбрать, в какой папке лежат файлы и записывает путь в ячейку d3.

Sub pGetPath() 'procedure for button "Browse"


Dim fd As FileDialog
Dim vrtSelectedItem As Variant


Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd

If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems

ThisWorkbook.Sheets("Main").Range("D3").Value = vrtSelectedItem


Next vrtSelectedItem
End If
End With
End Sub

Данный код поочери открывает все сегменты и потом пересохраняет их

Sub OpenAllSegments()

Dim fFSO As New FilesystemObject
Dim fFolder, fNewFolder, fOldFolder As Folder
Dim fFiles As Files
Dim fFile, fTemplateFile As File
Dim vUnion As Range

Application.DisplayAlerts = False

Set fFolder = fFSO.GetFolder(ThisWorkbook.Sheets("Main").Range("D3").Value)

Set fFiles = fFolder.Files


For Each fFile In fFiles
'And Mid(fFile.Name, 9, 3) >= 394
If fFile.Name Like "Segment ###.xls" Then

Application.Workbooks.Open Filename:=fFile.Path, UpdateLinks:=0

здесь и должен помещаться код запуска макроса(нажатия кнопки, ввод пароля из буфера обмена и нажатия Энтер )и последующих манипуляций с книгой

Application.Workbooks(fFile.Name).Close SaveChanges:=False

End If


Next

End Sub

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 13:30
Terminators
Diivika, т. е. нужен код по открытию запороленных файлов, зная пароль?

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 13:41
Diivika
Terminators писал(а):Diivika, т. е. нужен код по открытию запороленных файлов, зная пароль?

Нет.
Файл открывается без пароля.
В нем есть кнопка, которая его разблокирует.
Нужно:
Нажать кнопку, в открывшуюся форму ввести пароль и нажать кнопку ОК.

Нажать кнопку подсказали Application.Run "'" & fFile.Name & "'!switchusermode"
Далее нужно вставить из буфера инфо с паролем и нажать ок

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 13:49
Terminators
которая его разблокирует
а как файл заблокирован?

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 14:04
Diivika
Terminators писал(а):а как файл заблокирован?

не дает ячейки изменять
защита снимается только этой кнопкой

Re: Запустить макрос книги, книга не постоянная

Добавлено: 19 ноя 2010, 14:12
Terminators
Diivika, т. е. на листе есть кнопка. При её нажатии появляется пользовательская форма, в которую нужно ввести пароль, чтобы разблокировать книгу?