F. API 문서

think-cell을 사용하면 API를 통해 특정 기능을 프로그래밍 방식으로 제어할 수 있습니다. 사용 가능한 모든 API 함수에 대한 개요와 매크로, 추가 기능 또는 액세스할 독립 실행형 프로그램을 작성하기 위해 개발 환경을 설정하는 방법에 대한 일반적인 지침을 여기서 확인할 수 있습니다.

F.1
시작하기
F.2
API 참조

F.1 시작하기

think-cell의 API는 Office 자동화 모델에 통합되어 있으므로 VBA(Visual Basic for Applications) 또는 C#과 같이 Office를 프로그래밍할 수 있는 모든 언어에서 액세스할 수 있습니다.

think-cell의 진입점은 think-cell 추가 기능 개체입니다. Application.COMAddIns 컬렉션을 통해 액세스할 수 있습니다. think-cell에 대한 호출은 항상 늦게 바인딩되기 때문에 추가할 유형 라이브러리 또는 참조는 없습니다. 자세한 설명은 Microsoft의 기술 문서

자동화에서 조기 바인딩과 늦은 바인딩 사용

일부 API 함수는 PowerPoint의 think-cell 추가 기능 개체와 Excel의 think-cell 추가 기능 개체의 메서드입니다. tcPpAddIn은(는) PowerPoint 추가 기능에 대한 참조로 tcXlAddIn은(는) Excel 추가 기능에 대한 참조로 사용합니다.

F.1.1 Visual Basic for Applications

VBA(Visual Basic for Applications)를 사용하여 매크로를 작성하기 위해 Office 호스트 응용 프로그램에 통합된 개발 환경을 사용합니다. Alt+F11을 눌러 액세스할 수 있습니다. 일반적으로 매크로의 정의는 삽입모듈을 통해 추가할 수 있는 모듈에 포함됩니다. Alt+F8을 눌러 특정 문서에 대해 정의된 모든 매크로를 볼 수 있습니다.

think-cell 추가 기능에 대한 메서드 호출이 늦게 바인딩된다는 것을 나타내려면 해당 메서드에 대한 참조를 포함하는 변수를 Object(으)로 선언해야 합니다.

Dim tcaddin As Object 
Set tcaddin = Application.COMAddIns("thinkcell.addin").Object

기본적으로 Office 호스트 응용 프로그램에 대한 유형 라이브러리는 참조됩니다. 다른 Office 응용 프로그램의 개체 모델에 액세스해야 하는 경우 해당 유형 라이브러리를 참조로 추가해야 합니다.

예를 들어, PowerPoint의 매크로를 사용하여 Excel 시트에서 think-cell 차트를 업데이트하기 전에 Excel 시트의 데이터를 수정하려면 Microsoft Excel 16.0 개체 라이브러리를 VBA 개발 환경의 도구참조 대화 상자를 통해 수동으로 추가해야 합니다.

참고: 16.0은 Office 2016 이후의 버전 번호입니다. Office 2010 또는 2013의 경우, 14.0 또는 15.0 개체 라이브러리를 각각 사용해야 합니다. 여러 버전의 Office가 설치되어 있는 경우, 참조 대화 상자는 설치된 가장 최근 버전의 개체 라이브러리를 표시합니다. 다음은 사용자가 Office 2016 이후 버전을 사용한다고 가정합니다.

Application.COMAddIns("thinkcell.addin").Object을(를) 사용하면 현재 Office 호스트 응용 프로그램의 think-cell 추가 기능 개체(사용 프로그램이 파워포인트 또는 엑셀인지에 따라 항상 tcPpAddIn 또는 tcXlAddIn)가 제공됩니다. 다른 Office 응용 프로그램에서 추가 기능 개체에 대한 참조를 확보하고 이에 노출되는 API 함수에 액세스하려면 해당 응용 프로그램 인스턴스를 통해 이를 가져옵니다.

예를 들어, 다음과 같이 PowerPoint에서 tcXlAddIn에 대한 참조를 가져올 수 있습니다.

Dim xlapp As Object
Set xlapp = New Excel.Application

Dim tcXlAddIn As Object
Set tcXlAddIn = xlapp.COMAddIns("thinkcell.addin").Object

이 경우 Excel 개체 라이브러리를 참조로 추가해야 합니다.

모든 변수를 명시적으로 선언해야 하는 Option Explicit 문을 사용하여 일반적인 프로그래밍 오류를 방지하고 IntelliSense에서 제공하는 제안 사항을 개선하는 것이 좋습니다. 도구옵션코드 설정변수 선언 필요를 활성화하여 모든 모듈에 자동으로 추가할 수 있습니다. 이는 당사의 모든 코드 샘플에 포함되어 있습니다.

F.1.2 C#

Office 호스트 응용 프로그램 내에서 실행되는 추가 기능 및 문서 코드 확장을 개발할 때는 물론 독립 실행형 응용 프로그램을 개발할 때는 C#에서 think-cell API를 사용할 수 있습니다.

다음에서는 사용자가 Visual Studio 2017 이후 버전을 사용하여 C#에서 Office 솔루션을 개발하고 있다고 가정합니다. 추가 기능 개발에 대한 보다 구체적인 설정 지침은 다음 섹션을 참조하십시오. 각 코드 샘플을 통해 어떤 Visual Studio 프로젝트 템플릿을 사용할지 표시합니다.

think-cell 추가 기능 개체에 대한 메서드 호출을 늦게 바인딩하려면 think-cell 추가 기능 개체에 대한 참조를 포함하는 변수를 dynamic(으)로 선언합니다. 이 유형은 참조를 var로 선언할 때 컴파일러가 추론한 것이기도 하기 때문에 다음과 같이 간단하게 작성할 수 있습니다:

var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;

여기서 ppapp은(는) think-cell이 로드되는 PowerPoint Application 개체에 대한 참조입니다.

Office 응용프로그램의 개체 모델에 액세스하려면 사용자의 프로젝트에 대한 참조로 유형 라이브러리 또는 PIA(primary interop assembly)를 추가해야 합니다. Visual Studio는 사용 가능한 참조가 있는 경우 자동으로 해당 PIA에 추가하거나 없는 경우 유형 라이브러리에서 인터롭 어셈블리를 생성하기 때문에 가능하다면 유형 라이브러리를 추가하는 것이 좋습니다(여기 참조).

예를 들어, 위와 같이 think-cell 추가 기능 개체에 대한 참조를 가져오려면 참조 관리자 대화 상자의 COM유형 라이브러리 탭에 있는 Microsoft PowerPoint 16.0 개체 라이브러리를 추가합니다. 프로젝트 유형에 따라 솔루션 탐색기에서 참조 또는 종속성 마우스 우측 버튼으로 클릭하고 (COM) 참조 추가를 선택하여 이 대화 상자에 액세스합니다.

참고: 16.0은 Office 2016 이후의 버전 번호입니다. COM 유형 라이브러리에 대한 참조로 기본적으로 활성화된 인터롭 유형 포함 옵션을 사용하면 사용된 모든 인터페이스가 개체 모델에 존재하는 한, 이 참조로 컴파일된 응용 프로그램은 다른 버전의 Office와 이전 버전과 상호 호환됩니다. 자세한 내용은 여기를 참조하십시오.

think-cell의 API 함수는 COM HRESULTs를 사용하여 오류를 나타냅니다. 이 중 일부는 해당 .NET 예외 클래스에 자동으로 매핑됩니다. 다음에 대핸 방법은 을 참조하십시오. HRESULT 및 예외 매핑.

F.1.2.1 추가 기능 개발

Office용 추가 기능 또는 Office 문서용 코드 확장 프로그램을 개발하려면 PowerPoint/Excel VSTO 추가 기능Excel VSTO 템플릿/통합 문서 프로젝트 템플릿을 사용하십시오. 이들은 기본 구성의 일부로 설치되는 Visual Studio용 Office 개발자 도구에 포함되어 있습니다. Visual Studio 설치에서 이러한 도구와 템플릿을 사용할 수 없는 경우, 예를 들어, 설정Visual Studio 2022수정기타 도구 세트로 이동하여 Office/SharePoint 개발을 선택하고 수정을 클릭하여 추가할 수 있습니다. Microsoft의 설명서 여기여기도 참조하십시오.

기본적으로 선택한 템플릿의 Office 호스트 응용 프로그램에 대한 PIA는 항상 로드됩니다. 앞서 설명한 대로, 다른 Office 응용 프로그램의 개체 모델에 액세스해야 하는 경우 해당 유형 라이브러리를 참조로 추가해야 합니다.

참고: Office 응용 프로그램의 개체 모델과 직접 상호 작용할 수 없으며 특히 think-cell과 같은 COM 추가 기능과 상호 작용할 수 없기 때문에 think-cell의 API는 Office 추가 기능에서 사용할 수 없습니다(아쉽게도 Microsoft에서 이제 단순히 "Office 추가 기능"이라고 합니다).

F.2 API 참조

F.2.1
Excel 데이터로 엘리먼트 및 프리젠테이션 템플릿 업데이트
F.2.2
스타일 조정
F.2.3
Marimekko Graphics 차트 가져오기
F.2.4
기타

F.2.1 Excel 데이터로 엘리먼트 및 프리젠테이션 템플릿 업데이트

이 섹션의 함수는 일반적으로 Excel의 데이터를 사용하여 프레젠테이션 템플릿의 자리 표시자인 think-cell 엘리먼트를 프로그래밍 방식으로 업데이트하는 데 사용할 수 있습니다. UpdateChart은(는) 템플릿에서 할당된 이름으로 지정된 think-cell 엘리먼트를 인수로 전달된 Excel 범위의 데이터를 사용하여 업데이트합니다. 또한 템플릿을 준비하는 방법은 자동화 소개도 참조하십시오.

PresentationFromTemplate은(는) 연결된 Excel 통합 문서의 데이터를 사용하여 프레젠테이션 템플릿을 인스턴스화합니다. 또한 Excel 링크를 생성하는 방법은 Excel 데이터 링크도 참조하십시오.

이 섹션의 함수는 Excel think-cell 추가 기능의 메서드입니다.

F.2.1.1 차트 업데이트

F.2.1.1.1 서명
VBA
tcXlAddIn.UpdateChart( _ 
    target As Object, _ 
    strName As String, _ 
    rgData As Excel.Range, _ 
    bTransposed As Boolean _ 
)
C#
void tcXlAddIn.UpdateChart(
    object target,
    string strName,
    Excel.Range rgData,
    bool bTransposed
);
F.2.1.1.2 설명

이 함수는 target의 모든 엘리먼트를 rgData에 포함된 데이터를 사용하여 이름 strName(으)로 업데이트합니다. 차트에서 데이터를 올바르게 해석하려면 범위 rgData은(는) 기본 데이터시트 레이아웃 또는 데이터 행/열을 바꾸기한 버전을 준수해야 합니다(Excel에서 차트 만들기데이터 레이아웃 맞추기 참조). 기본 버전 또는 데이터 행/열을 바꾸기한 버전이 사용될 것인지 여부는 각각 bTransposed을(를) false 또는 true(으)로 설정하여 표시합니다. 차트 이외의 엘리먼트, 예를 들어, 테이블에서 bTransposed 값은 무시됩니다.

target은(는) Presentation 또는 SlideRange, 단일 Slide, Master 또는 CustomLayout이어야 합니다.

이름 strName은(는) 대소문자를 구분하여 일치해야 합니다. 자동화 소개에 설명된 대로 차트 이름 업데이트 속성 컨트롤을 사용하여 이전에 PowerPoint에서 할당되어 있어야 합니다.

올바른 엘리먼트가 타겟팅되도록 하려면 pres(으)로 전달된 개체에서 UpdateChart 이름strName(으)로 설정된 유일한 엘리먼트여야 합니다.

이 함수를 호출할 때 타겟팅된 엘리먼트가 Excel 데이터 범위에 연결된 경우 연결이 해제됩니다. 이후 엘리먼트는 어떤 Excel 범위와도 연결되지 않습니다.

F.2.1.1.3 예시

이러한 샘플을 사용하려면 자동화 소개에서 설명한 대로 프레젠테이션을 준비하고 이를 C:\Samples\UpdateChart\template.pptx(으)로 저장하십시오.

VBA

이 샘플을 사용하려면 Excel 통합 문서의 모듈에 추가하십시오.

Microsoft PowerPoint 16.0 개체 라이브러리에 대한 참조가 필요합니다(자세한 내용은 Visual Basic for Applications 참조).

통합 문서에서 UpdateChart_Sample을(를) 실행하면 첫 번째 시트의 범위 A1:D5에 포함된 데이터를 사용하여 프레젠테이션 템플릿의 차트가 업데이트됩니다.

Option Explicit 
 
Sub UpdateChart_Sample() 

    ' Get the range containing the new data 
    Dim rng As Excel.Range 
    Set rng = ActiveWorkbook.Sheets(1).Range("A1:D5") 

    ' Get the think-cell add-in object 
    Dim tcXlAddIn As Object 
    Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object 

    ' Get a PowerPoint instance. Hold on to this 
    ' object as long as you want to access the 
    ' generated presentations. There can only be a 
    ' single PowerPoint instance. If there is no 
    ' PowerPoint running, one will be started. 
    ' Otherwise the existing one is used.

    Dim ppapp As Object 
    Set ppapp = New PowerPoint.Application 

    Dim pres As PowerPoint.Presentation 

    ' PowerPoint window visible 
    ' Set pres = ppapp.Presentations.Open( _ 
    '  Filename:="C:\\Samples\\UpdateChart\\template.pptx", _
    '  Untitled:=msoTrue) 

    ' PowerPoint window invisible 

    Set pres = ppapp.Presentations.Open( _
    Filename:="C:\\Samples\\UpdateChart\\template.pptx", _
    Untitled:=msoTrue, _
    WithWindow:=msoFalse)

    Call tcXlAddIn.UpdateChart(pres, "Chart1", rng, False) 

    ' Save the updated presentation 
    pres.SaveAs ("C:\\Samples\\UpdateChart\\template_updated.pptx") 
    pres.Close 

    ppapp.Quit 
End Sub
C#

이 샘플을 사용하려면 C# 콘솔 앱 프로젝트 템플릿의 Program.cs에 있는 코드를 샘플로 바꾸십시오.

Microsoft PowerPoint 16.0 개체 라이브러리, Microsoft Excel 16.0 개체 라이브러리Microsoft Office 16.0 개체 라이브러리에 대한 참조가 필요합니다(자세한 내용은 C# 참조).

결과 응용 프로그램을 실행하면 프레젠테이션 템플릿의 차트가 1, 2, 3 값을 가진 "시리즈 1"이라고 이름이 지정된 단일 시리즈를 포함하도록 업데이트되고 결과가 template_updated.pptx(으)로 저장됩니다.

using Excel = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;

namespace ConsoleApplication_UpdateChart
{
    class Program
    {
        static void Main()
        {
            Excel.Application xlapp = new Excel.Application { Visible = true };

            Excel.Workbook workbook = xlapp.Workbooks.Add(1);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
            worksheet.Cells[3, 1] = "Series 1";
            worksheet.Cells[3, 2] = 1;
            worksheet.Cells[3, 3] = 2;
            worksheet.Cells[3, 4] = 3;

            PowerPoint.Application ppapp = new PowerPoint.Application();
            PowerPoint.Presentation presentation = ppapp.Presentations.Open(
                    "C:\\Samples\\UpdateChart\\template.pptx",
                    Office.MsoTriState.msoFalse,
                    Office.MsoTriState.msoTrue
            );

            var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
            tcXlAddIn.UpdateChart(
                presentation,
                "Chart1",
                worksheet.get_Range("A1", "D3"),
                false
            );

            presentation.SaveAs("C:\\Samples\\UpdateChart\\template_updated.pptx");
            presentation.Close();
            ppapp.Quit();

            workbook.Close(false);
            xlapp.Quit();
        }
    }
}

F.2.1.2 템플릿에서 프레젠테이션

F.2.1.2.1 서명
VBA
tcXlAddIn.PresentationFromTemplate( _ 
    wb As Excel.Workbook, _ 
    strTemplate As String, _ 
    ppapp As PowerPoint.Application _ 
) As PowerPoint.Presentation
C#
PowerPoint.Presentation tcXlAddIn.PresentationFromTemplate(
    Excel.Workbook wb,
    string strTemplate,
    PowerPoint.Application ppapp
);
F.2.1.2.2 설명

이 함수는 Excel 통합 문서 wb와(과) 파일 이름이 strTemplate인 템플릿 사이의 데이터 연결을 사용하여 연결된 엘리먼트를 연결된 범위의 데이터로 업데이트하여 해당 템플릿을 인스턴스화합니다. 그 결과 PowerPoint 인스턴스 ppapp 내에 새 프레젠테이션이 표시됩니다.

strTemplate은 전체 경로 또는 상대 경로가 될 수 있으며, Excel 통합 문서 파일 의 위치에 상대적인 경로가 됩니다.wb

Excel 통합 문서 wb에 연결된 strTemplate의 모든 엘리먼트가 업데이트됩니다(자동 업데이트 설정 여부와 무관). 결과 프레젠테이션에서, 이러한 엘리먼트에 대한 추가 변경을 방지하기 위해 데이터 링크가 끊어집니다.

wb 이외의 Excel 통합 문서에 연결된 strTemplate의 엘리먼트는 변경되지 않고 계속 연결되어 있으므로 이 기능의 결과를 새 템플릿으로 저장한 후 다음 통합 문서로 이 기능을 다시 호출하여 여러 Excel 통합 문서의 링크를 업데이트할 수 있습니다.

Excel 링크를 사용하여 차트 세그먼트의 색상이나 테이블 셀의 형식을 조정하려는 경우 색 구성표를 상단에 데이터 시트 채우기 사용(색 구성표 참조) 또는 데이터시트... 사용 옵션(표 서식 지정 참조)으로 각각 설정하면 됩니다. 마찬가지로 Excel 링크로 숫자 형식을 제어하려면 Excel 형식 사용으로 설정합니다(숫자 형식 참조).

PresentationFromTemplate을(를) 호출하기 전에 Excel에서 각 셀의 해당 형식 옵션과 숫자 형식을 설정해야 합니다.

F.2.1.2.3 예시

이러한 샘플을 사용하려면 먼저 Excel에서 차트 만들기에서 설명한 대로 Excel 통합 문서 첫 번째 시트의 범위 G1:K4에 연결된 누적 차트가 포함된 프리젠테이션을 만드십시오. 결과 프레젠테이션을 C:\Samples\PresentationFromTemplate\template.pptx(으)로, 통합 문서를 data.xlsx(으)로 같은 디렉토리에 저장합니다.

VBA

이 샘플을 사용하려면 위에서 설명한 대로 작성된 Excel 통합 문서 data.xlsx의 모듈에 샘플을 추가합니다.

Microsoft PowerPoint 16.0 개체 라이브러리에 대한 참조가 필요합니다(자세한 내용은 Visual Basic for Applications 참조).

PresentationFromTemplate_Sample을(를) 실행하면 template.pptx에 포함된 차트 첫 번째 시리즈의 첫 번째 값에 연결된 셀 Sheet1!H3의 값을 i=1에서 10(으)로 변경하고, 해당 값을 포함하도록 업데이트된 템플릿의 차트를 사용하여 새 프리젠테이션을 만들고, 이제 통합 문서에 연결되지 않고 템플릿과 동일한 디렉토리에서 이를 output_i.pptx(으)로 저장합니다.

Option Explicit

Sub PresentationFromTemplate_Sample()
    ' Get the range to modify. It is more efficient
    ' to do this once rather than within the loop.
    Dim rng As Excel.Range
    Set rng = ActiveWorkbook.Sheets(1).Cells(3, 8)

    ' Get the think-cell add-in object
    Dim tcXlAddIn As Object
    Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object

    ' Get a PowerPoint instance. Hold on to this
    ' object as long as you want to access the
    ' generated presentations. There can only be a
    ' single PowerPoint instance. If there is no
    ' PowerPoint running, one will be started.
    ' Otherwise the existing one is used.
    Dim ppapp As Object
    Set ppapp = New PowerPoint.Application

    Dim i As Integer
    For i = 1 To 10
        ' Modify the range value.
        ' Note: Avoid selecting the cell prior to
        ' changing it. It is very slow and has
        ' undesirable side-effects.
        ' BAD:
        ' rng.Select
        ' ActiveWindow.Selection.Value = 0
        ' GOOD:
        rng.Value = i

        ' Generate a new presentation based on the
        ' linked template.
        Dim pres As PowerPoint.Presentation
        Set pres = tcXlAddIn.PresentationFromTemplate( _
            Excel.ActiveWorkbook, "template.pptx", ppapp _
        )

        ' If you want to modify the new presentation
        ' before saving it this is the place to do it.
        
        ' Save the new presentation
        pres.SaveAs "C:\Samples\PresentationFromTemplate\output_" & i & ".pptx"
        
        ' Explicitly close the presentation when we
        ' are done with it to free its memory.
        ' Letting the object go out of scope is not
        ' sufficient.
        pres.Close
    Next
End Sub
C#

이 샘플을 사용하려면 C# 콘솔 앱 프로젝트 템플릿의 Program.cs에 있는 코드를 샘플로 바꾸십시오.

Microsoft PowerPoint 16.0 개체 라이브러리, Microsoft Excel 16.0 개체 라이브러리Microsoft Office 16.0 개체 라이브러리에 대한 참조가 필요합니다(자세한 내용은 C# 참조).

결과 응용 프로그램을 실행하면 Excel이 열리고 통합 문서 data.xlsx이(가) 로드되며 template.pptx에 포함된 차트 첫 번째 시리즈의 첫 번째 값에 연결된 셀 H3의 값을 i=1에서 10(으)로 변경하고, 해당 값을 포함하도록 업데이트된 템플릿의 차트를 사용하여 새 프리젠테이션을 만들고, 이제 통합 문서에 연결되지 않고 템플릿과 동일한 디렉토리에서 이를 output_i.pptx(으)로 저장합니다.

using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApplication_PresentationFromTemplate
{
    class Program
    {
        static void Main()
        {
            var xlapp = new Excel.Application { Visible = true };
            var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
            var workbook = xlapp.Workbooks.Open("C:\\Samples\\PresentationFromTemplate\\data.xlsx");
            var ppapp = new PowerPoint.Application();
            for (var i = 1; i <= 10; ++i)
            {
                workbook.Sheets[1].Cells[3, 8] = i;

                PowerPoint.Presentation presentation = tcXlAddIn.PresentationFromTemplate(
                    workbook,
                    "C:\\Samples\\PresentationFromTemplate\\template.pptx",
                    ppapp
                );

                presentation.SaveAs("C:\\Samples\\PresentationFromTemplate\\output_" + i + ".pptx");
                presentation.Close();
            }
            ppapp.Quit();
            workbook.Close(false);
            xlapp.Quit();
        }
    }
}

F.2.2 스타일 조정

이 섹션의 함수를 사용하여 프로그래밍 방식으로 think-cell 스타일을 로드, 검사 및 제거할 수 있습니다. LoadStyle은(는) 스타일 파일의 스타일을 마스터 슬라이드 또는 단일 사용자 지정 레이아웃으로 로드합니다. LoadStyleForRegion은(는) 스타일 파일의 스타일을 사용자 지정 레이아웃의 특정 영역으로 로드합니다. GetStyleName은(는) 마스터 또는 사용자 지정 레이아웃에 로드된 스타일의 이름을 반환합니다. RemoveStyles은(는) 사용자 지정 레이아웃에서 모든 스타일을 제거합니다.

스타일을 만들고 수정하는 것에 대한 자세한 내용은 think-cell 스타일 만들기스타일 파일 형식을(를) 참조하십시오. 로딩에 대한 자세한 내용은 스타일 파일 로드을(를) 참조하십시오.

이 섹션의 함수는 PowerPoint think-cell 추가 기능의 메서드입니다.

F.2.2.1 스타일 로드

F.2.2.1.1 서명
VBA
tcPpAddIn.LoadStyle( _ 
    CustomLayoutOrMaster As Object, _ 
    FileName As String 
)
C#
void tcPpAddIn.LoadStyle(
    object CustomLayoutOrMaster,
    string FileName
);
F.2.2.1.2 설명

이 함수는 FileName의 스타일 파일에 포함된 스타일을 매개변수 CustomLayoutOrMaster을(를) 통해 지정된 마스터 또는 사용자 지정 레이아웃으로 로드합니다.

CustomLayoutOrMaster은(는) CustomLayout 또는 Master여야 합니다.

영역 스타일이 설정된 사용자 지정 레이아웃에 적용되면(영역 스타일 로드 참조) 영역 스타일이 제거됩니다. 즉, 영역으로 제한된 스타일을 로드하기 전에 이 함수를 사용하여 슬라이드의 나머지 부분에 적용할 스타일을 로드해야 합니다.

마스터에 적용되면 해당 마스터에 포함된 사용자 지정 레이아웃에 로드된 모든 스타일이 제거됩니다. 즉, 이 함수를 사용하여 특정 사용자 지정 레이아웃에 적용되는 스타일을 로드하기 전에 특정 스타일이 없는 사용자 지정 레이아웃에 적용되는 스타일을 마스터에 로드해야 합니다.

F.2.2.1.3 예시
VBA

이 샘플을 사용하려면 다음 코드를 PowerPoint의 모듈에 추가합니다(세부 정보는 Visual Basic for Applications 참조).

Option Explicit
 
Sub LoadStyle_Sample() 

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 

    Dim master As Master
    Set master = Application.ActivePresentation.Designs(1).SlideMaster

    Dim style As String
    style = "C:\some\path\styles\style.xml"

    Call tcPpAddIn.LoadStyle(master, style)
End Sub

F.2.2.2 영역 스타일 로드

F.2.2.2.1 서명
VBA
tcPpAddIn.LoadStyleForRegion( _ 
    CustomLayout As PowerPoint.CustomLayout, _ 
    FileName As String, _
    Left as Single, _
    Top as Single, _
    Width as Single, _
    Height as Single _
)
C#
void tcPpAddIn.LoadStyleForRegion(
    PowerPoint.CustomLayout CustomLayout,
    string FileName,
    float Left,
    float Top,
    float Width,
    float Height
);
F.2.2.2.2 설명

이 기능은 FileName의 스타일 파일을 사용자 지정 레이아웃 CustomLayout(으)로 로드하고, Left, Top, Width, Height에서 지정한 영역으로 제한합니다. 슬라이드의 나머지 부분에는 마스터에 로드된 스타일이나 이전에 LoadStyle을(를) 사용하여 사용자 지정 레이아웃에 로드된 스타일이 적용됩니다.

매개 변수 Left, Top, Width, Height은(는) PowerPoint 포인트에 제공됩니다. LeftTop은(는) 각각 사용자 지정 레이아웃의 왼쪽 및 위쪽 가장자리에서 영역의 왼쪽 및 위쪽 가장자리까지의 거리를 지정합니다. 보통 총 슬라이드 높이와 너비의 분수로 설정합니다. 예를 들어, 사용자 지정 레이아웃의 오른쪽 2/3에 해당하는 영역을 설정합니다.

Left = CustomLayout.Width / 3
Top = 0
Width = CustomLayout.Width * 2 / 3
Height = CustomLayout.Height

또한 수동으로 슬라이드 또는 사용자 지정 레이아웃에 모양을 추가하고, 해당 속성 Left, Top, Width, Height을(를) 프로그래밍 방식으로 쿼리하고, LoadStyleForRegion을(를) 사용하여 해당 모양이 적용되는 동일한 영역으로 스타일을 제한할 수 있습니다.

think-cell은 사용자 지정 레이아웃당 최대 2개의 스타일을 지원합니다. 하나는 LoadStyle(으)로 설정하고, 영역으로 제한되지 않는 모든 항목을 다루며, 나머지는 LoadStyleForRegion(으)로 설정됩니다.

F.2.2.2.3 예시
VBA

이 샘플을 사용하려면 다음 코드를 PowerPoint의 모듈에 추가합니다(세부 정보는 Visual Basic for Applications 참조).

Option Explicit
 
Sub LoadStyleForRegion_Sample() 

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 

    Dim layout As CustomLayout
    Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2)

    ' Define a region covering the left half of the custom layout
    Dim left, top, width, height As Single
    left = 0
    top = 0
    width = layout.Width / 2
    height = layout.Height

    Dim style As String
    style = "C:\some\path\styles\style.xml"

    Call tcPpAddIn.LoadStyleForRegion(layout, style, left, top, width, height)
End Sub

F.2.2.3 스타일 이름 가져오기

think-cell 13 이상에서 지원됩니다.

F.2.2.3.1 서명
VBA
tcPpAddIn.GetStyleName( _ 
    CustomLayoutOrMaster As Object _ 
) As String
C#
string tcPpAddIn.GetStyleName(
    object CustomLayoutOrMaster
);
F.2.2.3.2 설명

이 기능은 CustomLayout 또는 Master CustomLayoutOrMaster(으)로 로드된 스타일 이름을 반환합니다. 이 이름은 해당 스타일 파일의 <style> 엘리먼트에 대한 name 속성에 지정된 이름과 같습니다(스타일 참조).

CustomLayoutOrMaster에 로드된 스타일이 없으면 빈 문자열을 반환합니다. think-cell이 활성 상태인 경우 마스터에는 항상 스타일이 로드되며 해당 스타일 이름은 비워둘 수 없습니다.

CustomLayout에 대해 이름이 반환되면 이는 영역 스타일 로드(으)로 로드된 이름이 아닌(있는 경우) 스타일 로드을(를) 통해 로드된 스타일의 이름입니다.

F.2.2.3.3 예시
VBA

이 샘플을 사용하려면 다음 코드를 PowerPoint의 모듈에 추가합니다(세부 정보는 Visual Basic for Applications 참조).

Option Explicit

Sub GetStyleName_Sample()

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object
    
    ' Get the Master of the first slide of the current presentation
    Dim master As Master
    Set master = Application.ActivePresentation.Slides(1).Master
    
    ' Print the name of the style loaded to the debug console
    Dim name As String
    name = tcPpAddIn.GetStyleName(master)
    Debug.Print name
End Sub

F.2.2.4 스타일 제거

F.2.2.4.1 서명
VBA
tcPpAddIn.RemoveStyles( _ 
    CustomLayout As PowerPoint.CustomLayout _ 
)
C#
void tcPpAddIn.RemoveStyles(
    PowerPoint.CustomLayout CustomLayout
);
F.2.2.4.2 설명

이 기능은 사용자 지정 레이아웃 CustomLayout에서 모든 스타일을 제거합니다. 그런 다음 마스터에 로드된 스타일이 적용됩니다. 사용자 지정 레이아웃에 로드된 스타일과 사용자 지정 레이아웃의 특정 영역으로 제한된 다른 스타일이 있을 수 있습니다. RemoveStyles은(는) 모든 스타일을 제거하므로 둘 다 제거됩니다. 마스터에 로드된 스타일은 항상 마스터와 연결된 유효한 스타일이 있어야 하므로 제거할 수 없으며 다른 스타일 파일로 덮어쓸 수 있습니다.

F.2.2.4.3 예시
VBA

이 샘플을 사용하려면 다음 코드를 PowerPoint의 모듈에 추가합니다(세부 정보는 Visual Basic for Applications 참조).

Option Explicit
 
Sub RemoveStyles_Sample() 

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 

    Dim layout As CustomLayout
    Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2)

    Call tcPpAddIn.RemoveStyles(layout)
End Sub

F.2.3 Marimekko Graphics 차트 가져오기

이 섹션의 함수를 사용하여 Marimekko Graphics로 작성한 차트를 프로그래밍 방식으로 think-cell로 가져와 검사할 수 있습니다. ImportMekkoGraphicsCharts은(는) Marimekko Graphics 차트를 동등한 think-cell 차트로 대체합니다. GetMekkoGraphicsXML은(는) Marimekko Graphics 차트의 XML 정의를 추출합니다.

이 섹션의 함수는 PowerPoint think-cell 추가 기능의 메서드입니다.

F.2.3.1 Marimekko Graphics 차트 가져오기

think-cell 13 이상에서 지원됩니다.

F.2.3.1.1 서명
VBA
tcPpAddIn.ImportMekkoGraphicsCharts ( _
    ashp As PowerPoint.Shape() _
) As PowerPoint.Slide
C#
PowerPoint.Slide tcPpAddIn.ImportMekkoGraphicsCharts(
    PowerPoint.Shape[] ashp
);
F.2.3.1.2 설명

이 함수는 Shape 배열에 있는 모든 Marimekko Graphics 차트를 동등한 think-cell 차트로 대체합니다. 도형은 모두 동일한 슬라이드에 있어야 합니다. 이 함수는 슬라이드를 수정하기 전에 수정되지 않은 슬라이드의 사본을 만들어 수정한 버전 바로 뒤에 삽입합니다.

사본이 만들어지면 함수는 이 사본에 대한 참조를 반환합니다.

예를 들어, 배열에 Marimekko Graphics 차트가 포함되어 있지 않아 프레젠테이션이 수정되지 않으면 Nothing/null이(가) 반환됩니다.

F.2.3.1.3 예시
VBA

이 샘플을 사용하려면 해당 샘플을 PowerPoint의 모듈에 추가합니다(세부 정보는 Visual Basic for Applications 참조).

프레젠테이션에서 ImportAll을(를) 실행하면 레젠테이션의 슬라이드가 진행되고 표시되는 모든 Marimekko Graphics 차트를 동등한 think-cell 차트로 대체하며 수정하기 전에 차트가 포함된 모든 슬라이드의 사본을 만듭니다.

Option Explicit

Sub ImportAll()

    ' Get reference to think-cell Object

    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object

    ' Iterate over copy of original Slides to avoid
    ' iterating over copies inserted by ImportMekkoGraphicsCharts again

    Dim SlidesCopy As New Collection
    Dim Slide As PowerPoint.Slide
    For Each Slide In ActivePresentation.Slides
        SlidesCopy.Add Slide
    Next Slide
    
    For Each Slide In SlidesCopy
    
        ' Construct Array containing only visible shapes on slide
        
        Dim visibleShapes() As PowerPoint.Shape
        ReDim visibleShapes(1 To Slide.Shapes.Count)
        Dim shapeIndex As Long
        For shapeIndex = 1 To Slide.Shapes.Count
            If Slide.Shapes(shapeIndex).Visible Then
                Set visibleShapes(shapeIndex) = Slide.Shapes(shapeIndex)
            End If
        Next shapeIndex
        
        ' Pass Array to ImportMekkoGraphics and store return value
        
        Dim CopySlide As PowerPoint.Slide
        Set CopySlide = tcPpAddIn.ImportMekkoGraphicsCharts(visibleShapes)
        
        ' If Slide was modified...
        If Not CopySlide Is Nothing Then
        ' ... do things with copy of unmodified slide
        End If
    Next Slide
End Sub
C#

이 샘플을 사용하려면 이 메서드를 ThisAddIn 클래스의 C# PowerPoint VSTO 추가 기능 프로젝트 템플릿에 추가합니다(세부 정보는 C# 추가 기능 개발 참조).

private void ImportAll(PowerPoint.Presentation presentation)
    {
        var tcPpAddIn = presentation.Application.COMAddIns.Item("thinkcell.addin").Object;
        foreach (PowerPoint.Slide slide in presentation.Slides.Cast<PowerPoint.Slide>().ToList())
        {
            PowerPoint.Slide slideCopy = tcPpAddIn.ImportMekkoGraphicsCharts(
                slide.Shapes.Cast<PowerPoint.Shape>().ToArray()
            );
        }
    }

다음 라인을 ThisAddIn_Startup 메서드에 추가하여 열려 있는 각 프리젠테이션에서 ImportAll을(를) 실행하십시오.

Application.PresentationOpen += new PowerPoint.EApplication_PresentationOpenEventHandler(ImportAll);

F.2.3.2 Marimekko Graphics XML 가져오기

think-cell 13 이상에서 지원됩니다.

F.2.3.2.1 서명
VBA
tcPpAddIn.GetMekkoGraphicsXML ( _
    shp As PowerPoint.Shape _
) As String
C#
string tcPpAddIn.GetMekkoGraphicsXML(
    PowerPoint.Shape shp
);
F.2.3.2.2 설명

이 함수는 shp에서 Marimekko Graphics 차트의 XML을 문자열로 반환합니다. 전달된 도형은 수정되지 않습니다.

shp이(가) Marimekko Graphics 차트가 아닌 경우 E_INVALIDARG (0x80070057) 오류가 발생합니다.

F.2.3.2.3 예시
VBA

이 샘플을 사용하려면 다음 코드를 PowerPoint의 모듈에 추가합니다(세부 정보는 Visual Basic for Applications 참조).

Option Explicit

Sub GetMekkoGraphicsXMLOfAllShapes()

    ' Get reference to think-cell Object

    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object

    ' Go through the slides in the presentation and
    ' output the XML of each Mekko Graphics chart on the slide
    ' to the debug console

    Dim slide As PowerPoint.slide
    For Each slide In Application.ActivePresentation.Slides
        Dim shape As PowerPoint.shape
        For Each shape In slide.Shapes
            Debug.Print tcPpAddIn.GetMekkoGraphicsXML(shape)
        Next shape
    Next slide
End Sub
C#

이 샘플을 사용하려면 콘솔 앱Program.cs에 있는 코드를 해당 샘플로 바꿉니다.

Microsoft PowerPoint 16.0 개체 라이브러리Microsoft Office 16.0 개체 라이브러리에 대한 참조가 필요합니다(자세한 내용은 C# 참조).

응용 프로그램을 실행하면 C:\Samples\GetMekkoGraphicsXML\presentation.pptx에 있는 프레젠테이션이 진행되고 해당 프레젠테이션에 포함된 Marimekko Graphics 차트의 XML이 콘솔에 인쇄됩니다.

using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;

namespace Sample
{
    class Program
    {
        static void Main()
        {
            var ppapp = new PowerPoint.Application();
            var presentation = ppapp.Presentations.Open(
                "C:\\Samples\\GetMekkoGraphicsXML\\presentation.pptx",
                /*ReadOnly*/Office.MsoTriState.msoTrue,
                /*Untitled*/Office.MsoTriState.msoTrue,
                /*WithWindow*/Office.MsoTriState.msoFalse
            );

            var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;
            foreach (PowerPoint.Slide slide in presentation.Slides)
            {
                foreach (PowerPoint.Shape shape in slide.Shapes)
                {
                    string xml = tcPpAddIn.GetMekkoGraphicsXML(shape);
                    Console.WriteLine(xml);
                }
            }

            presentation.Close();
            ppapp.Quit();
        }
    }
}

F.2.4 기타

이 섹션의 함수는 PowerPoint think-cell 추가 기능의 메서드입니다.

F.2.4.1 표 삽입 시작

think-cell 13 이상에서 지원됩니다.

F.2.4.1.1 서명
VBA
tcPpAddIn.StartTableInsertion()
C#
void tcPpAddIn.StartTableInsertion();
F.2.4.1.2 설명

이 메서드를 호출하면 PowerPoint의 엘리먼트 메뉴에 있는 를 클릭하는 것과 같은 효과가 있습니다.

공유