none
Запуск и работа Excel VBA используя службу Windows и Power Shell RRS feed

  • Общие обсуждения

  • Коллеги, добрый день!

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

    По сути:

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

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

    • Перемещено Alexander RusinovModerator 12 апреля 2016 г. 9:56 Более подходящий раздел форума
    12 апреля 2016 г. 8:55