Bagikan melalui


Memperbarui proyek Excel dan Word yang Anda migrasikan ke .NET Framework 4.5

Jika Anda memiliki proyek Excel atau Word yang menggunakan salah satu fitur berikut, Anda harus mengubah kode Jika kerangka kerja target diubah ke .NET Framework 4 atau yang lebih baru:

Menghapus atribut ExcelLocale1033 dari proyek Excel

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute telah dihapus dari bagian runtime Visual Studio 2010 Tools for Office yang digunakan untuk solusi yang menargetkan .NET Framework 4 atau yang lebih baru. Runtime bahasa umum (CLR) di .NET Framework 4 dan yang lebih baru selalu meneruskan ID lokal 1033 ke model objek Excel, dan Anda tidak dapat lagi menggunakan atribut ini untuk menonaktifkan perilaku ini. Untuk informasi selengkapnya, lihat Globalisasi dan pelokalan solusi Excel.

Untuk menghapus ExcelLocale1033Attribute

  1. Dengan proyek terbuka di Visual Studio, buka Penjelajah Solusi.

  2. Di bawah simpul Properti (untuk C#) atau simpul Proyek Saya (untuk Visual Basic), klik dua kali file kode AssemblyInfo untuk membukanya di editor kode.

    Catatan

    Di proyek Visual Basic, Anda harus mengklik tombol Perlihatkan Semua File di Penjelajah Solusi untuk melihat file kode AssemblyInfo.

  3. Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute Temukan dan hapus dari file atau komentari.

    [assembly: ExcelLocale1033Proxy(true)]
    

Menghapus referensi ke kelas ExcelLocal1033Proxy

Proyek yang dibuat dengan menggunakan Alat Microsoft Visual Studio 2005 untuk Sistem Microsoft Office membuat instans objek Excel Application dengan menggunakan Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy kelas . Kelas ini telah dihapus dari bagian runtime Visual Studio 2010 Tools for Office yang digunakan untuk solusi yang menargetkan .NET Framework 4 atau yang lebih baru. Oleh karena itu, Anda harus menghapus atau mengomentari baris kode yang mereferensikan kelas ini.

Untuk menghapus referensi ke kelas ExcelLocal1033Proxy

  1. Buka proyek di Visual Studio, lalu buka Penjelajah Solusi.

  2. Di Penjelajah Solusi, buka menu pintasan untuk ThisAddin.cs (untuk C#) atau ThisAddin.vb (untuk Visual Basic), lalu pilih Tampilkan Kode.

  3. Di Editor Kode, di wilayah tersebut VSTO generated code , hapus atau komentari baris kode berikut.

    this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);
    
    

Memperbarui kode yang menggunakan metode GetVstoObject dan HasVstoObject

Dalam proyek yang menargetkan .NET Framework 3.5, GetVstoObject metode atau HasVstoObject tersedia sebagai metode ekstensi pada salah satu objek asli berikut dalam proyek Anda: Document, , WorkbookWorksheet, atau ListObject. Ketika Anda memanggil metode ini, Anda tidak perlu meneruskan parameter. Contoh kode berikut menunjukkan cara menggunakan metode GetVstoObject dalam Add-in Word VSTO yang menargetkan .NET Framework 3.5.

Microsoft.Office.Tools.Word.Document vstoDocument =
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();

Dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru, Anda harus memodifikasi kode Anda untuk mengakses metode ini dengan salah satu cara berikut:

  • Anda masih dapat mengakses metode ini sebagai metode ekstensi pada Documentobjek , , WorkbookWorksheet, atau ListObject . Namun, Anda sekarang harus meneruskan objek yang dikembalikan oleh Globals.Factory properti ke metode ini.

    Microsoft.Office.Tools.Word.Document vstoDocument =
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
    
  • Anda juga dapat mengakses metode ini pada objek yang dikembalikan oleh Globals.Factory properti . Ketika Anda mengakses metode ini dengan cara ini, Anda harus meneruskan objek asli yang ingin Anda perluas ke metode .

    Microsoft.Office.Tools.Word.Document vstoDocument =
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
    

    Untuk informasi selengkapnya, lihat Memperluas dokumen Word dan buku kerja Excel di Add-in VSTO pada waktu proses.

Memperbarui kode yang menggunakan instans kelas yang dihasilkan dalam proyek tingkat dokumen

Dalam proyek tingkat dokumen yang menargetkan .NET Framework 3.5, kelas yang dihasilkan dalam proyek berasal dari kelas berikut di Visual Studio Tools untuk runtime Office :

  • ThisDocument: Document

  • ThisWorkbook: Workbook

  • Sheetn:Worksheet

  • Chartn:ChartSheet

    Dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru, jenis dalam Visual Studio Tools untuk runtime Office yang tercantum di atas adalah antarmuka, bukan kelas. Kelas yang dihasilkan dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru berasal dari kelas baru berikut di Visual Studio Tools untuk runtime Office :

  • ThisDocument: DocumentBase

  • ThisWorkbook: WorkbookBase

  • Sheetn:WorksheetBase

  • Chartn:ChartSheetBase

    Jika kode dalam proyek Anda mengacu pada instans salah satu kelas yang dihasilkan sebagai kelas dasar asalnya, Anda harus memodifikasi kode.

    Misalnya, dalam proyek Buku Kerja Excel yang menargetkan .NET Framework 3.5, Anda mungkin memiliki metode pembantu yang melakukan beberapa pekerjaan pada instans kelas n yang dihasilkan Sheetdalam proyek Anda.

private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
    // Do something to the worksheet object.
}

Jika Anda menargetkan ulang proyek ke .NET Framework 4 atau yang lebih baru, Anda harus membuat salah satu perubahan berikut pada kode Anda:

  • Ubah kode apa pun yang memanggil DoSomethingToSheet metode untuk meneruskan Base properti WorksheetBase objek dalam proyek Anda. Properti ini mengembalikan Worksheet objek.

    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • DoSomethingToSheet Ubah parameter metode untuk mengharapkan WorksheetBase objek sebagai gantinya.

    private void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet)
    {
        // Do something to the worksheet object.
    }
    

Memperbarui kode yang menggunakan kontrol Formulir Windows pada dokumen

Anda harus menambahkan pernyataan menggunakan (C#) atau Impor (Visual Basic) untuk Microsoft.Office.Tools.Excel namespace atau Microsoft.Office.Tools.Word ke bagian atas file kode apa pun yang menggunakan properti Kontrol untuk menambahkan kontrol Formulir Windows ke dokumen atau lembar kerja secara terprogram.

Dalam proyek yang menargetkan .NET Framework 3.5, metode yang menambahkan kontrol Formulir Windows (seperti AddButton metode) didefinisikan dalam ControlCollection kelas dan ControlCollection .

Dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru, metode ini adalah metode ekstensi yang tersedia pada properti Kontrol. Untuk menggunakan metode ekstensi ini, file kode tempat Anda menggunakan metode harus memiliki pernyataan penggunaan atau Impor untuk Microsoft.Office.Tools.Excel namespace layanan atau Microsoft.Office.Tools.Word . Pernyataan ini dihasilkan secara otomatis dalam proyek baru yang menargetkan .NET Framework 4 atau yang lebih baru. Namun, pernyataan ini tidak ditambahkan secara otomatis dalam proyek yang menargetkan .NET Framework 3.5, jadi Anda harus menambahkannya saat Anda menargetkan ulang proyek.

Untuk informasi selengkapnya, lihat Menambahkan kontrol ke dokumen Office pada waktu proses.

Memperbarui kode yang menangani peristiwa kontrol konten Word

Dalam proyek yang menargetkan .NET Framework 3.5, peristiwa kontrol konten Word ditangani oleh delegasi generik EventHandler<TEventArgs> . Dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru, peristiwa ini ditangani oleh delegasi lain.

Tabel berikut mencantumkan peristiwa kontrol konten Word dan delegasi yang terkait dengannya dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru.

Kejadian Mendelegasikan untuk digunakan dalam proyek .NET Framework 4 dan yang lebih baru
Added ContentControlAddedEventHandler
ContentUpdating ContentControlContentUpdatingEventHandler
Deleting ContentControlDeletingEventHandler
Entering ContentControlEnteringEventHandler
Exiting ContentControlExitingEventHandler
StoreUpdating ContentControlStoreUpdatingEventHandler

Memperbarui kode yang menggunakan kelas OLEObject dan OLEControl

Dalam proyek yang menargetkan .NET Framework 3.5, Anda bisa menambahkan kontrol kustom (seperti Formulir Windows kontrol pengguna) ke dokumen atau lembar kerja dengan menggunakan Microsoft.Office.Tools.Excel.OLEObject kelas dan Microsoft.Office.Tools.Word.OLEControl .

Dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru, kelas-kelas ini telah digantikan oleh ControlSite antarmuka dan ControlSite . Anda harus mengubah kode yang merujuk ke Microsoft.Office.Tools.Excel.OLEObject dan Microsoft.Office.Tools.Word.OLEControl sebagai gantinya merujuk ke ControlSite dan ControlSite. Selain nama baru, kontrol ini bereaksi sama seperti yang mereka lakukan dalam proyek yang menargetkan .NET Framework 3.5.

Untuk informasi selengkapnya, lihat Menambahkan kontrol ke dokumen Office pada waktu proses.

Memperbarui kode yang menggunakan properti Controls.Item(Object)

Dalam proyek yang menargetkan .NET Framework 3.5, Anda bisa menggunakan properti Item(Objek) dari Microsoft.Office.Tools.Word.Document.Controls atau Microsoft.Office.Tools.Excel.Worksheet.Controls koleksi untuk menentukan apakah dokumen atau lembar kerja memiliki kontrol yang ditentukan.

Dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru, properti Item(Object) telah dihapus dari koleksi ini. Untuk menentukan apakah dokumen atau lembar kerja berisi kontrol tertentu, gunakan metode Contains(System.Object) dari kumpulan atau Controls sebagai gantinyaControls.

Untuk informasi selengkapnya tentang kumpulan kontrol dokumen dan lembar kerja, lihat Menambahkan kontrol ke dokumen Office pada waktu proses.

Memperbarui kode yang menggunakan koleksi yang berasal dari CollectionBase

Dalam proyek yang menargetkan .NET Framework 3.5, beberapa jenis koleksi di runtime Visual Studio Tools for Office berasal dari CollectionBase kelas, seperti Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, dan Microsoft.Office.Tools.Word.ControlCollection.

Dalam proyek yang menargetkan .NET Framework 4 atau yang lebih baru, jenis koleksi ini sekarang adalah antarmuka yang tidak berasal dari CollectionBase. Beberapa anggota tidak lagi tersedia pada jenis koleksi ini, seperti Capacity, , Listdan InnerList.