在VBA powerpoint中显示供用户选择的颜色选择器
我正在为powerpoint制作一个插件,我需要使用它来提供给定的颜色,最好是RGB颜色。VBA中是否有显示颜色选择器的方法在VBA powerpoint中显示供用户选择的颜色选择器,vba,colors,powerpoint,Vba,Colors,Powerpoint,我正在为powerpoint制作一个插件,我需要使用它来提供给定的颜色,最好是RGB颜色。VBA中是否有显示颜色选择器的方法 在Excel中获取调色板颜色很容易。这将根据调色板中选定的颜色更改工作表1中单元格的背景: Sub TestMe() Dim rgbSet As Variant: rgbSet = Application.Dialogs(xlDialogEditColor).Show(1) If rgbSet Then Worksheets(1).Cells.Inter
在Excel中获取调色板颜色很容易。这将根据调色板中选定的颜色更改工作表1中单元格的背景:
Sub TestMe()
Dim rgbSet As Variant: rgbSet = Application.Dialogs(xlDialogEditColor).Show(1)
If rgbSet Then Worksheets(1).Cells.Interior.Color = ThisWorkbook.Colors(1)
End Sub
在PowerPoint(和其他VBA宿主应用程序)中,任务需要外部dll:
Option Explicit
Private Declare Function ChooseColor_Dlg Lib "comdlg32.dll" _
Alias "ChooseColorA" (pcc As CHOOSECOLOR_TYPE) As Long
Private Type CHOOSECOLOR_TYPE
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As Long
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Const CC_ANYCOLOR = &H100
Private Const CC_ENABLEHOOK = &H10
Private Const CC_ENABLETEMPLATE = &H20
Private Const CC_ENABLETEMPLATEHANDLE = &H40
Private Const CC_FULLOPEN = &H2
Private Const CC_PREVENTFULLOPEN = &H4
Private Const CC_RGBINIT = &H1
Private Const CC_SHOWHELP = &H8
Private Const CC_SOLIDCOLOR = &H80
在同一模块中,编写以下代码:
Private Sub TestMe()
Dim CC_T As CHOOSECOLOR_TYPE, Retval As Variant
Static BDF(16) As Long
BDF(0) = RGB(0, 255, 0) 'first defined color
BDF(1) = RGB(255, 0, 0) 'second defined color
BDF(2) = RGB(0, 0, 255) 'third defined color
With CC_T
.lStructSize = Len(CC_T)
.flags = CC_RGBINIT Or CC_ANYCOLOR Or CC_FULLOPEN Or _
CC_PREVENTFULLOPEN
.rgbResult = RGB(0, 255, 0)
.lpCustColors = VarPtr(BDF(0))
End With
Retval = ChooseColor_Dlg(CC_T)
If Retval <> 0 Then
Dim labelObj As Object
Set labelObj = ActivePresentation.Slides(1).Shapes.AddLine(100, 100, 200, 200).Line
With labelObj
.Weight = 25
.ForeColor.RGB = CC_T.rgbResult
End With
End If
End Sub
Private-Sub-TestMe()
Dim CC_T作为选择颜色类型,Retval作为变体
静态BDF(16)的长度
BDF(0)=RGB(0,255,0)“第一个定义的颜色
BDF(1)=RGB(255,0,0)“第二种定义颜色
BDF(2)=RGB(0,0255)“第三种定义颜色
用CC\T
.L结构尺寸=长度(CC_T)
.flags=CC_RGBINIT或CC_ANYCOLOR或CC_FULLOPEN或_
CC_完全打开
.rgbResult=RGB(0,255,0)
.lpCustColors=VarPtr(BDF(0))
以
Retval=ChooseColor\u Dlg(CC\u T)
如果Retval为0,则
作为对象的Dim labelObj
设置labelObj=ActivePresentation.Slides(1).Shapes.AddLine(100100200200).Line
拉贝洛布
.重量=25
.ForeColor.RGB=CC_T.rgbResult
以
如果结束
端接头
这是最终的结果:
在Excel中获取调色板颜色很容易。这将根据调色板中选定的颜色更改工作表1中单元格的背景:
Sub TestMe()
Dim rgbSet As Variant: rgbSet = Application.Dialogs(xlDialogEditColor).Show(1)
If rgbSet Then Worksheets(1).Cells.Interior.Color = ThisWorkbook.Colors(1)
End Sub
在PowerPoint(和其他VBA宿主应用程序)中,任务需要外部dll:
Option Explicit
Private Declare Function ChooseColor_Dlg Lib "comdlg32.dll" _
Alias "ChooseColorA" (pcc As CHOOSECOLOR_TYPE) As Long
Private Type CHOOSECOLOR_TYPE
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As Long
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Const CC_ANYCOLOR = &H100
Private Const CC_ENABLEHOOK = &H10
Private Const CC_ENABLETEMPLATE = &H20
Private Const CC_ENABLETEMPLATEHANDLE = &H40
Private Const CC_FULLOPEN = &H2
Private Const CC_PREVENTFULLOPEN = &H4
Private Const CC_RGBINIT = &H1
Private Const CC_SHOWHELP = &H8
Private Const CC_SOLIDCOLOR = &H80
在同一模块中,编写以下代码:
Private Sub TestMe()
Dim CC_T As CHOOSECOLOR_TYPE, Retval As Variant
Static BDF(16) As Long
BDF(0) = RGB(0, 255, 0) 'first defined color
BDF(1) = RGB(255, 0, 0) 'second defined color
BDF(2) = RGB(0, 0, 255) 'third defined color
With CC_T
.lStructSize = Len(CC_T)
.flags = CC_RGBINIT Or CC_ANYCOLOR Or CC_FULLOPEN Or _
CC_PREVENTFULLOPEN
.rgbResult = RGB(0, 255, 0)
.lpCustColors = VarPtr(BDF(0))
End With
Retval = ChooseColor_Dlg(CC_T)
If Retval <> 0 Then
Dim labelObj As Object
Set labelObj = ActivePresentation.Slides(1).Shapes.AddLine(100, 100, 200, 200).Line
With labelObj
.Weight = 25
.ForeColor.RGB = CC_T.rgbResult
End With
End If
End Sub
Private-Sub-TestMe()
Dim CC_T作为选择颜色类型,Retval作为变体
静态BDF(16)的长度
BDF(0)=RGB(0,255,0)“第一个定义的颜色
BDF(1)=RGB(255,0,0)“第二种定义颜色
BDF(2)=RGB(0,0255)“第三种定义颜色
用CC\T
.L结构尺寸=长度(CC_T)
.flags=CC_RGBINIT或CC_ANYCOLOR或CC_FULLOPEN或_
CC_完全打开
.rgbResult=RGB(0,255,0)
.lpCustColors=VarPtr(BDF(0))
以
Retval=ChooseColor\u Dlg(CC\u T)
如果Retval为0,则
作为对象的Dim labelObj
设置labelObj=ActivePresentation.Slides(1).Shapes.AddLine(100100200200).Line
拉贝洛布
.重量=25
.ForeColor.RGB=CC_T.rgbResult
以
如果结束
端接头
这是最终的结果:
.在Dietrich Baumgarten关于如何在Word中使用颜色选择器的回答中,在64位PowerPoint中,CHOOSECOLOR类型需要另一种结构。在Dietrich Baumgarten关于如何在Word中使用颜色选择器的回答中,在64位PowerPoint中,CHOOSECOLOR类型需要另一种结构。