2009-08-10 2 views
0

単語の文書からすべての見出しのフォント名とサイズを取得しようとしています。どのようにそれを得るための任意のアイデア?Word文書内のすべての見出しのフォント

+0

Header1/Heading2/Heading3のように、Headers/FootersやHeadingsのように "Headers"の見出しを意味しますか?あなたはこれらの配列を作って再利用したいですか?または、ドキュメントのフォント/サイズのレポートが必要なだけですか?このvbaを、ドキュメントを管理しないさまざまなドキュメントや、マシン上にあるものだけを再利用したいのですが、それらはたくさんありますか? – Anthony

+0

私はHeading1、Heading2のような見出しが欲しいです。レポートのためにそれらを取得し、見出しの標準形式と比較することが可能であれば、それを検索したいと思います。 – Vaibhav

+0

Hrm - それは難しくなります。文書内の実際のテキストは、デフォルトのヘッダー形式を簡単に上書きする可能性があります。 Header1のデフォルトのフォントとサイズ、または特定のドキュメントで実際に見えるものを探していますか? – anschauung

答えて

1

基本的な構造は以下のようになります:

ます。Public Sub ShowFontAndSize()段落 点心LINETEXTとして 薄暗い単一行文字列として

For Each singleLine In ActiveDocument.Paragraphs 
Debug.Print singleLine.Range.Font.Name 
Debug.Print singleLine.Range.Font.Size 
Next singleLine 

End Subの

同じ行に異なるフォントとサイズがある場合、キャッチすることはできません。それが可能であれば、段落ループの内側にFor Each singleCharacter In singleLine.Range.Charactersのループを追加する必要があります。

編集:これを収集したら、このデータをどうすればよいかという問題があります。配列を構築するのは当然のようですが、.append()のような基本的なメソッドでは配列全体を再描画する必要があるため、VBA配列は境界線が無用です。あなたがその道を下りたい場合は、詳細についてはhttp://www.cpearson.com/excel/VBAArrays.htmを参照してください。

+0

各文字をループせずに文書で使用されているすべてのフォントとフォントサイズのペアを単純に返すことができる同様のループはありますか?私は、このメタ情報が手紙なしでそれを取り出すことができるような方法で保存されると思います。そのように返すことができるのであれば、最小のフォントサイズがヘッダーではなく、他のすべてのヘッダーがヘッダーであると推測することができますか?大きな推測ですが、ほとんどの状況ではかなり安全です。 – Anthony

+0

あなたの答えに早く触れました。しかし、一般的な作業環境では残念ながら役に立たない。 Wordは、HeadingStylesコレクションを使用してすべてのフォント/サイズ/などを格納しようとしますが、最も細心のあるユーザーだけがその機能を一貫して使用します。 Word 2003とそれ以前のバージョンでは、ヘッダーを使用するよりもオーバーライドする方が簡単なので、他のすべてのユーザーがオーバーライドを使用します。 – anschauung

0

最も単純な解決策は、Wordでドキュメントを開き、オブジェクトモデルにアクセスすることです。これは従来VBAを使用して行われていましたが、VSTO(Office用Visual Studio Tools)を使用して.NET(例:C#og VB.NET)を使用することもできます。個人的に私はVBAよりはるかに優れた言語のC#/ VB.NETを見つけました。

オブジェクトモデルにアクセスできたら、ドキュメント内の段落を列挙する必要があります。見出し(おそらくスタイルで定義されている)を見つけたら、見出しの書式を理解する必要があります。