Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
すべての条件付き書式設定規則をワークシートに印刷 書式の取得
投稿日時: 20/01/08 22:18:47
投稿者: kosanlove

Excelのバージョンは Office365です。
   
どなたか解決方法をご教示ください。
よろしくお願いいたします。
 
他者が作成したファイルで多数のセルへ条件付き書式設定を設定してあり
 
把握のためにすべての条件付き書式設定規則をワークシートに印刷したいと検索しました。
下記のサイトにVBAでワークシートに印刷が可能というものを見つけました。
 
■すべての条件付き書式設定規則をワークシートに印刷する
https://www.extendoffice.com/ja/documents/excel/4805-excel-print-all-conditional-formatting-rules.html#a1
 

Sub M_snb()
Dim xRg As Range, xCell As Range
Dim xFormat As Object
Dim xFmStr, xFmAddress As String
Dim xDic As New Dictionary
Dim xSpArr, xOperatorArr
On Error Resume Next
Set xRg = ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions)
If xRg Is Nothing Then Exit Sub
xDic.Item("Title") = "Type|Typename|Range|StopIfTrue|Operator|Formula1|Formula2|Formula3"
If xSpArr.Count = 0 Then
xSpArr = Split("Cell Value|Expression|Color Scale|DataBar|Top 10|Icon Sets||Unique Values|Text|Blanks|Time Period|Above Average||No Blanks||Errors|No Errors|||||", "|")
xOperatorArr = Split("xlBetween|xlNotBetween|xlEqual|xlNotEqual|xlGreater|xlLess|xlGreaterEqual|xlLessEqual", "|")
End If
For Each xCell In xRg
Set xFormat = xCell.FormatConditions(1)
xFmAddress = xFormat.AppliesTo.Address
If Not xDic.Exists(xFmAddress) Then
xDic.Item(xFmAddress) = xFormat.Type & "|" & xSpArr(xFormat.Type - 1) & "|" & xFmAddress & "|" & xFormat.StopIfTrue
If Not IsEmpty(xFormat.Operator) Then
xDic.Item(xFmAddress) = xDic.Item(xFmAddress) & "|" & xOperatorArr(xFormat.Operator - 1)
End If
If Not IsEmpty(xFormat.Formula1) Then
xDic.Item(xFmAddress) = xDic.Item(xFmAddress) & "|'" & xFormat.Formula1
End If
End If
Next
If ActiveWorkbook.Worksheets("FmCondictionList") Is Nothing Then
Sheets.Add.Name = "FmCondictionList"
End If
Sheets("FmCondictionList").Cells(1).Resize(xDic.Count) = Application.Transpose(xDic.items)
Sheets("FmCondictionList").Columns(1).TextToColumns , , , , 0, 0, 0, 0, -1, "|"
End Sub

 
ツール→参照設定のダイアログボックスで Microsoft Scripting Runtime オプションをクリック
 
手順どおりに進めました 書き出されたシート【FmCondictionList】の内容は
Type Typename Range StopIfTrue Operator Formula1 Formula2 Formula3
と 条件の取得はできたようですが… 書式の取得ができていません。
 
別のサイトで下記を見つけました。
■セルの条件付き書式を取得する 
https://www.tipsfound.com/vba/07019
 
その中に下記の表記がありました。
 
これらを上記の表記のどこにどう追記すれば
シート【FmCondictionList】の Formula3 の後ろに書式が書き出せるのでしょうか?
また、表示形式については下記には記載がないようです
その点もアドバイス頂ければ幸いです。
 
' 書式の取得
Dim bs As Borders
Dim f As Font
Dim i As Interior
Set bs = fc.Borders ' 罫線
Set f = fc.Font     ' フォント
Set i = fc.Interior ' 背景

 
 
よろしくお願いいたします。
 
 

回答
投稿日時: 20/01/08 23:13:00
投稿者: simple

https://www.moug.net/faq/kiyaku.html

掲示板ご利用上のお願い さんの引用:
| 禁止事項
コード制作依頼
「●●●を実行するようなマクロを作りたいのですが」
「●●●をする方法を教えてください」といった、コード制作依頼ともとれるような質問はおやめください。

回答
投稿日時: 20/01/08 23:35:11
投稿者: simple

補足します。
 
二つ目のサイト記事で書式が取得できるようですから、
それをシートにどのように書き出すかは、あなたがトライすべき課題であって、
他人に丸投げすることではないと思います。
トライした上で、不明点、詰まったところがでてきたら、
具体的にそれを質問するようにして下さい。

投稿日時: 20/01/09 10:07:03
投稿者: kosanlove

申し訳ございませんでした。
もう少し勉強してから、困った時に新ためて投稿させて頂きます。

回答
投稿日時: 20/01/09 10:15:19
投稿者: simple

一言で書式と言っても範囲は広いです。
しかも、全部のプロパティといった指定はできないので、列挙する必要があります。
すべてを列挙するのは無駄ですし、実際に設定されているものに絞って表示するのがよいでしょう。
内容に依りますね。
また、表示セルに、その書式を設定することも可能は可能ですが、労力がかかります。
 
ところで、「ルールの管理」で条件付き書式の一覧が見られますね。(ワークシート単位ですが)
これでは役に立たないのですか?そう言う目的のための機能なんですがね。
書式はVisual化されているし、プロパティを文字で列挙するより直感的です。

投稿日時: 20/01/09 17:21:46
投稿者: kosanlove

「条件付き書式ルールの管理」では
ウィンドウのサイズも変更(広げられず)できず、項目欄も見切れていて
数式が長かったりする場合
結局は【ルールの編集】をしなければ、条件や書式等内容の確認ができない。
 
ウィンドウのサイズも変更できれば画面のハードコピー等で対処も可能ですが…。
 
 
自分で作成したデータあれば、どう設定したか等
ある程度記憶にもあるので対処できますが…
他者作成のデータ(他者が退職等でいない)場合は
 
書き出す方法がないものか?ということで調べていた状況でした。