2016-05-29 5 views
0

したがって、MS Publisherには1000ページのドキュメントがあります。問題は、その中にあるすべてのTextFrameのサイズを変更する必要があり、1ページあたり約4個のTextFrameがあることです。以前はマクロを扱ったことがありませんでしたが、CとPythonで少しプログラミングしていましたので、プログラミングの経験があります。このような私のマクロルックス:MS Publisherでのマクロの問題

Sub Resize_Textbox() 
Dim pubPage As Page 
Dim pubShape As Shape 
For Each pubPage In ActiveDocument.Pages 
    For Each pubShape In pubPage.Shapes 
     If pubShape.Type = pbTextFrame Then 
      pubShape.TextFrame.Height = "21.5 cm" 
      If pubShape.TextFrame.Width = "18 cm" Then 
       pubShape.TextFrame.Width = "12.6 cm" 
      End If 
      If pubShape.TextFrame.Width = "8.75 cm" Then 
       pubShape.TextFrame.Width = "6.3 cm" 
      End If 
     End If 
    Next pubShape 
Next pubPage 
End Sub 

私はマクロのセキュリティをチェックしましたし、すべてのマクロを有効にしているが、私はすべてを保存したが、私はマクロは何も実行しないようにしようとしたときに起こります。今私はコード自体に何か間違っていたかどうかは分かりませんが、それは私にはかなり正しいようです。しかし、私はVBAで実行しようとすると、テキストフレームの高さを変更する行にエラーが表示されることに気づいたので、コードに間違いがあると思います。どんな助けもありがとう!

答えて

0

VBAでは、heightプロパティとwidthプロパティはリテラルcmではなく、CentimetersToPointsを使用して必要な値に変換できます。

pubShape.TextFrame.Height = CentimetersToPoints(21.5) 

「cm」の接尾辞は使用しないでください。 ADDITIONAL \

EDIT:

私は、テストを実行し、違いは、私が宣言された変数で働いていたということで、エラー、あなたが取得を取得できませんでした。あなたのエラーメッセージは通常、その前にset =が必要であるか、またはそこにないものを参照していることを意味します。

(このサンプルでは、​​ページのみ1を行います)、あなたの方法で下記試してみて、それが動作するかどうかを確認: -

Public Sub test() 
Dim pg As Page 
Dim shp As Shape 

Set pg = ThisDocument.Pages(1) 
    For Each shp In pg.Shapes 
     If shp.Type = pbTextFrame Then 
      shp.Height = CentimetersToPoints(5) 
     End If 
    Next 
Set pg = Nothing 

End Sub 
+0

ありがとうございました! 私はcmなしで試してみましたが、マークを付けずにそのまま試してみましたが、何も働かなかったのです。私はまだコンパイルエラーが発生しています。ハイライト行: "メソッドまたはデータメンバーが見つかりません" – Toma

+0

@Toma、私は私の答えをさらに追加しました。 –

0

私は私が間違って何をしたか実現。途中でTextFrameなければ

pubShape.Height = ... 

を:私はちょうどこのようにそれをしなければなりませんでした。