我一直试图从VBA运行一个Powershell脚本,但没有成功。其想法是在VBA中编写Powershell-coe (使某些进程自动化)。为了简化,下面有一些尝试。
On VBA
Sub test()
Dim command_shell As Variant
Dim code As String
code = "PowerShell -Command ""{import-csv c:\Users\flyer\Documents\H2SO4.csv -delimiter ';' | select -first 3}"""
我一直在尝试执行一个PowerShell函数(countLines),该函数从VBA获取输入参数fileName。我已经从和那里找到了一些答案,但是他们不是为我工作的。下面是我这样做的尝试(fname是我作为参数发送给包含以下代码行的VBA例程的VBA变量):
fileReader.ps1的内容如下:
function countLines {
param([string]$logFile);
#The directory path may differ for others according to the machine's source code reposi
我已经搜索过了,我可以找到很多从VBA运行PowerShell脚本的例子,但是我找不到任何仅仅运行一个简单命令的例子。
例如,这是可行的:
Dim retval As Variant
retval = Shell("PowerShell ""C:\MyScript.ps1""", vbNormalFocus)
但这不是:
Dim retval As Variant
Dim pscmd As String
pscmd = "PowerShell " & _
Chr(34) & "Get-Schedule
我需要使用CreateProcess和Powershell更改VBA脚本中的注册表键。跟随你会找到我的VBA代码。 当我直接在Powershell中或使用windows run运行引号内的代码时,注册表项的设置就像它应该的那样。当我使用此VBA代码时,我得到一个路径错误。 这条路是绝对正确的。在同一个VBA脚本中,我使用相同的命令设置了其他一些注册表键,并且没有错误。我对可能的错误一无所知。我在两个全新的Windows10虚拟机上测试了该脚本,结果相同。 提前感谢您的帮助。 Dim pInfo As PROCESS_INFORMATION
Dim sInfo As STARTUPINFO
D
我试图使用POWERSHELL命令将windows CRLF换行符转换为UNIX换行符。我想要一个VBA宏来做到这一点。
到目前为止,我的代码是:
Sub conversiontoUNIX()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim file As Stri
我试图运行一个powershell命令来解压缩一些文件,但是遇到了一些问题,找出了正确的语法。下面的代码不会出错,甚至当我在powershell中运行该命令时,它也不会显示错误(但也不起作用)。有人知道我做错了什么吗? Dim command As String: Set wsh = VBA.CreateObject("WScript.Shell")
Dim wsh As Object
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 7
Dim
我将从VBA脚本向PowerShell传递选定的Outlook.MailMessage属性: Public Sub InvokeMessageParser()
For Each Item In Application.ActiveExplorer.Selection
If TypeName(Item) = "MailItem" Then
Dim MailItem As Outlook.MailItem: Set MailItem = Item
// arrange
Dim c
我想编写一些VBA代码,将MSForms-常量名称(以字符串的形式给出,如"fmTextAlignLeft")解析到它们的实际值中。由于没有本机方法可以这样做,所以我考虑将常量的名称放入一个powershell代码中,然后执行该代码并返回结果。
Private Sub ParseEnumByName(EnumConst As String)
Dim WScript As New WshShell
Dim PSCode As String
Dim Result
PSCode = "(some code)" & EnumCon
我正在尝试创建一个宏,允许我访问多个交换机并在每个开关上运行备份配置命令。我可以通过使用plink.exe使用Putty来做到这一点。我们阻止了CMD.exe,但PowerShell没有。
由于我已经在macro中拥有了自己的开关表,并且了解一些VBA,所以我决定创建一个将启动PowerShell并发出命令的宏。我遇到的第一个障碍是,试图启动一个WScript.Shell对象来打开PowerShell会给我一条“访问被拒绝”的消息。
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.run(