前提・実現したいこと
Excelの大量のセルの複雑な書式設定を素早く行うために
XML経由で書式設定を行いたいです。
スタイルを追加してから対象のセルに追加したスタイルIDを設定すれば
出来そうなことは分かったので
元のスタイルをコピーして書き換えて追加して
もともとデフォルトのスタイルが割り当てられていたセルには"StyleID"の項目がないので
"StyleID"が無いセルはその項目を追加したいのですが
AppendChild
を使えばいいらしいところまでは分かったのですが使い方がよくわかりませんでした。
上記の
配列になっている項目の追加方法と
新しいプロパティ? の追加方法と
元の項目をコピーして流用? することが可能
ならばそちらも
教えて頂きたいです。
お願い致します。
サンプルソースコード
powershell
1try 2{ 3 $App = New-Object -ComObject "Excel.Application" 4 $App.Visible = $true 5 $BK = $App.Workbooks.Add() 6 $Sh = $Bk.ActiveSheet 7 8 $App.DisplayAlerts = $false 9 $Sh.Range("A1:C4").Formula() = "=Row()*Column()" 10 $Sh.Range("A2:C2").merge() 11 $Sh.Range("A2:C2").Interior.Color = [int]"0xCCCCCC" 12 13 $XML = $Sh.Range("A1:C4").Value(11) -as "XML" 14 15 16 <# 17 ここでXMLをいじって表示形式を変更したい 18 19 そのために.... 20 $XML.Workbook.Styles に新しいスタイルを追加したい 21 22 $XML.Workbook.Worksheet.Table.Row.Cellに"StyleID"の項目が無ければ追加したい 23 #> 24 25 $XML.PreserveWhiteSpace = $true 26 $NewXmlText = $XML.OuterXml 27 Write-Host $NewXmlText 28 $Sh.Range("A1:C4").Value(11) = $NewXmlText 29 # コンソールに"Enter"入力されるまで待機 30 $null = Read-Host "Enter で終了" 31} 32catch [DivideByZeroException] 33{ 34 Write-Host "エラー" 35} 36finally 37{ 38 Write-Host "クリーンアップしています..." 39 $BK.Close($false) 40 $App.Quit() 41 42 $Null = [System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($Sh) 43 $Null = [System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($BK) 44 $Null = [System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($App) 45 [System.GC]::Collect() 46}
試したこと
AppendChild
を使えばいいらしいところまでは分かったのですが
使い方がよくわかりませんでした。
補足情報(FW/ツールのバージョンなど)
Win10
蛇足( - 追記 - )
セルの結合サイズが違う場所同士でのNumberFormatや値のコピペなど
自由なコピペをしたくてそのために試行錯誤しています。
XML 以外でも下記条件を全て満たせれば XMLの要素の追加 以外の回答でもありがたいです。
-- 最終必須条件 --
既に開いているブック間のコピペ
別のプロセス間のコピペ
同じブックを複数 読取専用で開いていても 可
ペースト時に、ペースト方法選択切替
0. NumberFormat
0. セルの塗りつぶし色とパターン
0. 値(Value)の 書換 or 追記(貼り付け先の値の 先頭 or 末尾)
0. FontSize
0. FontColor
等 の組み合わせ
コピー内容を編集してからのペースト
ショートカットキー での コピペ
保存されていないブック( 一度も保存されていない, 最終保存から変更されている ) でのコピペ
異なる結合範囲間でのコピペ(結合されたセルは1つのセルとして扱う コピー範囲 よりも 貼付範囲の 方が大きければ コピー内容をループ)
複数Areaのコピペ
異なるArea.Count間 のコピペ
コピー 又は、ペースト 最中のExcel操作
上記の条件は可能な組み合わせならば複数同時に発生することあり
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。