Что нового

Как программно поставить пароль на файл Excel

WinDos32

Новичок
Сообщения
13
Репутация
0
Как программно поставить пароль на файл xls(xlsx)?
есть вот такой вариант, но не работает что не так подскажите
Код:
#include <file.au3>
$Path = 'excel'; Название папки с Excel файлами
$FullPath = @ScriptDir & '\' & $Path
$XlsFiles = _FileListToArray($FullPath, '*.xls', 1)
For $i = 1 to $XlsFiles[0]
	$File = $FullPath & '\' & $XlsFiles[$i]
	MsgBox(0,0,$File)
	$Exsobj = ObjCreate('Excel.Application'); Запускаем Excel
	$Exsobj.WorkBooks.Open($File); Открываем
    $Exsobj.ThisWorkbooks.Add.Password='123'
	$Exsobj.ThisWorkBooks.Save($File); Сохраняем файл
	$Exsobj.Application.Quit; Выходим из Excel
	$Exsobj = 0; Освобождаем переменную
Next
 

SyDr

Сидра
Сообщения
651
Репутация
158
Код:
#include <Excel.au3>
#include <File.au3>

Const $sPath1 = @ScriptDir & '\ExcelNoPass'
Const $sPath2 = @ScriptDir & '\ExcelWithPass'

Global $aFiles = _FileListToArray($sPath1, '*.xls', 1)
Global $oExcel = _Excel_Open()

For $i = 1 to $aFiles[0]
    $FilePath1 = $sPath1 & '\' & $aFiles[$i]
    $FilePath2 = $sPath2 & '\' & $aFiles[$i]

    $oEx = _Excel_BookOpen($oExcel, $FilePath1, True)
	_Excel_BookSaveAs($oEx, $FilePath2, Default, False, "123")
	_Excel_BookClose($oEx, False)
Next

_Excel_Close($oExcel, False)
 

SyDr

Сидра
Сообщения
651
Репутация
158
А вы этот код на основании чего писали? ThisWorkbooks - это вообще что такое?
 
Автор
W

WinDos32

Новичок
Сообщения
13
Репутация
0
Я так понял что вас интересует это-ThisWorkbook При этом мы обращаемся к той книге, которой принадлежит данный программный модуль:
 

SyDr

Сидра
Сообщения
651
Репутация
158
Я имею в виду, откуда взята информация о том, что так можно делать?
Вот, например, здесь (http://msdn.microsoft.com/en-us/library/bb221809%28v=office.12%29.aspx) указано, что ThisWorkbook доступен только из самого Excel, но не из других приложений.
 
Автор
W

WinDos32

Новичок
Сообщения
13
Репутация
0
я не оч силен в excel, а то что вы дали я только увидел, все другие примеры были для макросов, а не для моего случая. Поэтому я предположил что это будет работать.
Есть способ не функциями autoit сделать такое?
 
Верх