dポイントプレゼントキャンペーン実施中!

wordのマクロについて教えて下さい。
クリップボードからワードに画像を貼り付けたいと思っております。
海外のサイトにあった下記マクロを参考にしてみました。
そのマクロでは「メタファイル」として貼り付けしてありますが、
「ビットマップ」で貼り付けしたいので、「wdPasteBitmap」に変えて
作成しましたが、上手く動きませんでした。。
他にどこを変更すれば良いか教えてください。
よろしくお願いいたします。

Sub pasteEnchasaMeta()
Dim PasteObect As Shape
'changed to shape
Dim Count As Integer

Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdFloatOverText, DisplayAsIcon:=False
'Changed Placement for pasting as shape

Count = ActiveDocument.Shapes.Count
Set PasteObect = ActiveDocument.Shapes(Count)

With PasteObect
.LockAspectRatio = msoFalse
'This is required otherwise shape's height will be changed
.Width = CentimetersToPoints(9)
.ConvertToInlineShape
'Converted to inline shape
End With
End Sub

A 回答 (3件)

> ドローソフト(イラストレーター)で描いた図


これだと、インポートされたオブジェクトなのでWordとの相性が悪く、
コピー&貼り付けをするのはお勧めできません。
私は作業経験や検証などをしたことがないのですが、過去の回答などで
閲覧しているとトラブルも多いように思います。

コピーするのではなく、[Office用に保存]をしたものをWordに挿入して、
サイズを変更してはいかが。
https://ameblo.jp/sumitak1329/entry-11475232394. …

挿入後に選択されている画像を縮小するなら、
Sub 画像サイズを指定()
 With Selection.ShapeRange
  .LockAspectRatio = msoFalse
  .Width = CentimetersToPoints(9)
  .ConvertToInlineShape
 End With
End Sub
に質問のマクロを書き換えるだけで済みます。
    • good
    • 0

> Set PasteObect = ActiveDocument.Shapes(Count)


> ”指定したコレクションに対するインデックスが境界を越えています”
このエラーは何で出るのだろうか?

Count = ActiveDocument.Shapes.Count
Set PasteObect = ActiveDocument.Shapes(Count)
この指定で、貼り付けした浮動配置のビットマップが、ファイル内での
最後に挿入したもの(浮動配置の図をすべてカウントしたときの数)で、
最後の順番として認識されることで貼り付けしたものだけを対象にする
設定です。

これがエラーになるということは、カウントした数が実際の図形よりも
多くあると認識されて、処理する対象がないエラーです。
新規文書で画像が一つだけのファイルを用意し、マクロを実行した場合
した場合にもエラーになりますか?(たぶん大丈夫だと思う)

エラーになる文書において、私が認識できないようなものが、図として
カウントされているようなので、それが何かを検証しないと対応方法を
提示できないと思います。
(原因となっている図が、場合によっては対応方法を知らないことも)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ドローソフト(イラストレーター)で描いた図をコピーしてワードにペーストしております。
その際に、サイズも縮小したいので、このマクロを作成してみました。
メタファイルとビットマップでは型が違うのかもしれませんね。

お礼日時:2021/05/15 07:40

マクロを実行する前に、通常の[形式を選択して貼り付け]をしたとき、


ビットマップが貼り付け形式としてありますか?

例えばコピーしたものがExcelのグラフだった場合、貼り付け形式には
画像の種類が表示されます。
これが、エクスプローラーで画像ファイルを選択してコピーしただけの
場合は、画像の種類は表示されません。この場合はマクロを実行しても
貼り付けられないエラーになるだけです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
貼り付けはできるのですが、
Set PasteObect = ActiveDocument.Shapes(Count)
のところで、”指定したコレクションに対するインデックスが境界を越えています” というエラーが返されてしまいます。

お礼日時:2021/05/14 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています