Войти

Показать полную графическую версию : Запуск и работа Excel VBA используя службу Windows и Power Shell


Mor940k
12-04-2016, 12:26
Друзья, добрый день!

Пишу сюда, т.к. нигде на просторах интернета не смог найти нужную мне информацию.

По сути:

Есть Excel макрос VBA, данный макрос сохраняет Excel (xlsx) - файлы в каталог.

Когда я запускаю данный механизм локально (вручную) - всё работает.

А если запускаю используя службу - xlsx файлы не сохраняются в каталог.

Запускаю макрос через power shell, который в свою очередь, заходит в макрос и запускает определённую процедуру.

Прилагаю скрипт POWER SHELL:

Set-ExecutionPolicy Unrestricted
$excel = new-object -comobject excel.application

$curDir = $MyInvocation.MyCommand.Definition | split-path -parent
$FDir = $curDir;
$FName = "\TEST.xlsm";
$strFileName = $FDir + $FName;

$excelFiles = Get-ChildItem -Path($strFileName)
$app = $excel.Application
$workbook = $app.workbooks.open($excelfiles)
$app.Visible = $False
$excel.displayalerts = $False
$workbook.Activate()
$app.Run("CreateTXT")


Так же прилагаю скрипт VBA:

Sub CreateTXT()

List = "Лист2"
Sheets(List).Activate

Cells(1, 1) = 1
Cells(1, 2) = 2
Cells(1, 3) = 3
Cells(1, 4) = 4
Cells(1, 5) = 5

FPath = ActiveWorkbook.Path
FName = "Лист2.xlsx"

Sheets(List).Copy
aFile = FPath & "\" & FName

If Dir(FPath & "\" & FName) <> "" Then

'Перезапись файла

If Len(Dir$(aFile)) > 0 Then
Kill aFile
End If

ActiveWorkbook.SaveAs Filename:=aFile

ActiveWorkbook.Close (False)

Else

'Запись файла

ActiveWorkbook.SaveAs Filename:=aFile

ActiveWorkbook.Close (False)

End If

ThisWorkbook.Activate

strFile_Path = FPath & "\Check.txt"

Open strFile_Path For Output As #1
Print #1, "CheckMask"
Close #1

ActiveWorkbook.Close (False)

End Sub


Причём текстовый файл он сохраняет, а xlsx - нет.

Подскажите пожалуйста в чём проблема?

Что было проделано:

1. Созданы 2 директории:

- C:\Windows\System32\config\systemprofile\Dektop

- C:\Windows\SysWOW64\config\systemprofile\Desktop

2. В настройках безопасности Excel - разрешил запуск всех небезопасных элементов.

3. Пользователь, от которого запускается служба имеет все администраторские права на чтение, запись на каталог в котором крутится данный механизм.

4. PowerShell запускается от имени администратора...

5. Разрешил запуск COM, COM+ и DCOM объектов.

Какие настройки безопасности Windows Server 2012 R2 блокируют сохранение xlsx из xlsm в каталог ???

Заранее спасибо.




© OSzone.net 2001-2012