word2003(windows2000)で使っていたマクロを、人に頼まれてその人の2007のword(windowsXP)に入れたのですがエラーが出て動かないそうです。
マクロは以下のページにあったものの改造で、どこを直したらよいのかわかりません。
http://oshiete.goo.ne.jp/qa/2344318.html
答えでなく、ヒントでも良いのでどなたか教えてください。
h = Selection.ShapeRange.Heightという行で、「エラー5 プロシージャの呼び出し、または引数が不正です」というようなエラーが出るそうです。
2003ではエラーは出ず、選択されている画像の高さがhに入ります。
よろしくお願いします。
-----------------------------------
Public Sub ChgPest()
'選択した画像をクリップボードの中身と入れ替えてemfで貼り付ける
Dim T, L, h, W, cl, cr, ct, cb As Integer
Dim FName As String
Dim MyShape As Shape
Dim fd As FileDialog
Dim clp As Integer
Application.ScreenUpdating = False
T = Selection.ShapeRange.Top
L = Selection.ShapeRange.Left
h = Selection.ShapeRange.Height ←●デバッグするとここが黄色になっている
W = Selection.ShapeRange.Width
posi = Selection.ShapeRange.RelativeVerticalPosition
cl = Selection.ShapeRange.PictureFormat.CropLeft
cr = Selection.ShapeRange.PictureFormat.CropRight
ct = Selection.ShapeRange.PictureFormat.CropTop
cb = Selection.ShapeRange.PictureFormat.CropBottom
Set myrange = Selection.Range
Selection.Delete
Selection.PasteSpecial datatype:=wdPasteEnhancedMetafile 'EMFでペースト
clp = ActiveDocument.Shapes.Count 'すべてのshapeを数える
Set MyShape = ActiveDocument.Shapes(clp) '最後にペーストしたshape
ActiveDocument.Shapes(clp).LockAnchor = False 'アンカーを固定しない
ActiveDocument.Shapes(clp).WrapFormat.Type = 3
MyShape.Select
With Selection.ShapeRange.PictureFormat
.CropLeft = cl
.CropRight = cr
.CropTop = ct
.CropBottom = cb
End With
Selection.ShapeRange.RelativeVerticalPosition = posi
Selection.ShapeRange.Top = T
Selection.ShapeRange.Left = L
Selection.ShapeRange.Height = h
Selection.ShapeRange.Width = W
Selection.ShapeRange.ZOrder msoSendToBack
Application.ScreenUpdating = True
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
私は、Word2007以降を未だに使ったことがないので、回答を
しないでおこうと思ったのですが、他の回答が付かないみたい
なので、簡単なアドバイスだけをしますね。
Word2007以降は、オートシェイプと画像などの図との関係が
少し変わってきていますので、マクロ記録を取った場合でも、
一部違う項目が追加されていることがあります。
今回の場合も、もしかしたらWord2007にて追加されたものが
影響しているのかもしれませんね。
http://msdn.microsoft.com/en-us/library/bb257205 …
http://msdn.microsoft.com/en-us/library/bb257749 …
私が回答をした過去ログですが、質問者の補足にある内容が
少しは参考になるかもしれませんね。(No.4の回答への補足)
http://oshiete.goo.ne.jp/qa/6834777.html
この回答への補足
自己解決しました。
あれからやっと2010を入手したので見てみたところ、使っていた方のWordで2003では画像を貼りつけた時の既定値を「前面」にしていたところを、2007ではその設定をせずに、「行内」にして使っていたためと判明しました…。バージョンの違いではなかったようです。お騒がせしました。
またそれとは別な問題なのですが、
「clp = ActiveDocument.Shapes.Count 'すべてのshapeを数える
Set MyShape = ActiveDocument.Shapes(clp) '最後にペーストしたshape」
の部分がうまく働かなくなっていました。2003では図を貼り付けるとそれにshapesの中で一番新しい数字が振られていたのですが、2010ではそうとは限らないようで、別の図が動いてしまう事態に陥りました。こちらの原因がバージョンによるものかどうかわかりませんが、今までの図には名前をつけて区別してから貼り付けることで解決しました。
ありがとうございます。
教えていただいたページを見たのですが、.Heightプロパティ自体は「Returns or sets the height of the specified shape range. Read/write Single.」とのことでそのまま残っているようです。
エラーの内容から.Heightの取得に失敗してそうなんですが、それが2007の影響なのかなと思います。
(.HeightRelativeがアヤシイ?)
私も手元に2007がないもので、試行錯誤が出来ず未だ解決しておりません…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
実行時エラー3001「引数が間違...
-
VBAがブレークモードになっ...
-
EXCEL VBAマクロ中断でデバッグ...
-
なぜこんな初歩的なVBAのIf文で...
-
VBS実行時エラー オブジェクト...
-
Outlook.ApplicationをCreateOb...
-
ExcelVBA Range クラスの Page...
-
VB6+SQL サーバー 2000 で 実行...
-
OLEDB.NETで接続できない
-
VBSで変数の宣言はできないので...
-
EXCEL/VBAで、自分のPCだけエラ...
-
VBAでのエラー
-
ExcelのVBAのAutoFillの使い方...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
[Delphi] データセットは閉じて...
-
Invalid procedure call or arg...
-
DataGridView からの値取得に関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
マクロについて教えてください...
-
VBAでのエラー
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
なぜこんな初歩的なVBAのIf文で...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
EXCEL VBAマクロ中断でデバッグ...
-
Application.ActiveInspectorで...
-
ADODB.Streamを使用してUTF-8を...
-
Outlook.ApplicationをCreateOb...
-
VBAのコードがエラーになっ...
-
EXCEL/VBAで、自分のPCだけエラ...
-
VBAのエラー発生場所をメッセー...
-
ASP.NET OleDbConnectionが定義...
おすすめ情報