0

この関数は、Word マクロ内で使用してすべての画像を 9.3cm に縮小すると機能します。

Sub ShrinkWordImages()
Dim iShp As InlineShape

For Each iShp In ActiveDocument.InlineShapes
    iShp.LockAspectRatio = msoTrue
    iShp.Width = CentimetersToPoints(9.3)
Next iShp

End Sub

しかし、PowerPoint マクロ内から Word 文書を参照して実行しようとすると (すべての参照が適切に配置されている)、Word 文書内の画像が消えてしまいます。パワーポイントからこれを使用しますが、唯一の違いは次のとおりです。

For Each iShp In wrdDoc.InlineShapes

wrdDoc が適切に宣言および設定されている場所。

マクロの終了後、Powerpoint もクラッシュします。iShp をバリアントに変更しようとしましたが、役に立ちませんでした。

編集:だから、私は CentimetersToPoints(9.3) がパワーポイントで 0 を返しているのに対し、Word では 263 程度を返していることを確認しました。それを今調べています。

4

2 に答える 2

1

CentimetersToPointあなたの状況で呼び出す PowerPointのようなものはありません。ディメンションを取得するには、Word オブジェクト変数を参照する必要があります。多分このように:

Sub CentimetersTo_Word()

    Dim WRD As Object
    Set WRD = CreateObject("Word.Application")

    Debug.Print WRD.centimeterstopoints(10)

End Sub

そのため、前に Word アプリケーションの参照を追加するだけです。CentimetersToPoint

于 2013-04-16T12:59:30.633 に答える
0

独自のメソッドを作成しただけで、うまくいきました。

Function CmToPt(pt As Single) As Single
CmToPt = pt * 28.35
End Function

通常のものが機能しなかった理由はわかりませんが、これでうまくいきました。

于 2013-04-16T12:57:36.057 に答える