excel - Powershell 脚本包括。VBA Excel 宏
问题描述
我想编写一个 Powershell 脚本,它打开一个现有文件并在其中放入一个宏。我搜索和搜索,但我什么也没找到。
我的代码是:
$Word = New-Object -ComObject Word.Application
$Word.Visible = $true
$filepathagenda = "C:\Users\$Username\Desktop\Agenda.docx"
$Word.Documents.Open($filepathagenda)
VBA代码是:
Sub Macroname()
Dim oTab As Table
Dim i As Integer
Dim x As Integer
Dim Std As Double
Dim Min As Double
Dim Dauer As Double
Dim Z As Double
Dim ZInt As Double
Dim ZDez As Double
Dim Txt As String
Set oTab = ActiveDocument.Tables(1)
i = oTab.Rows.Count
For x = 2 To i
On Error GoTo ErrorHandle:
Std = CDbl(Left(oTab.Cell(x, 5), 2))
Min = CDbl(Mid(oTab.Cell(x, 5), 4, 2))
Txt = oTab.Cell(x, 4).Range.Text
Dauer = CDbl(Left(oTab.Cell(x, 4), Len(Txt) - 2))
If Min + Dauer < 60 Then
oTab.Cell(x + 1, 5).Range.Text = Format(Std, "00") & ":" & Format(Min + Dauer, "00")
oTab.Cell(x + 1, 5).Select
Else
Z = (Min + Dauer) / 60
ZDez = Z - Int(Z)
ZDez = ZDez * 60
oTab.Cell(x + 1, 5).Range.Text = Format(Std + Int(Z), "00") & ":" & Format(ZDez, "00")
oTab.Cell(x + 1, 5).Select
End If
GoTo NoError:
ErrorHandle:
oTab.Cell(x + 1, 5).Range.Text = Format(Std, "00") & ":" & Format(Min, "00")
oTab.Cell(x + 1, 5).Select
Resume NoError:
NoError:
Next x
Ende:
End Sub
如何将宏放入文件中?我刚刚找到了一些命令,我可以在其中运行宏,但没有关于将宏嵌入到这样的文件中。将脚本嵌入到 docx/docm 文件后,我想在文件中运行宏:
$word.run("Macroname")
$word.quit() exit application
解决方案
您可能正在寻找 Word 文档的.Import
方法。
objDocumentObject.VBProject.VBComponents.Import(strFilePathAndName)
strFilePathAndName
对包含您的宏的文本文档的引用在哪里。
下面使用一种FileDialog
方法来选择Word文档并将宏作为字符串逐行插入,但也可以使用上述方法通过引用文件名变量来完成。
Sub AddMacroToWordDoc()
With Application.FileDialog(msoFileDialogOpen)
.Show
Dim appWord As Word.Application
Set appWord = New Word.Application
Dim docDocToAdjust As Word.Document
Set docDocToAdjust = appWord.Documents.Open(Trim(.SelectedItems(1)))
docDocToAdjust.VBProject.VBComponents("ThisDocument") _
.CodeModule.AddFromString _
"Sub Test()" & vbLf & _
" MsgBox ""It works""" & vbLf & _
"End Sub"
End With
End Sub
值得注意的是,这两种方法都需要在 VBA 代码插入工作之前信任文件(原因很明显)。
编辑:如果您在另一个 Microsoft 产品的 VBA 中使用它,您还需要引用 Microsoft Word 对象库。
推荐阅读
- git - Azure Dev Ops 构建参数来定义 BuildNumber?
- batch-file - 在批处理脚本中替换部分 IP
- powershell - 如何使用 powershell 脚本在 powershell 控制台上显示 excel 数据
- php - 使用 DOMDocument 提取 XML 值
- python-3.x - Sphinx 文档和指向 Markdown 的链接
- python - Keras 中的量化支持
- javascript - JavaScript 意外标识符错误代码
- python - Snowflake - 如何使用 NodeJS 连接到 Snowflake
- c - 比较字节数组时出现 Malloc 错误
- python - Tensorflow,更改占位符并传递值