
大きな表の中に、2,500以上のサイズが違う図が入っています。選択した図を下記のマクロで正方形にしています. 結果的には正常なのですが、実行時間がどんどん増えて、最後尾では8秒ほどかかっています。1つの図を選択しているので、実行時間に差があるとは思えないのですが、仕方のないものなのでしょうか? それとも何か改善箇所があるのでしょうか? OSはWindows10,Wordは2016です。
アドバイスよろしくお願いします。
Sub RESIZE66()
'
Selection.InlineShapes(1).LockAspectRatio = msoFalse
Selection.InlineShapes(1).Height = MillimetersToPoints(66)
Selection.InlineShapes(1).Width = MillimetersToPoints(66)
Selection.InlineShapes(1).LockAspectRatio = msoTrue
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub
No.1ベストアンサー
- 回答日時:
2000以上の変更した情報が、メモリを圧迫しているのかも?
一度にサイズ変更するのはだめですか?
もしくは、ParagraphFormat.Alignmentの部分を実行しない設定に
してみてはいかが。
修正例
Sub RESIZE66改()
'
Dim i As Integer
i = 66 'ここで66㎜の指定をしている
With Selection.InlineShapes(1)
.LockAspectRatio = msoFalse
.Height = MillimetersToPoints(i)
.Width = MillimetersToPoints(i)
.LockAspectRatio = msoTrue
End With
End Sub
一括で設定するマクロもあります。
Sub AllRESIZE66()
' 選択範囲の行内画像をリサイズ
Dim doc
Dim i, j, ISCont As Integer
i = 66
Set doc = ActiveDocument
ISCont = doc.InlineShapes.Count
For j = 1 To ISCont
With Selection.InlineShapes(j)
.LockAspectRatio = msoFalse
.Height = MillimetersToPoints(i)
.Width = MillimetersToPoints(i)
.LockAspectRatio = msoTrue
End With
Next
' 中央揃えを一括で設定
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub
No.2
- 回答日時:
No.1の回答者です。
私が提示したマクロでも結果は同じなのですか?
マクロの回数を減らすなどをしても、結果は同じですか?
AllRESIZE66のマクロは、選択範囲のみにある行内画像をリサイズ
するものなので、全選択しないで、必要な範囲のみ選択して実行
してみてはいかが(リサイズする画像がある範囲のみ)。
マクロの実行回数が減るだけでも、多少は違うかもしれないので。
これでも駄目だと、私には提供するようなスキルがありません。
他の回答が付くのを待つか、新規質問で処理が遅くなる原因を回答
されるのを待ってみてはいかが。
Wordのマクロに関する資料が少なく、処理を早くするものもExcel
ほど多くの資料がありません
enunokokoros様
はい、アドバイス頂いたマクロでも結果は一緒でした。なぜ遅くなるのか理由がわからず問い合わせした次第です。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
ワードマクロで画像を選択する方法
-
マクロ 実行ボタンを押さずに...
-
EXCELのセルへ、デジタル時計を...
-
Excelを開いた時に表示さ...
-
【Excel VBA】エラー番号400
-
エラーになってないのにVBA...
-
複数のシートに対してDo~Loop...
-
エクセルで複数のシートをまと...
-
Excel VBA のdebug(F8キー) が...
-
エクセルのマクロショートカッ...
-
エクセルでマクロ実行中に任意...
-
複数ファイルにある特定のシー...
-
エクセルVBA テキスト読み込み...
-
エクセル グラフの軸の最小値最...
-
秀丸エディタに検索履歴を記憶...
-
パワーポイントで、スライドご...
-
TeraTermのマクロについて
-
Excel マクロの自動実行と編集作業
-
エクセルのマクロ機能で前のシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
EXCELのセルへ、デジタル時計を...
-
複数ファイルにある特定のシー...
-
エクセル グラフの軸の最小値最...
-
Excel VBA のdebug(F8キー) が...
-
エラーになってないのにVBA...
-
Wordの画面を左右にスクロール...
-
EXCEL 複数のシートの同一の位...
-
Excelを開いた時に表示さ...
-
エクセルのマクロ機能で前のシ...
-
エクセルで複数のシートをまと...
-
エクセルでマクロ実行中に任意...
-
ワードからエクセルへ貼り付け...
-
VBAでEXCELに埋め込んだPDFを開...
-
Wordで「原稿用紙○枚」を換算す...
-
Excelマクロでオプションボタン...
-
マクロを実行した日付をセルに...
-
TeraTermのマクロについて
-
Accessのクエリを実行するショ...
おすすめ情報
アドバイスありがとうございます。
メモリは8GBにしており、WORDファイルサイズは418MBです。タスクマネージャーで43%の使用率ですので、メモリーの問題ではないように思えます。
ご提案頂いたParagraphFormat.Alignmentの部分を実行しない設定にしましたが、結果は同じ状況でした。
すべての図を66mmにするのではないため、一度にサイズ変更にすることは出来ず、選択図ごとに修正しています。
最初の図を選択した場合には瞬時サイズ変更できますが、最後に位置する図を選択した場合には8秒かかっております。 諦めるしかないのでしょうか?