Запустить макрос книги, книга не постоянная
Модератор: Naeel Maqsudov
Добрый вечер
Кто может помочь?
Есть команда Application.Run "'Segment 901.xls'!switchusermode" - запускает макрос switchusermode в книге Segment 901.xls. Нужно написать то же самое, только, чтобы книга менялась и написать переменную, например fFile - имя файла книги.
Кто может помочь?
Есть команда Application.Run "'Segment 901.xls'!switchusermode" - запускает макрос switchusermode в книге Segment 901.xls. Нужно написать то же самое, только, чтобы книга менялась и написать переменную, например fFile - имя файла книги.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
А может проще поместить этот макрос в персональную книгу?
Тогда он будет доступен из любой рабочей книги просто по имени
Тогда он будет доступен из любой рабочей книги просто по имени
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
VictorM писал(а):А может проще поместить этот макрос в персональную книгу?
Тогда он будет доступен из любой рабочей книги просто по имени
Проще, но эта книге не моя, она защищена и этом макрос не доступен. Он как раз и снимает защиту книги.
Суть всего макроса в том, что есть папка, в ней лежат защищенные однотипные файлы. Они по очереди все открываются (как это сделать уже реализовано).
Неоюходимо внутрь поместить код, который совершает манипуляции непосредственно в файле (копировани, вставка, изменение формата) - это тоже реализованно. Но перед этим необходимо снять защиту и ввести пароль, это делается с помощью нажатия кнопки, что находиться в этих файлах.
Этот макрос как раз ее и нажимает.
Если есть другой способ ее нажать, я буду рада помощи.
Другая моя идея: это перезаписывать файл как другой временный, а потом записать снова как изначальный. Но как это написать?
Я новичок в VBA. Поэтому и прошу помощи...
-
- Сообщения: 14
- Зарегистрирован: 23 сен 2010, 11: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
-
- Сообщения: 14
- Зарегистрирован: 23 сен 2010, 11:13
Diivika, т. е. нужен код по открытию запороленных файлов, зная пароль?
Terminators писал(а):Diivika, т. е. нужен код по открытию запороленных файлов, зная пароль?
Нет.
Файл открывается без пароля.
В нем есть кнопка, которая его разблокирует.
Нужно:
Нажать кнопку, в открывшуюся форму ввести пароль и нажать кнопку ОК.
Нажать кнопку подсказали Application.Run "'" & fFile.Name & "'!switchusermode"
Далее нужно вставить из буфера инфо с паролем и нажать ок
-
- Сообщения: 14
- Зарегистрирован: 23 сен 2010, 11:13
а как файл заблокирован?которая его разблокирует
Terminators писал(а):а как файл заблокирован?
не дает ячейки изменять
защита снимается только этой кнопкой
-
- Сообщения: 14
- Зарегистрирован: 23 сен 2010, 11:13
Diivika, т. е. на листе есть кнопка. При её нажатии появляется пользовательская форма, в которую нужно ввести пароль, чтобы разблокировать книгу?