PowerPoint2010のマクロでページ進行表示図形の色を変更する方法

このQ&Aのポイント
  • PowerPoint2010のマクロを使用して、スライドのページ進行表示図形の色を変更する方法について教えてください。
  • パワーポイントのマクロを利用して、スライド内のページ進行表示図形の色を変える方法を教えてください。
  • PowerPoint2010でVBAを使用してスライド内のページ進行表示図形の色を変更する方法についての質問です。
回答を見る
  • ベストアンサー

PowerPoint2010のマクロに関して

現在, パワポのマクロをVBAで作成しているのですが, ネット上でも資料が少なくて困っています。 マクロの内容は、ページ内に 総ページ数から現在のページがどの程度進んでいるかを図で表すようなもの を設置するといったものです。 図は、総ページ3ページなら ■□□ ← 1ページ ■■□ ← 2ページ といった感じです。 現在、四角を配置することまではできたのですが、 その四角の色を変更することができなくて迷っています。 ソースコードは以下のように書いています。 Sub ページ進行表示() Dim PCount Dim Color1, Color2 Color1 = RGB(255, 0, 0) Color2 = RGB(255, 180, 180) ActivePresentation.Slides(1).Select PCount = ActivePresentation.Slides.Count For i = 1 To PCount ActivePresentation.Slides(i).Select For j = 1 To PCount ActivePresentation.Slides.Item(i).Shapes.AddShape(msoShapeRectangle, 10 + (j * 10), 10, 5, 20).Select ActivePresentation.Slides.Item(i).Shapes(i).Fill.ForeColor = Color Next Next End Sub 追加した図形を選択して色を変更する方法を教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

<<ネット上でも資料が少なくて困っています。>> そうだと思いますが、私の場合はすべて「ヘルプ」しか使いません。 いくつか間違いがありましたので以下のように。 Option Explicit Sub ページ進行表示() Dim i As Long, j As Long Dim PCount As Long Dim Color1, Color2 Color1 = RGB(255, 0, 0) Color2 = RGB(255, 180, 180) ActivePresentation.Slides(1).Select PCount = ActivePresentation.Slides.Count For i = 1 To PCount ActivePresentation.Slides(i).Select For j = 1 To PCount ActivePresentation.Slides.Item(i).Shapes.AddShape(msoShapeRectangle, 10 + (j * 10), 10, 5, 20).Select ActivePresentation.Slides(i).Shapes(ActivePresentation.Slides(i).Shapes.Count).Fill.ForeColor.RGB = Color1 Next 'DoEvents: DoEvents Next End Sub

その他の回答 (1)

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

## 余計なお世話なんですが。 私なら四角を使わずにテキストボックスでやってしまいます。 ページ数が多ければ、判断する処理を加えて.Sizeを小さくするだけですむし。 例)適当ですいません。(色も変数にしたほうがいいし、省略できるのも多いんだけど。) Sub ページ進行表示() Dim PCount ActivePresentation.Slides(1).Select PCount = ActivePresentation.Slides.Count For i = 1 To PCount ActivePresentation.Slides(i).Select ActivePresentation.Slides.Item(i).Shapes.AddTextbox(msoTextOrientationHorizontal, 48.125, 485.5, 266.5, 28.875).Select ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters(Start:=1, Length:=0).Select With ActiveWindow.Selection.TextRange .Text = String(i - 1, "■") With .Font .NameAscii = "Arial" .NameFarEast = "MS Pゴシック" .NameOther = "Arial" .Size = 18 .Bold = msoFalse .Italic = msoFalse .Underline = msoFalse .Shadow = msoFalse .Emboss = msoFalse .BaselineOffset = 0 .AutoRotateNumbers = msoTrue .Color.RGB = RGB(Red:=0, Green:=0, Blue:=153) End With End With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters(Start:=i, Length:=0).Select With ActiveWindow.Selection.TextRange .Text = "■" With .Font .NameAscii = "Arial" .NameFarEast = "MS Pゴシック" .NameOther = "Arial" .Size = 18 .Bold = msoFalse .Italic = msoFalse .Underline = msoFalse .Shadow = msoFalse .Emboss = msoFalse .BaselineOffset = 0 .AutoRotateNumbers = msoTrue .Color.RGB = RGB(Red:=0, Green:=153, Blue:=0) End With End With If i < PCount Then ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters(Start:=i + 1, Length:=0).Select With ActiveWindow.Selection.TextRange .Text = String(PCount - i, "□") With .Font .NameAscii = "Arial" .NameFarEast = "MS Pゴシック" .NameOther = "Arial" .Size = 18 .Bold = msoFalse .Italic = msoFalse .Underline = msoFalse .Shadow = msoFalse .Emboss = msoFalse .BaselineOffset = 0 .AutoRotateNumbers = msoTrue .Color.RGB = RGB(Red:=0, Green:=153, Blue:=0) End With End With End If Next End Sub >パワポのマクロをVBAで作成しているのですが, >ネット上でも資料が少なくて困っています。 私は基本的には、「新しいマクロの記録」ばっかりです。

関連するQ&A

  • PowerPoint2003でノートを一括削除するVBA

    調べたところ Sub test() Dim i As Integer i = ActivePresentation.Slides.Count For i = 1 To i With ActivePresentation.Slides(i).NotesPage .Shapes.Placeholders(2).TextFrame.TextRange = "" End With Next i End Sub   というマクロでいけるそうなのですが、幾つか試すと 「実行時エラー '2147188160(80048240)」': Placeholders(不明なメンバー):範囲外の整数2は次の有効な範囲にありません:1から1へ」 というエラーで停まるものがあります。   これの回避方法をご存知の方がいたら教えてください。

  • パワーポイントVBAでグラフのサイズ・位置を統一

    パワーポイントVBAに貼付けた複数のグラフサイズを統一したいと思っています。 1~20枚目のスライドに、それぞれ2つのグラフが貼付けてあります。 全てのグラフサイズ・位置を統一したいと思い、以下の様なVBAを書いてみました。 ---------- Sub 表サイズの統一() Dim myTop1, myLft1, myHgt1, myWdt1, cnt, i, myTop2, myLft2, myHgt2, myWdt2 With ActivePresentation.Slides(1).Shapes(1) myTop1 = .Top myLft1 = .Left myHgt1 = .Height myWdt1 = .Width End With With ActivePresentation.Slides(1).Shapes(2) myTop2 = .Top myLft2 = .Left myHgt2 = .Height myWdt2 = .Width End With cnt = ActivePresentation.Slides.Count For i = 2 To cnt With ActivePresentation.Slides(i).Shapes(1) .Top = myTop1 .Left = myLft1 .Height = myHgt1 .Width = myWdt1 End With Next For i = 2 To cnt With ActivePresentation.Slides(i).Shapes(2) .Top = myTop2 .Left = myLft2 .Height = myHgt2 .Width = myWdt2 End With Next End Sub ---------- 各スライドにある1つ目のグラフのサイズは統一出来たのですが、2枚目のグラフは何の変化もおきません。 どこが悪いのか、どなたかご教示頂ければ幸いです。 どうぞよろしくお願い致します。

  • vba スライドに図形を挿入し文字を入力するには

    一番最後のスライドに、図形を挿入するところまでは出来たのですが その図形に文字を表示するにはどうすればいいでしょうか? Sub test() Dim myDocument As Variant i = ActivePresentation.Slides.Count Set myDocument = ActivePresentation.Slides(i) myDocument.Shapes.AddShape Type:=msoShapeRectangle, Left:=50, Top:=50, Width:=100, Height:=50 myDocument.Shapes.Title = "a" myDocument.Shapes.Text = "a" End Sub まではできたのですが、 myDocument.Shapes.Title = "a" myDocument.Shapes.Text = "a" がエラーになります。 別に図形ではなくてもテキストボックスが挿入できればそれでいいのですが、 図形の挿入の仕方しかわかりませんでした。

  • マクロが実行しない

     二行三列を一枡として月の勤務割表を作成しています。マクロで同じ事を しているのにMacro1の方が実行しません。お教え願えませんでしょうか。 (尚、図形を枠線上にコピペしています。) Sub Macro1()実行しません。 Dim i As Integer Dim j As Integer For i = 10 To 43 Step 2 For j = 10 To 103 Step 3 Select Case Cells(i, j).Value Case 1: ActiveSheet.Shapes("四角形1").Select Selection.Copy Cells(i + 1, j + 1).Select ActiveSheet.Paste End Select Next Next End Sub Sub Macro2()実行します。 ActiveSheet.Shapes.Range(Array("四角形1")).Select Selection.Copy Range("J11:K11").Select ActiveSheet.Paste End Sub

  • スライド内のオブジェクトを消すマクロ

    PowerPointのVBAマクロで、スライド中にspaceという文字列のみのテキストボックス以外のオブジェクトを消すマクロを以下のように作成したのですが、このマクロを実行しても、いくつかのオブジェクトが残ってしまいます。 Sub foo()  Dim f As Boolean  Dim sl As Slide  Dim sh As Shape   For Each sl In ActivePresentation.Slides    For Each sh In sl.Shapes     If sh.HasTextFrame Then         If sh.TextFrame.TextRange.Text <> "space" Then             sh.Delete         End If     End If    Next   Next End Sub コレクションをFor eachで回しているので、漏れはないはずなのですが、どなたか原因・対策をご教示いただけないでしょうか?

  • 半透明の図形を指定したい

    Win7 Excel2010を使用しています。 沢山の四角があるので、マクロを作ってみましたが、うまくいきません。 お知恵を貸していただきたいと思います。 エクセルのシート状に沢山の□(四角)があり ます。 それぞ れに色々な色が付いていて、半透明になっているものもあります。(50%や60%) 試行錯誤して、なんとか下記のようなマクロで四角は消せたのですが、 一緒に半透明の四角も消されてしまいます。 四角のみ消して、半透明の四角は残したいのです。 半透明 の四角を、消さない方法はどうすればいいのでしょうか? 一応作ってみたマクロを下記に書きました。 Sub 四角を選択しグループ化後削除() Dim sh As Shape For Each sh In ActiveSheet.Shapes If sh.Fill.ForeColor.RGB = RGB(255, 153, 0) Then '薄いオ レンジ sh.Select False End If If sh.Fill.ForeColor.RGB = RGB(192, 192, 192) Then '25%灰色 sh.Select False End If Next Selection.ShapeRange.Group.Select Selection.Delete End Sub よろしくお願いします。

  • 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

  • ShapeのVBAの中での取り扱い

    ShapeのVBAの中での取り扱いに関して、サジェスチョン願います。 Shapeに文字が書き込まれていない段階で、選択して文字を読み込み判定しようとするとエラーとなります。 下記のVBAでは、5番目のShapeが該当します。 このエラーを防ぐためには、On Error Resume Nextが有効ですが、他の方法を探しています。例えば、charactor=trueみたいなもの。 ----- Sub Shapeの調査() Dim nametemp(10) As String Dim temp As Integer Dim i As Integer Dim aaa As Variant 'On Error Resume Next ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 50, 50).Select ActiveSheet.Shapes.AddShape(msoShapeOval, 100, 100, 50, 50).Select ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 150, 150, 50, 50).Select ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200, 200, 50, 50).Select ActiveSheet.Shapes.AddShape(msoShapeOval, 250, 250, 50, 50).Select temp = ActiveSheet.Shapes.Count For i = 1 To temp ActiveSheet.Shapes(i).Select nametemp(i) = ActiveSheet.Shapes(i).Name Next For i = 1 To temp / 2 + 1 '4つのshapeに対し、文字を書き込もうとする ActiveSheet.Shapes(nametemp(i)).Select Selection.Characters.Text = "" Next For i = 1 To temp / 2 '3つに対して、文字を書き込む ActiveSheet.Shapes(nametemp(i)).Select Selection.Characters.Text = "zzzzz" Next For i = 1 To temp ActiveSheet.Shapes(nametemp(i)).Select aaa = Selection.Characters.Text '<--5番目のShapeに対し If aaa = "zzzzz" Then MsgBox (aaa)'<--errorとなる。 Next End Sub

  • マクロ

    宜しくお願いいたします セルを選択するマクロですが、何処か間違っているので 実行すると、K25のみ選択されてしまいます 一行おきに選択したいのですが 以下のマクロです Sub セルの選択2() Dim ColPos As Integer Dim RowPos As Integer For ColPos = 1 To 11 Step 2 For RowPos = 5 To 25 Step 2 Cells(RowPos, ColPos).Select Next Next End Sub

  • WORDマクロエラー

    Wordでテキストボックスをレイアウト枠に変換するマクロを作りました。 簡単なコードだと思うのですが、「オブジェクト変数またはブロック変数が設定されていません」というエラーが出てしまいます。 どこに原因があるのでしょうか? Sub テキストボックス変換() Dim i Dim sp As Shape For i = 1 To ActiveDocument.Shapes.Count If sp.Type = msoTextBox Then sp.ConvertToFrame End If Next End Sub

専門家に質問してみよう