Microsoft Word
Word の文字列を取得する
Characters プロパティは N 文字目、Words プロパティは N 語目、Sentences プロパティは N 行目を指定する。
get_word.ps1
function GetWordContent {
$file_path = "C:\Users\user\Desktop\test.docx"
# アプリケーションを開始する
$app = New-Object -ComObject Word.Application
$app.Visible = $true
# Word を開く
$doc = $app.Documents.Open($file_path)
# 文字列を取得する
$var_char = $doc.Characters(1).Text
$var_word = $doc.Words(1).Text
$var_sentence = $doc.Sentences(1).Text
# Word を閉じる
$doc.Close()
# アプリケーションを終了する
$app.Quit()
Write-Output -InputObject "var_char: $var_char"
Write-Output -InputObject "var_word: $var_word"
Write-Output -InputObject "var_sentence: $var_sentence"
}
GetWordContent
Word に文字列を挿入する
insert_word.ps1
function InsertWordContent {
$file_path = "C:\Users\user\Desktop\test.docx"
# アプリケーションを開始する
$app = New-Object -ComObject Word.Application
$app.Visible = $true
# Word を開く
$doc = $app.Documents.Open($file_path)
# 文章を挿入する
$doc.Content.InsertBefore("Before")
$doc.Content.InsertAfter("After")
# Word を保存する
$doc.Save()
# Word を閉じる
$doc.Close()
# アプリケーションを終了する
$app.Quit()
}
InsertWordContent
Word の文字列を置換する
replace_word.ps1
function ReplaceWordContent {
$file_path = "C:\Users\user\Desktop\test.docx"
# アプリケーションを開始する
$app = New-Object -ComObject Word.Application
$app.Visible = $true
# Word を開く
$doc = $app.Documents.Open($file_path)
# 文字列を置換する
$doc.Characters(1).Text = "A"
$doc.Words(2).Text = "DEF"
$doc.Sentences(2).Text = $doc.Sentences(1).Text
# Word を保存する
$doc.Save()
# Word を閉じる
$doc.Close()
# アプリケーションを終了する
$app.Quit()
}
ReplaceWordContent
Microsoft Outlook
Outlook でメールを作成する
create_mail.ps1
function CreateMail {
# アプリケーションを開始する
$app = New-Object -ComObject Outlook.Application
# メールを作成する
$item = $app.CreateItem(0)
# メールの設定を入力する
$item.To = "makoto@example.com"
$item.CC = "sekai@example.com"
$item.Subject = ""
$item.BodyFormat = 1 # olFormatPlain
$item.Body = "ごめん`n`n`n`n`nさよなら"
#$item.Attachments.Add("C:\Users\user\Desktop\attachment.txt")
$item.Display()
# メールを保存する
$item.Save()
# アプリケーションを終了する
# $app.Quit()
# MailItem object
# https://docs.microsoft.com/ja-jp/office/vba/api/outlook.mailitem
# OlBodyFormat enumeration
# https://docs.microsoft.com/ja-jp/office/vba/api/outlook.olbodyformat
}
CreateMail
Outlook のメールを取得する
get_mail.ps1
function GetMail {
# アプリケーションを開始する
$app = New-Object -ComObject Outlook.Application
$namespace = $app.GetNamespace("MAPI")
# 受信フォルダのメールを取得する
$folder = $namespace.GetDefaultFolder(olFolderInbox)
$items = $folder.Items
# アプリケーションを終了する
# $app.Quit()
# 取得した情報の出力
foreach ($item in $items) {
Write-Output -InputObject $item.SentOn
Write-Output -InputObject $item.Subject
Write-Output -InputObject $item.SenderName
Write-Output -InputObject $item.Sender.Address
Write-Output -InputObject $item.To
Write-Output -InputObject $item.CC
}
# MailItem object
# https://docs.microsoft.com/ja-jp/office/vba/api/outlook.mailitem
# OlDefaultFolders enumeration
# https://docs.microsoft.com/ja-jp/office/vba/api/outlook.oldefaultfolders
}
GetMail
Microsoft Excel
Excel の値を取得する
get_excel.ps1
function GetExcelContent {
# アプリケーションを開始する
$app = New-Object -ComObject Excel.Application
$app.Visible = $true
# Excel を開く
$book = $app.Workbooks.Open("c:\Users\user\Desktop\hoge.xlsx")
# シートを開く
$sheet = $book.Worksheets.Item("Sheet1")
# 値を取得する
$cell = $sheet.Cells.Item(1, 1).Text
# Excel を保存する
$book.Save()
# Excel を終了する
$book.Close()
# アプリケーションを終了する
$app.Quit()
Write-Output -InputObject $cell
}
GetExcelContent
Internet Explorer (おまけ)
Web ブラウザを操作する
ie.ps1
function ManipulateIE {
$uri = "https://www.google.co.jp/"
# Web サイトへアクセス
$ie = New-Object -ComObject InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate($uri)
# ページが読み込まれるまでスリープする
while ($ie.Busy) {
Start-Sleep -Seconds 1
}
# 値を入力する
$txt = $ie.Document.getElementsByName("q")
$txt[0].value = "PowerShell"
# ページが読み込まれるまでスリープする
while ($ie.Busy) {
Start-Sleep -Seconds 1
}
# ボタンを押す
$btn = $ie.Document.getElementsByName("btnK")
$btn[0].click()
}
ManipulateIE