Войти

Показать полную графическую версию : [решено] Excel: создание кнопки -> запуск PowerShell


it3
30-09-2019, 12:28
Подскажите пожалуйста, каким образом можно реализовать следующее:
1. Есть ячейка, необходимо создать кнопку на листе;
2. При нажатии на кнопку должен открываться Windows PowerShell ISE и вставляться туда содержимое ячейке, которая выделена.

Iska
30-09-2019, 19:13
Например, так:
https://i.imgur.com/GMwnKOV.png
Option Explicit

Sub Кнопка1_Щелкнуть()
Dim strTempFile As String
Dim objRange As Range

strTempFile = GetTemporaryName()

With CreateObject("Scripting.FileSystemObject").CreateTextFile(strTempFile, True)
For Each objRange In Selection
.WriteLine objRange.Text
Next

.Close
End With

CreateObject("WScript.Shell").Run """PowerShell_ISE.exe"" -File """ & strTempFile & """", 1, False
End Sub

'=============================================================================
' Серый форум / VBScript: генерация пути для временного файла или папки
' (http://forum.script-coding.com/viewtopic.php?id=1221)
'=============================================================================
Function GetTemporaryName()
Const TemporaryFolder = 2

Dim strTempName

With CreateObject("Scripting.FileSystemObject")
Do
strTempName = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetBaseName(.GetTempName) & ".ps1")
Loop While .FileExists(strTempName) Or .FolderExists(strTempName)
End With

GetTemporaryName = strTempName
End Function
'=============================================================================

it3
01-10-2019, 13:06
Iska, а как сделать тak, чтобы перед вставленной ячейкой, всегда автоматически вставлялись следующие строки:
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch.domain.ru/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session -DisableNameChecking

Iska
01-10-2019, 14:35
а как сделать тak, чтобы перед вставленной ячейкой, всегда автоматически вставлялись следующие строки: »
Например, так:

With CreateObject("Scripting.FileSystemObject").CreateTextFile(strTempFile, True)
.WriteLine "$UserCredential = Get-Credential"
.WriteLine "$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch.domain.ru/PowerShell/ -Authentication Kerberos -Credential $UserCredential"
.WriteLine "Import-PSSession $Session -DisableNameChecking"
.WriteLine

For Each objRange In Selection




© OSzone.net 2001-2012