オープンしているWORDファイルで使用されているフォント名とサイズを全て一覧表示するVBAを希望しています。 次のような表示が欲しいのですが、よろしくお願いします。
MSP ゴシック 10
MSP ゴシック 12
Arial 14
Times New Roman 10
----------------------------
この質問に対してn-jun さんより以下のご回答を頂きました。サンプルを作りテストしたところWOOD2007で希望通りの結果が得られましたのでベストアンサーとさせてもらいました。 しかし、その後大きなWORDファイルに適用したところ、結果が表示されません。 エラーがでれば問題解決につながるのでしょうが、何らエラーメッセージが出ません。 ご指導いただければありがたいです。
--------------------------------
Word2002で検証しました。。。
Sub try()
Dim myDic As Object
Dim v, vv
Dim i As Integer
Set myDic = CreateObject("Scripting.Dictionary")
i = 0
ReDim vv(i)
For Each v In ActiveDocument.Range.Characters
If Len(v) > 0 Then
If Not myDic.Exists(v.Font.Name & " " & v.Font.Size) Then
myDic(v.Font.Name & " " & v.Font.Size) = ""
vv(i) = v.Font.Name & " " & v.Font.Size
i = i + 1: ReDim Preserve vv(i)
End If
End If
Next
MsgBox Join(vv, vbCrLf)
Set myDic = Nothing
End Sub
No.2ベストアンサー
- 回答日時:
No.1です。
WordVBAは殆どやったことはないのですが、
Excelなんかでもデータ数が増えてくると
動きが悪くなるケースもあります。
今回のコードは1文字ずつチェックしていくため
ページ数増加による文字数が増えているのが
影響してくるのではないかと思われます。
エラーが出ていないとの事ですから
Dim i As Integer
を
Dim i As Long
に変更するとかも違うでしょうし。。。。
ファイルを分割して調べるなどしかないのかな?
No.1
- 回答日時:
例えば大きなワードファイルの半分とかならどうなのかとか、
大きなワードファイルはコードを記載したものとは
別のドキュメントなのかとか、
色々条件になる部分がありそうですけど・・・
例えばコードを記載したものとは
別のドキュメントであれば、
For Each v In ActiveDocument.Range.Characters
を
For Each v In Documents("abc.doc").Range.Characters
(adc.docと言うドキュメントで既に開いている場合)
にしてみるとかかな?
あとはその大きなワードファイルが
本当に大きすぎるとかなら、
そのファイルで検証しないと難しいかも。
この回答への補足
n-jun さん
ご返事ありがとうございます。
最後のファイル名を入れる方法は試しましたが、今までと変わりませんでした。
テストしたファイルは91ページのA4ファイルです。 10ページまでのファイル、20ぺージまでのファイル、30ページまでのファイル、40ページまでのファイルは正しく結果が表示されました。しかし、50ページまでのファイルで結果表示が出なくなりました。
上記のファイルは殆どが表の構成になっており、その中には200ほどの図が入っており、また多くのハイパーリンクが設定されております。
ファイルが大きくなるだけで結果が違うようなことがVBAでは良くあることなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
ドラッグアンドドロップでファ...
-
csvファイルを開かずに文字を検...
-
Javascript で INI の読み書き
-
分割コンパイルの#defineについて
-
テキストファイルの最終行を削...
-
ファイルを記録してあるセクタ...
-
クリップボードから任意のファ...
-
C言語のfopenについて教えてく...
-
Excelファイル、セルの読み書きで
-
バッチで118項目のCSVを処理し...
-
COBOLでの可変長定義について
-
エクセルVBAでフォルダ内の重複...
-
SGファイルって何ですか?
-
BI書、FD書 とは
-
VB.NETによるプロセス間通信
-
WAVファイル同士の結合が可...
-
ハッシュの計算時間について
-
ファイルの結合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dataファイルをxtxファイルにす...
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
ファイル名の先頭にアンダース...
-
大きいサイズのテキストファイ...
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
VBに、Cのincludeのようなもの...
-
CSVファイルへの保存の際、デー...
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
iniファイルに追記がしたいです。
-
ドラッグアンドドロップでファ...
-
SGファイルって何ですか?
-
同じ名前のファイルを作った場...
-
アドレス帳WABファイルをサンダ...
-
ダイアログボックスで複数フォ...
-
「VBScript」ADODB.Streamにお...
おすすめ情報