2.対象ファイルをzipにしてdocument.xmlにアクセスする

ソースの対応箇所は以下の通り


#docxファイルの実体部分取得開始----------------------------------------------------

#docx→zipに変更

Rename-Item -Path ($filePth + "\" + $fileNm + ".docx") -NewName ($fileNm + ".zip")


#zip解凍(解凍先はファイルのあるパスと同じ)

#以降解凍後のフォルダ名はファイル名と同じ&wordファイルであれば構成は同じなのでファイル名を使ってパスを指定していく

Expand-Archive -Path ($filePth + "\" + $fileNm + ".zip") -DestinationPath ($filePth + "\" + $fileNm)


#zip削除(後々邪魔になるため)

Remove-Item ($filePth + "\" + $fileNm + ".zip")


#いじる用のXMLパスセット

$wdXmlPath = ($filePth + "\" + $fileNm + "\word\document.xml")


#XMLの内容をごそっと取得

$strRaw = Get-Content $wdXmlPath -RAW -Encoding utf8

#docxファイルの実体部分取得終了----------------------------------------------------


まずはRename-Itemを使って対象ファイルの拡張子を「docx」から「zip」に変更。

「変数filePthに"\"と変数fileNmと".docx"で示されたファイル(-Path ($filePth + "\" + $fileNm + ".docx"))を変数fileNmと".zip"をくっつけた(-NewName ($fileNm + ".zip"))名前に変更する(Rename-Item)」


そうしてできたzipをExpand-Archiveによって同じ階層に解凍。

「変数filePthに"\"と変数fileNmと".zip"で示されたファイル(-Path ($filePth + "\" + $fileNm + ".zip"))を変数filePthに"\"と変数fileNmで示されたディレクトリ(-DestinationPath)に解凍(Expand-Archive)」


解凍後にもzipが残り、後々、再度「docx」を作る際に邪魔になるのでこの時点で用済みになったzipを削除します。

「変数filePthに"\"と変数fileNmと".zip"で示されたファイル(($filePth + "\" + $fileNm + ".zip"))を削除(Remove-Item)」


zipの解凍により、前提の2で説明したような内容の階層を持ったフォルダができあがっています。

が、しかし、用があるのはこの中のwordフォルダのdocument.xmlのみなので、このdocument.xmlにアクセスするためのパスを先に変数wdXmlPathに格納しておきます。

($wdXmlPath = ($filePth + "\" + $fileNm + "\word\document.xml"))


基本的に一括置換かけていくので、問題のXMLの内容をまるっと変数strRawに取得しておきます。

「変数strRawに変数wdXmlPathで示されたファイルの中身を、そのままUTF-8(-Encoding utf8)文字列として(-RAW)取得する(Get-Content $ )」





  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る