다음을 통해 공유


방법: 암호로 보호된 문서의 데이터 캐시

암호로 보호된 문서나 통합 문서에서 데이터 캐시에 개체를 추가하면 캐시된 데이터에 대한 변경 내용이 자동으로 저장되지 않습니다. 프로젝트에서 두 개의 메서드를 재정의하여 캐시된 데이터에 대한 변경 내용을 저장할 수 있습니다.

적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010, Word 2007 및 Word 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

Word 문서에서 캐싱

암호로 보호된 Word 문서에서 데이터를 캐시하려면

  1. ThisDocument 클래스에서 공용 필드 또는 속성을 캐시하도록 표시합니다. 자세한 내용은 데이터 캐싱을 참조하십시오.

  2. ThisDocument 클래스의 DocumentBase.UnprotectDocument 메서드를 재정의하고 문서의 보호를 해제합니다.

    문서가 저장되면 Microsoft Visual Studio Tools for Office Runtime에서는 이 메서드를 호출하여 문서의 보호를 해제할 수 있게 해 줍니다. 이를 통해 캐시된 데이터의 변경 사항을 저장할 수 있습니다.

  3. ThisDocument 클래스의 DocumentBase.ProtectDocument 메서드를 재정의하고 문서에 보호를 다시 적용합니다.

    문서가 저장된 후 Microsoft Visual Studio Tools for Office Runtime에서는 이 메서드를 호출하여 문서에 보호를 다시 적용할 수 있게 해 줍니다.

예제

다음 코드 예제에서는 암호로 보호된 Word 문서에서 데이터를 캐시하는 방법을 보여 줍니다. 이 코드에서는 DocumentBase.UnprotectDocument 메서드를 통해 보호를 해제하기 전에 현재 ProtectionType 값을 저장하므로 DocumentBase.ProtectDocument 메서드에서 동일한 형식의 보호를 다시 적용할 수 있습니다.

<CachedAttribute()> _
Public CachedString As String = "This string is cached in the document."

Private protectionTypeValue As Word.WdProtectionType

Protected Overrides Sub UnprotectDocument()
    If Me.ProtectionType <> Word.WdProtectionType.wdNoProtection Then
        protectionTypeValue = Me.ProtectionType
        Me.Unprotect(securelyStoredPassword)
    End If
End Sub

Protected Overrides Sub ProtectDocument()
    Me.Protect(protectionTypeValue, Password:=securelyStoredPassword)
End Sub
[CachedAttribute]
public string CachedString = "This string is cached in the document.";

private Word.WdProtectionType protectionTypeValue;

protected override void UnprotectDocument()
{
    if (this.ProtectionType != Word.WdProtectionType.wdNoProtection)
    {
        protectionTypeValue = this.ProtectionType;
        this.Unprotect(ref securelyStoredPassword);
    }
}

protected override void ProtectDocument()
{
    this.Protect(protectionTypeValue, ref missing,
        ref securelyStoredPassword, ref missing, ref missing);
}

코드 컴파일

프로젝트의 ThisDocument 클래스에 이 코드를 추가합니다. 이 코드에서는 암호가 securelyStoredPassword라는 필드에 저장되어 있다고 가정합니다.

Excel 통합 문서에서 캐싱

Excel 프로젝트에서는 Workbook.Protect 메서드를 사용하여 통합 문서 전체를 암호로 보호할 경우에만 이 절차가 필요합니다. Worksheet.Protect 메서드를 사용하여 특정 워크시트만 암호로 보호하려는 경우에는 이 절차가 필요하지 않습니다.

암호로 보호된 Excel 통합 문서에서 데이터를 캐시하려면

  1. ThisWorkbook 클래스나 Sheetn 클래스 중 하나에서 공용 필드 또는 속성을 캐시하도록 표시합니다. 자세한 내용은 데이터 캐싱을 참조하십시오.

  2. ThisWorkbook 클래스의 WorkbookBase.UnprotectDocument 메서드를 재정의하고 통합 문서의 보호를 해제합니다.

    통합 문서가 저장되면 Microsoft Visual Studio Tools for Office Runtime에서는 이 메서드를 호출하여 통합 문서의 보호를 해제할 수 있게 해 줍니다. 이를 통해 캐시된 데이터의 변경 사항을 저장할 수 있습니다.

  3. ThisWorkbook 클래스의 WorkbookBase.ProtectDocument 메서드를 재정의하고 문서에 보호를 다시 적용합니다.

    통합 문서가 저장된 후 Microsoft Visual Studio Tools for Office Runtime에서는 이 메서드를 호출하여 통합 문서에 보호를 다시 적용할 수 있게 해 줍니다.

예제

다음 코드 예제에서는 암호로 보호된 Excel 통합 문서에서 데이터를 캐시하는 방법을 보여 줍니다. 이 코드에서는 WorkbookBase.UnprotectDocument 메서드를 통해 보호를 해제하기 전에 현재 ProtectStructureProtectWindows 값을 저장하므로 WorkbookBase.ProtectDocument 메서드에서 동일한 형식의 보호를 다시 적용할 수 있습니다.

<CachedAttribute()> _
Public CachedString As String = "This string is cached in the workbook."

Private protectStructureValue As Boolean
Private protectWindowsValue As Boolean

Protected Overrides Sub UnprotectDocument()
    protectStructureValue = Me.ProtectStructure
    protectWindowsValue = Me.ProtectWindows

    Me.Unprotect(securelyStoredPassword)
End Sub

Protected Overrides Sub ProtectDocument()
    Me.Protect(securelyStoredPassword, protectStructureValue, _
        protectWindowsValue)
End Sub
[CachedAttribute]
public string CachedString = "This string is cached in the workbook.";

private bool protectStructureValue;
private bool protectWindowsValue;

protected override void UnprotectDocument()
{
    protectStructureValue = this.ProtectStructure;
    protectWindowsValue = this.ProtectWindows;

    this.Unprotect(securelyStoredPassword);
}

protected override void ProtectDocument()
{
    this.Protect(securelyStoredPassword, protectStructureValue,
        protectWindowsValue);
}

코드 컴파일

프로젝트의 ThisWorkbook 클래스에 이 코드를 추가합니다. 이 코드에서는 암호가 securelyStoredPassword라는 필드에 저장되어 있다고 가정합니다.

참고 항목

작업

방법: 오프라인이나 서버에서 사용할 데이터 캐싱

방법: Office 문서에서 프로그래밍 방식으로 데이터 소스 캐싱

개념

데이터 캐싱