Имя: Пароль:
1C
 
1C - Excel - защита файла паролем. Как?
Ø
0 Мимо Шел
 
24.06.05
18:17
При открытии файла excel из 1С как подставить экселевский пароль, чтобы не вводить его вручную?
1 pit
 
24.06.05
18:22
В экселе - Алт-Ф11, Ф1 - потом читать английский по белому....
2 Мимо Шел
 
24.06.05
19:45
>>expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
И как это использовать?
3 Мимо Шел
 
25.06.05
04:00
И всетаки?
4 Дурочка 1С
 
25.06.05
04:43
Запись макроса запускал?
5 Мимо Шел
 
25.06.05
04:52
А он ввод пароля не фиксирует
6 Мимо Шел
 
25.06.05
15:53
Ну help me пожалуйста?
7 Мимо Шел
 
25.06.05
22:41
Буду настойчив
8 pit
 
26.06.05
09:49
"Не выходит у Данилы каменный цветок" (с) Сказ Бажова
.
Ну так рассказывать? Или сам найдешь?
P.S. 10 минут и все работает...
9 Masita
 
26.06.05
11:14
Рассказывать-рассказывать.... все выходные жду...
Спасибо заранее...
10 Мимо Шел
 
26.06.05
13:40
2(8) Весь в нетерпении. И заранее благодарен
11 pit
 
26.06.05
16:39
expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
Это описано для ВБА....
В ВБА параметры можно задавать через ключевые слова или позиционно
.
например, в макросе можно написать
Workbooks.Open FileName :="ПутьИимяЭтогоДолбаногоФала",Password:="толпооббб"
или
Workbooks.Open "ПутьИимяЭтогоДолбаногоФала",,,,"толпооббб"
.
При оле возможен (по моему... я вообще весьма слабо знаю ВБА) только позиционный способ
Но там возникает проблема - тип данных д.б. вариант...
("Password Optional Variant. A string that contains the password required to open a protected workbook. If this argument is omitted and the workbook requires a password, the user is prompted for the password.")
.
и эксель не понимает указанного пароля - похоже, из-за неверного преобразования типов
Я уже пару раз налетал на такие приколы с вордом и экселем.
Но по поводу пароля - не могу найти обработку, где была фишка - как правильно установить тип передаваемой строки с паролем.....
Найти не могу...
.
Но всё, что нельзя - то можно, если осторожно....
.
Пример процедуры, открывающей файло с паролем немного через одно место
FileName - путь и имя файла в виде Диск:\каталог\...\имя.xls
password - cтрока пароля
.
Процедура работает, но надо проверить, будет ли она работать в случае, если у юзера открыт Ёксель и нем открыта пара его книг...
Может не уничтожать макрос после открытия - а в нем ведь светится пароль на открытие....
.
//*******************************************
Procedure OpenPassword(FileName,Password)
E = CreateObject("Excel.Application");
ВотЭтоИЗапихаем= "Sub MacroPassword()" +LineBreak+ "Workbooks.Open FileName :=""" + TrimAll(FileName) + """,Password:=""" + TrimAll(password) + """" +LineBreak+ "End Sub";
E.DisplayAlerts=0;
E.WorkBooks.Add();
b=E.ActiveWorkBook;
n=b.Name();
try
 _VB=b.VBProject.VBComponents;
except
  DoMessageBox( "Надо нежно погладить Эксель по (_|_) ");
  DoMessageBox( "И включить ДОВЕРИЕ к Visual Basic Project !");
  E.Visible=1;
  E.Application.DisplayAlerts=1;
  return;
endTry;
Count=_VB.Count();
_VB.Add(1);
_VB.Item(count+1).CodeModule.InsertLines(1,ВотЭтоИЗапихаем);
E.Application.Run("MacroPassword");
E.Application.workbooks(n).Close();
E.Application.DisplayAlerts=1;
E.visible = 1;
E = "";
  
EndProcedure
12 Masita
 
26.06.05
17:01
Спасибо... красиво... и макрос уничтожается...
13 Мимо Шел
 
26.06.05
17:49
Все отрабатывает, а пароль остается... Эксель 2003...
14 pit
 
26.06.05
18:25
Либо перепиши макрос на работу с параметрами...
Либо посмотри, почему не уничтожается...
2003 нет... Там вроде объектная модель и поведение поменялось немного...
15 pit
 
26.06.05
18:57
//*******************************************
Procedure OpenPassword(FileName,Password)
E = CreateObject("Excel.Application");
ВотЭтоИЗапихаем= "Sub MacroPassword(FName,Pword)" +LineBreak+ "Workbooks.Open FileName:=fName,Password:=pword" +LineBreak+ "End Sub";
E.DisplayAlerts=0;
E.WorkBooks.Add();
b=E.ActiveWorkBook;
n=b.Name();
try
 _VB=b.VBProject.VBComponents;
except
  DoMessageBox( "Надо нежно погладить Эксель по (_|_) ");
  DoMessageBox( "И включить ДОВЕРИЕ к Visual Basic Project !");
  E.Visible=1;
  E.Application.DisplayAlerts=1;
  return;
endTry;
Count=_VB.Count();
_VB.Add(1);
_VB.Item(count+1).CodeModule.InsertLines(1,ВотЭтоИЗапихаем);
E.Application.Run("MacroPassword",TrimAll(FileName),TrimAll(Password));
E.Application.workbooks(n).Close();
E.Application.DisplayAlerts=1;
E.visible = 1;
E = "";
EndProcedure
16 vrag
 
26.06.05
19:24
Workbooks.visible=1;
---------
Workbooks.visible=0;