• 締切済み

パワーポイントでトリミングを繰り返し行うマクロ

パワーポイント上で少しずつトリミングを行うマクロを作成したいと思っています。 キー操作の記録でトリミングのコードを確認したところ、以下のようになっていました。 --- ActiveWindow.Selection.ShapeRange.PictureFormat.CropRight = 67.75 変数を1つ定義して、現在のトリミング値を取得し、そこに10ずつさらにトリミングしていくようなマクロを作成しようと思っているのですが、現在のトリミング値を取得するにはどうやればいいのでしょうか。 最後に.Valueをつけて、変数に代入しようとしましたがうまくいきませんでした。 またトリミング後に図の圧縮も行いたいので、圧縮のマクロ記述方法もご教授願います。

みんなの回答

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.2

ごめんなさい。 ゆっくり考えたら簡単なことでした。 最初のコードはなしでお願いします。 Sub test() Dim Shp As Shape For Each Shp In ActiveWindow.Selection.ShapeRange  With Shp   With .PictureFormat    .CropRight = .CropRight + 10   End With  End With Next End Sub Sub test2() Dim myWidth As Single, origWidth As Single With ActiveWindow.Selection.ShapeRange(1)  With .PictureFormat   .CropRight = .CropRight + 10  End With End With End Sub

t29x0479
質問者

お礼

ご教授、ありがとうございます。ものすごく助かりました。 最初のコードでできたので、すでにマクロをキーボードに割り当て済なのですが、新しいコードで再度やってみます。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.1

一時的に複写して右のトリミングを0にして横幅を取得、 それと現在の横幅の差をとれば、現在の右のトリミングだと思います。 ほかにも方法はあるかもしれませんが、 考えるの面倒なので、とりあえず。 ・複数図形を選択していれば、そのすべてに対して トリミングするとき Sub test() Dim Shp As Shape Dim myWidth As Single, origWidth As Single For Each Shp In ActiveWindow.Selection.ShapeRange With Shp myWidth = .Width '現在の横幅 With .Duplicate '複写 .PictureFormat.CropRight = 0 '右のトリミング解除 origWidth = .Width 'もともとの横幅 .Delete 'もういらない、ご苦労様 End With .PictureFormat.CropRight = origWidth - myWidth + 10 End With Next End Sub ・ひとつの選択図形のみ Sub test2() Dim myWidth As Single, origWidth As Single With ActiveWindow.Selection.ShapeRange(1) myWidth = .Width '現在の横幅 With .Duplicate '複写 .PictureFormat.CropRight = 0 '右のトリミング解除 origWidth = .Width 'もともとの横幅 .Delete 'もういらない、ご苦労様 End With .PictureFormat.CropRight = origWidth - myWidth + 10 End With End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • パワーポイント2003のマクロについて

    OSはXP、パワーポイント2003を使っています。スライドが15枚あります。15枚には3パターンで使用するスライドが入っています。パターン1では必要なスライドは8枚、パターン2では10枚、パターン3では13枚です。不要なスライドを削除するために、ネットで調べてマクロによる削除まで出来ました。スライドの削除は途中のスライドを削除したりするので、表題に付与している項目番号が変わります。 表題の項目番号はスライドの一番左上に記載しています。 マクロで文中に「1-(1)」「1-(2)」「1-(3)」「1-(4)」「2-(1)」「2-(2)」「3-(1)」を記載して、指定するスライドの左上に書き込むことは出来るでしょうか。もしくはマクロを実行させるPPTのファイルがあるのですが、これの2枚目以降のスライドに項目番号を記載し、コレをコピー&ペーストで実行することが出来るでしょうか。 教えていただける方、どうぞよろしくお願いします。 スライドを削除するVBAは下記で実行できました。 Sub pt1() ' ' マクロ記録日: 2012/5/28 ユーザー名: Dim myPath As String Dim PPTName As String Dim ThisPresentation As Presentation Dim CurrentPPT As Presentation Set ThisPresentation = ActivePresentation myPath = ActivePresentation.Path '自ファイルのパス取得 If Right$(myPath, 1) <> "\" Then myPath = myPath & "\" End If PPTName = Dir(myPath & "会議資料(原本).ppt") If PPTName <> ThisPresentation.Name Then Set CurrentPPT = Presentations.Open(myPath & PPTName) 'ファイル開く End If ActiveWindow.View.GotoSlide Index:=15 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=14 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=13 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=12 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=11 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=10 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=9 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=8 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=7 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=4 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=3 ActiveWindow.Selection.SlideRange.Delete ActiveWindow.View.GotoSlide Index:=1 ActiveWindow.Selection.SlideRange.Delete MsgBox "作成終了" End Sub

  • パワーポイント オブジェクトへ複数の動作設定を実行させたい

    複数のスライド(フォルダの階層アリ)をリンクして資料を作成しています。 しかし、その資料を閲覧していると、たくさんのパワーポイントファイルが開いたままになり、それの解消策を考えています。 単純にまず2つのファイルの例で考えてみます。 1.Aスライド → Bスライドへ ハイパーリンクで飛びます。 2.Bスライドの最後のページにAスライドへ戻るリンクボタンが あります。 このBスライドのボタンにBスライドの終了と、Aスライドへのリンクを登録したいのです。 通常パワーポイントの「オブジェクトの動作設定」では、1つのことしか選べません。 ですので、マクロでやってみようと思いました。 しかし記録マクロの知識しかなく、2回に分けて記録したマクロを いろいろ編集してみましたが、今度は何も動かなくなります。 最後の黒い画面までいけば終了するのですが、そうでなくリンクして いければと思っています。 マクロで可能でしょうか?他にアイデアなどありましたら、ご指導 アドバイスをどうぞよろしくお願いします。 office2003 winXP HE 資料は最終的にプレゼンテーションパックにてCDにします。 記録マクロ1 Sub 終了() ActiveWindow.Selection.SlideRange.Shapes("AutoShape 26").Select With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseClick) ActivePresentation.Close .SoundEffect.Type = ppSoundNone .AnimateAction = msoTrue End With With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseOver) .Action = ppActionNone .SoundEffect.Type = ppSoundNone .AnimateAction = msoFalse End With End Sub 記録マクロ2 Sub リンク2() ActiveWindow.Selection.SlideRange.Shapes("AutoShape 26").Select With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseClick) .Hyperlink.Address = "D:\スライドA.pps" .SoundEffect.Type = ppSoundNone .AnimateAction = msoTrue End With With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseOver) .Action = ppActionNone .SoundEffect.Type = ppSoundNone .AnimateAction = msoFalse End With End Sub

  • エクセル マクロで画像を指定したコマへ移動する

    よろしくお願いします。 マクロは触ったばかりです。 何度も検索をかけたのですがどうしても うまくヒットさせることが出来ず こちらで相談させて頂くことにしました。 画像を毎回決まった大きさにトリミングし その後 その画像の左端をセルB17に移動させたいのですが マクロの記録で行うと 右へどれくらい、左へどれくらいと 指定されてしまい必ず同じ場所へ移動してくれません。 「その画像の左端をセルB17に移動」 このコードを教えてください。 出来上がっているコードは Selection.ShapeRange.PictureFormat.CropBottom = 224.39 Selection.ShapeRange.PictureFormat.CropTop = 21.6 Selection.ShapeRange.PictureFormat.CropRight = 11.4 Selection.ShapeRange.PictureFormat.CropLeft = 9.6 Selection.ShapeRange.ScaleWidth 0.76, msoFalse, msoScaleFromBottomRight Selection.ShapeRange.ScaleHeight 0.76, msoFalse, msoScaleFromTopLeft End Sub ここまでです。 (右へどれくらい移動というのは 消しました。) よろしくお願いします。

  • エクセルマクロでオブジェクトを選択する方法

    エクセル(2002)を使っています。マクロの記録機能を使って円を描くマクロを作成しました。 Sub Maru(xpos, ypos, hankei) ActiveSheet.Shapes.AddShape(msoShapeOval, xpos, ypos, hankei, hankei).Select Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Solid Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.ForeColor.SchemeColor = 64 Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) End Sub 次にこの円を削除したいと思い、同じようにマクロの記録機能を使ったところ、 Sub Macro3() ActiveSheet.Shapes("Oval 64").Select Selection.Delete End Sub となりました。"Oval 64"はオブジェクトの名前のようですが、名前がわかっていないオブジェクト(但し上記マクロで書いたので場所はわかっている)を選択するにはどうしたらいいでしょうか。

  • Word2007マクロ

    宜しくお願い致します Word2007でこんな事が出来ますか Excel2007で線路を作るマクロを作成しました(本を見て) これをWordでも使用したいのですが、Excelのマクロそのまま WordのVisual Basicに書き込んでもエラーが出て機能しません Excelのマクロは以下です Sub 線路作成() 上端位置 = Selection.Top 左端位置 = Selection.Left  Selection.ShapeRange.Line.Weight = 6# Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Duplicate.Select Selection.ShapeRange.IncrementLeft -18# Selection.ShapeRange.IncrementTop 9.6 Selection.ShapeRange.Line.DashStyle = msoLineDash Selection.ShapeRange.Line.Weight = 4.5 Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.ForeColor.SchemeColor = 9 Selection.ShapeRange.Line.Visible = msoTrue Selection.Top = 上端位置 Selection.Left = 左端位置 End Sub Wordで使えるようにするには、どこを直せばよいでしょうか。

  • Power Point 2007のマクロについて 

     はじめまして  業務効率化のためマクロを使うようになった初心者ユーザーです。  Power point2007を用いてすべてのページの画像を一括でサイズ変更と位置変更を行いたいと思っています。  見よう見まねで下記のようなマクロを組んでみたのですが、  タイトルテキストもサイズ変更されてしまうので除外したいのですが、どのようにすればよろしいでしょうか?  またこのサイズ変更した画像だけを他のpowerpointファイルに画像1枚1ページずつ自動で貼り付けたいのですが、その方法も教えてほしいです。  なお、他のファイルの既存スライドに貼り付けを行おうとしています。  (画像に関しての説明文書が既に記入済み)  お手間を取らせて申し訳ないのですが、迷える子羊に愛の手をお願いいたします。   Public Sub 画像サイズ変更と位置合わせマクロ() Dim i As Long For i = 1 To ActivePresentation.Slides.Count ActiveWindow.View.GotoSlide i ActiveWindow.Selection.SlideRange.Shapes.SelectAll With ActiveWindow.Selection.ShapeRange .Fill.Transparency = 0# .Height = 401# .Width = 687.09 .Left = 20# .Top = 56.62 End With Next End Sub

  • マクロを使ってexcel2007でテキストボックス内をセンタリングしたい

    以前、excel2000でマクロの児童記録で記録し、それを利用して 下のようなマクロを使っていました (列ボックス1は変数) ActiveSheet.Shapes.AddTextbox(msoTextOrientationVerticalFarEast, 列ボックス1, 205 , 15, 105).Select Selection.Characters.Text = 顧客名 With Selection.Characters.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .Orientation = xlVertical .AutoSize = False .AddIndent = False End With Selection.ShapeRange.Fill.Visible = False Selection.ShapeRange.Fill.Solid Selection.ShapeRange.Fill.Transparency = 1# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoFalse Selection.ShapeRange.TextFrame.MarginLeft = 0 Selection.ShapeRange.TextFrame.MarginRight = 0 Selection.ShapeRange.TextFrame.MarginTop = 0 Selection.ShapeRange.TextFrame.MarginBottom = 0 これで問題なく動作していたのですが excel2007で動作させると テキストボックス内が水平方向にセンタリングされていません。 excel2007でテキストボックスをかく記録をしてもマクロには何も残らず 困っています。 excel2007でも、センタリングさせる方法を教えて下さい どうかよろしくお願いします

  • パワーポイントのスライド番号の取得をしたい

    はじめまして パワーポイント2007におきまして、プレゼンテーション実行中に、 マウスにてスライド内のボタンを押すと「現在のページ数+10ページ先のページに飛ぶ」というような動作を行わせようとしています。 http://support.microsoft.com/kb/163194/ja の ActiveWindow.Selection.SlideRange.SlideNumber を利用し、 ======================================================= Sub TenPageGo() PN = ActiveWindow.Selection.SlideRange.SlideNumber GO = PN + 10 SlideShowWindows(Index:=1).View.GotoSlide Index:=GO End Sub ======================================================= といったマクロにて実行を考えましたが、 ActiveWindow.Selection.SlideRange.SlideNumber は、プレゼンテーション中には動作してくれない模様です。 よって、プレゼンテーション中に現在表示中のプ レゼンテーション番号を取得する方法をご教授いただきたくお願い申し上げます。

  • エクセル・マクロでグラフを最背面に移動させたい

    エクセルのグラフを3つピッタリと重ねて表示しています 後ろのグラフを選択する時「最背面に移動」させてますが これをマクロにしたいです とりあえずマクロの記録でしてみたら Sub Macro1() ActiveSheet.ChartObjects("グラフ 7").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select ActiveSheet.ChartObjects("グラフ 5").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select ActiveSheet.ChartObjects("グラフ 2").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select End Sub と出来たのですが、マクロの実行そしてみると3列目の Selection.ShapeRange.ZOrder msoSendToBack の所で、 「実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしてません」 となってしまいます、どうすればよいのでしょう ボタンを押したら最前面のグラフが最背面に移動するようにしたいのですが難しいのでしょうか

  • 画像に名前を付けたい・変更したい

    パワポ2003です。 新規でプレゼンテーションを立ち上げて 外部から持ってきた画像をスライド上に張り付けて マクロの記録を押して、外部画像を動かすと Sub Macro1() ActiveWindow.Selection.Unselect ActiveWindow.Selection.SlideRange.Shapes("Picture 4").Select With ActiveWindow.Selection.ShapeRange .IncrementLeft 22.5 .IncrementTop -372# End With End Sub と記録されたのですが、「Picture 4」の部分を変更することはできますか?

このQ&Aのポイント
  • ネットワークスピードとCPUスピードの関係について説明します
  • CAT 6AのスピードとCPUスピードの関係について説明します
  • CPUが10Gbpsの処理をどの程度まで行えるのかについて説明します
回答を見る

専門家に質問してみよう