Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Windows Server 2012/2012 R2 (http://forum.oszone.net/forumdisplay.php?f=117)
-   -   Запуск и работа Excel VBA используя службу Windows и Power Shell (http://forum.oszone.net/showthread.php?t=313764)

Mor940k 12-04-2016 12:26 2625355

Запуск и работа Excel VBA используя службу Windows и Power Shell
 
Друзья, добрый день!

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

По сути:

Есть 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 в каталог ???

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


Время: 18:42.

Время: 18:42.
© OSzone.net 2001-