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 в каталог ???
Заранее спасибо.
Пишу сюда, т.к. нигде на просторах интернета не смог найти нужную мне информацию.
По сути:
Есть 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 в каталог ???
Заранее спасибо.