2015-12-02 1 views
0

Я сделал макрос VBA для MS powerpoint 2011 на Mac. Я действительно не в VBA, но мне удалось каким-то образом позволить 12 формам отображаться на экране с текстом, но я в основном взял это здесь как отправную точку. Мои модификации, вероятно, не лучший способ сделать это, но он выполняет эту работу.VBA удаляет определенные фигуры

Но теперь я хотел бы создать еще один макрос, который позволяет формам, названным от Dim Shp As Shape, до Dim Shp11 As Shape, исчезнуть или удалить после выполнения макроса. Я много пробовал, но всегда получал ошибки. Некоторая помощь здесь очень ценится.

Мне также не удалось выяснить, как я могу сделать надстройку из макроса в MS PowerPoint 2011 для Mac. У кого-то есть идея?

Большое вам спасибо!

Разъяснение:

Идея этого макроса, чтобы отобразить значения цвета, которые должны быть использованы в РРТ, и я думал, что это может быть приятно переключать эти цвета и выключаться - независимо от того, в котором вы находитесь.

Итак, снова: Код выглядит ужасно, но я не большой программист;)

Sub show_ci_colors() 

'PURPOSE:Create a Text Box Shape and Reformat it 
'SOURCE: www.TheSpreadsheetGuru.com 

Dim Sld As Slide 
Dim Shp As Shape 
Dim Shp1 As Shape 
Dim Shp2 As Shape 
Dim Shp3 As Shape 
Dim Shp4 As Shape 
Dim Shp5 As Shape 
Dim Shp6 As Shape 
Dim Shp7 As Shape 
Dim Shp8 As Shape 
Dim Shp9 As Shape 
Dim Shp10 As Shape 
Dim Shp11 As Shape 

'ERROR HANDLING 
If ActivePresentation.Slides.Count = 0 Then 
    MsgBox "You do not have any slides in your PowerPoint project." 
    Exit Sub 
End If 

Set Sld = Application.ActiveWindow.View.Slide 

'Create shape with Specified Dimensions and Slide Position 
    Set Shp = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=20, Width:=60, Height:=40) 

    Set Shp1 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=62, Width:=60, Height:=40) 

    Set Shp2 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=104, Width:=60, Height:=40) 

    Set Shp3 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=146, Width:=60, Height:=40) 

    Set Shp4 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=186, Width:=60, Height:=40) 

    Set Shp5 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=230, Width:=60, Height:=40) 

    Set Shp6 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=272, Width:=60, Height:=40) 

    Set Shp7 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=314, Width:=60, Height:=40) 

    Set Shp8 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=356, Width:=60, Height:=40) 

    Set Shp9 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=398, Width:=60, Height:=40) 

    Set Shp10 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=440, Width:=60, Height:=40) 

    Set Shp11 = Sld.Shapes.AddShape(Type:=msoShapeRectangle, _ 
    Left:=-80, Top:=482, Width:=60, Height:=40) 



'FORMAT SHAPE 
'Shape Name 
    Shp.Name = "My Header" 

'No Shape Border 
    Shp.Line.Visible = msoFalse 
    Shp.Shadow.Visible = msoFalse 
    Shp1.Line.Visible = msoFalse 
    Shp1.Shadow.Visible = msoFalse 
    Shp2.Line.Visible = msoFalse 
    Shp2.Shadow.Visible = msoFalse 
    Shp3.Line.Visible = msoFalse 
    Shp3.Shadow.Visible = msoFalse 
    Shp4.Line.Visible = msoFalse 
    Shp4.Shadow.Visible = msoFalse 
    Shp5.Line.Visible = msoFalse 
    Shp5.Shadow.Visible = msoFalse 
    Shp6.Line.Visible = msoFalse 
    Shp6.Shadow.Visible = msoFalse 
    Shp7.Line.Visible = msoFalse 
    Shp7.Shadow.Visible = msoFalse 
    Shp8.Line.Visible = msoFalse 
    Shp8.Shadow.Visible = msoFalse 
    Shp9.Line.Visible = msoFalse 
    Shp9.Shadow.Visible = msoFalse 
    Shp10.Line.Visible = msoFalse 
    Shp10.Shadow.Visible = msoFalse 
    Shp11.Line.Visible = msoFalse 
    Shp11.Shadow.Visible = msoFalse 

'Shape Fill Color 
    Shp.Fill.ForeColor.RGB = RGB(4, 110, 151)     'BLUE 700 
    Shp.Fill.BackColor.RGB = RGB(4, 110, 151)     'BLUE 700 

    Shp1.Fill.ForeColor.RGB = RGB(6, 166, 227)     'BLUE 300 
    Shp1.Fill.BackColor.RGB = RGB(6, 166, 227)     'BLUE 300 

    Shp2.Fill.ForeColor.RGB = RGB(133, 199, 226)    'BLUE 100 
    Shp2.Fill.BackColor.RGB = RGB(133, 199, 226)    'BLUE 100 

    Shp3.Fill.ForeColor.RGB = RGB(23, 152, 131)     'GREEN 
    Shp3.Fill.BackColor.RGB = RGB(23, 152, 131)     'GREEN 

    Shp4.Fill.ForeColor.RGB = RGB(254, 201, 5)      'YELLOW 
    Shp4.Fill.BackColor.RGB = RGB(254, 201, 5)      'YELLOW 

    Shp5.Fill.ForeColor.RGB = RGB(189, 57, 47) 'RED 700 
    Shp5.Fill.BackColor.RGB = RGB(189, 57, 47) 'RED 700 

    Shp6.Fill.ForeColor.RGB = RGB(225, 92, 80) 'RED 300 
    Shp6.Fill.BackColor.RGB = RGB(225, 92, 80) 'RED 300 

    Shp7.Fill.ForeColor.RGB = RGB(237, 140, 52) 'ORANGE 
    Shp7.Fill.BackColor.RGB = RGB(237, 140, 52) 'ORANGE 

    Shp8.Fill.ForeColor.RGB = RGB(64, 64, 64) 'GREY 700 
    Shp8.Fill.BackColor.RGB = RGB(64, 64, 64) 'GREY 700 

    Shp9.Fill.ForeColor.RGB = RGB(84, 84, 84) 'GREY 600 
    Shp9.Fill.BackColor.RGB = RGB(84, 84, 84) 'GREY 600 

    Shp10.Fill.ForeColor.RGB = RGB(189, 189, 198) 'GREY 300 
    Shp10.Fill.BackColor.RGB = RGB(189, 189, 198) 'GREY 300 

    Shp10.Fill.ForeColor.RGB = RGB(189, 189, 198) 'GREY 300 
    Shp10.Fill.BackColor.RGB = RGB(189, 189, 198) 'GREY 300 

    Shp11.Fill.ForeColor.RGB = RGB(238, 238, 238) 'GREY 200 
    Shp11.Fill.BackColor.RGB = RGB(238, 238, 238) 'GREY 200 


'Shape Text Color 
    Shp.TextFrame.TextRange.Font.Color.RGB = RGB(255, 255, 255) 
    Shp11.TextFrame.TextRange.Font.Color.RGB = RGB(64, 65, 65) 

'Text inside Shape 
    Shp.TextFrame.TextRange.Characters.Text = "Blue 700" & Chr(10) & "4/110/151" 
    Shp1.TextFrame.TextRange.Characters.Text = "Blue 300" & Chr(10) & "6/166/227" 
    Shp2.TextFrame.TextRange.Characters.Text = "Blue 100 " & Chr(10) & "133/199/226" 
    Shp3.TextFrame.TextRange.Characters.Text = "Green" & Chr(10) & "23/152 /131" 
    Shp4.TextFrame.TextRange.Characters.Text = "Yellow" & Chr(10) & "254/201/5" 
    Shp5.TextFrame.TextRange.Characters.Text = "Red 700" & Chr(10) & "189/57/47" 
    Shp6.TextFrame.TextRange.Characters.Text = "Red 300" & Chr(10) & "225/92/80" 
    Shp7.TextFrame.TextRange.Characters.Text = "Orange" & Chr(10) & "237/140 52" 
    Shp8.TextFrame.TextRange.Characters.Text = "Grey 700" & Chr(10) & "64/65/65" 
    Shp9.TextFrame.TextRange.Characters.Text = "Grey 600" & Chr(10) & "84/84/84" 
    Shp10.TextFrame.TextRange.Characters.Text = "Grey 300" & Chr(10) & "189/189/189" 
    Shp11.TextFrame.TextRange.Characters.Text = "Grey 200" & Chr(10) & "238/238/238" 


'Center Align Text 
    Shp.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp1.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp2.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp3.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp4.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp5.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp6.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp7.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp8.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp9.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp10.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 
    Shp11.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = msoAlignCenter 

'Vertically Align Text to Middle 
    'Shp.TextFrame.VerticalAnchor = msoAnchorMiddle 

'Adjust Font Size 
    Shp.TextFrame.TextRange.Font.Size = 8 
    Shp1.TextFrame.TextRange.Font.Size = 8 
    Shp2.TextFrame.TextRange.Font.Size = 8 
    Shp3.TextFrame.TextRange.Font.Size = 8 
    Shp4.TextFrame.TextRange.Font.Size = 8 
    Shp5.TextFrame.TextRange.Font.Size = 8 
    Shp6.TextFrame.TextRange.Font.Size = 8 
    Shp7.TextFrame.TextRange.Font.Size = 8 
    Shp8.TextFrame.TextRange.Font.Size = 8 
    Shp9.TextFrame.TextRange.Font.Size = 8 
    Shp10.TextFrame.TextRange.Font.Size = 8 
    Shp11.TextFrame.TextRange.Font.Size = 8 


'FONT STYLE DELETED 
'Adjust Font Style 
' Shp.TextFrame.TextRange.Font.Name = "Verdana"L 

End Sub 

ответ

0

Для удаления фигур в коллекции, вы должны считать в обратном порядке, так этот пример показывает, как удалить все формы с горкой 1 активной презентации:

Dim iCounter As Integer 
For iCounter = ActivePresentation.Slides(1).Shapes.Count to 1 Step -1 
    ActivePresentation.Slides(1).Shapes(iCounter).Delete 
Next 

Вы, конечно, можете добавить проверку, чтобы решить, какой тип/название формы должен быть удален.

Далее, если вы хотите использовать макрос в надстройки в PowerPoint: Mac 2011, сохранить его в виде файла .ppam, а затем загрузить его с помощью Инструменты/Add-Ins ... Вы могли бы также хочу добавить меню, чтобы иметь возможность получить доступ к функциям вашего надстройке, и вы должны будете использовать CommandBars для этого на PowerPoint: Mac 2011 Это поможет вам начать работу:

Dim oMenuBar 
Dim oMenu As CommandBarPopup 
Dim oCtrl As CommandBarControl 
Dim iTools As Integer 

' Get the position of the native PowerPoint tools menu (English only) 
iTools = Application.CommandBars.ActiveMenuBar.Controls("Tools").Index 

' Create a new menu 
Set oMenuBar = Application.CommandBars.ActiveMenuBar 
Set oMenu = oMenuBar.Controls.Add(type:=msoControlPopup, Before:=iTools, Temporary:=True) 
With oMenu 
    .Caption = "My Menu" 
    .Enabled = True 
End With 

' Add a control 
Set oCtrl = oMenu.Controls.Add(type:=msoControlButton) 
With oCtrl 
    .Caption = "My Tool" 
    .OnAction = "MyMacro" 
End With 

Если это Помогите, пожалуйста, проголосуйте за решение :-)

+0

Благодарим вас за это. Он работает, но только если я нахожусь на первом слайде плюс, он также удаляет текстовое поле. Не могли бы вы это сделать. как и Shp1. Удалить и повторить это для всех остальных фигур? :) – Kinda

+0

Если вы установите ссылку на Shp1, тогда будет работать Shp1.Delete. Не замечая код, который вы используете, сложно сказать, как его исправить. Вы можете при создании формы дать ему имя, а затем Слайды (x) .Shapes («YourShapeName»). Удалить (где x - индекс слайда, с которым вы хотите работать) –

+0

Спасибо. Ну, код выглядит просто ужасно. Я не программист :) Идея этого макроса состоит в том, чтобы отображать значения цвета, которые должны использоваться в ppt, и я думал, что было бы неплохо включать и выключать эти цвета - независимо от того, в каком слайде вы находитесь , Я отправлю код, который у меня выше .. – Kinda

 Смежные вопросы

  • Нет связанных вопросов^_^