2007 년에 도입 된 색상 모델 변경과 관련하여 PowerPoint 2003 및 모든 최신 버전에서 사용할 수있는 단일 코드 모듈을 작성하려고합니다. 테마 대 VBA 개체 모델의 스키마) 개체 모델 변경으로 인해이 문제가 발생할 수 있습니다.PowerPoint 2003 및 2007/2010/2013 개체 모델 호환성을위한 조건부 VBA 코드
PowerPoint에는 런타임에 사용중인 PowerPoint 버전을 확인하는 데 Application.Version 메서드가 포함되어 있지만 컴파일 타임에 #If ... #Then 문과 함께 사용할 수있는 해당 컴파일러 상수는 포함되어 있지 않습니다. 아래의 예에서
의 ObjectThemeColor 방법 (및 msoThemeColorDark1 상수)가 VBA 개체 모델의 해당 버전에 존재하지 않기 때문에 파워 포인트 2003에서 컴파일러 오류가 발생합니다 If 문의 두 번째 부분 :Option Explicit
Public Enum PPTversion
PPT2003 = 11
PPT2007 = 12
PPT2010 = 14
PPT2013 = 15
End Enum
Sub FillShape(oShp as Shape)
If Int(Application.Version) = 11 Then
' Use the old colour model
oShp.Fill.ForeColor.SchemeColor = ppForeground
Else
' Use the new colour model
' causes a compiler error "Method or data member not found" when run in 2003
oShp.Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1
End If
End Sub
무엇을 달성 할 수있는 방법이 있나요
Option Explicit
Public Enum PPTversion
PPT2003 = 11
PPT2007 = 12
PPT2010 = 14
PPT2013 = 15
End Enum
Sub FillShape(oShp as Shape)
If Int(Application.Version) = 11 Then
' Use the old colour model
oShp.Fill.ForeColor.SchemeColor = ppForeground
Else
' Use the new colour model
#If VBA7 Then
oShp.Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1
#End If
End If
End Sub
:
이 (효과적으로 위의 파워 포인트 2010을 감지)를 VBA7 컴파일러 상수를 사용하여 솔루션 방식의 일부를 취득하는 것이 가능하지만, 이것은 불명 2007 잎 노력하고있어 프로젝트의 여러 버전을 유지한다는 의미의 #Const 메커니즘을 사용하지 않고 할 수 있습니까?