2014-12-19 22 views
6

tôi đã triển khai thành công Microsoft mẫu "Walkthrough: Đồng bộ hóa Custom Task Pane với một nút Ribbon" được tìm thấy ở đây: http://msdn.microsoft.com/en-us/library/bb608590.aspxTuỳ chỉnh nhiệm vụ cửa sổ với nhiều workbook mở

Ban đầu tôi chạy vào một vấn đề với cửa sổ nhiệm vụ không hiển thị, mà hóa ra là kết quả của một số xung đột giữa bổ trợ của tôi và "Analysis Toolpack" của Microsoft. Khi tôi vô hiệu hóa Analysis Toolpack, ngăn tác vụ tùy chỉnh bắt đầu hiển thị và ẩn như mong đợi.

Sau đó tôi đã viết một số mã để thay đổi các ô trong phạm vi được chọn khi người dùng nhấn một nút. Điều đó dường như hoạt động tốt - cho đến khi tôi mở một bảng tính khác! Mỗi cửa sổ bảng tính có ribbon bổ trợ của riêng mình, nhưng khi tôi nhấp vào nút bật/tắt để mở/đóng ngăn tác vụ tùy chỉnh, nó sẽ chỉ mở/đóng ngăn tác vụ tùy chỉnh cho cửa sổ đầu tiên được tạo. Đây là bất kể cửa sổ nào tôi nhấp vào nút chuyển đổi.

Mã này khởi tạo đối tượng CustomTaskPane trong ThisAddIn_Startup (giống như trong mã ví dụ). Điều duy nhất tôi đã thêm thực sự là thao tác nút trong UserControl:

using xl = Microsoft.Office.Interop.Excel; 

namespace SynchronizeTaskPaneAndRibbon 
{ 
    public partial class TaskPaneControl : UserControl 
    { 
     public TaskPaneControl() 
     { 
      InitializeComponent(); 
     } 

     private void actionButton1_Click(object sender, EventArgs e) 
     { 
      xl.Range selection_rng = Globals.ThisAddIn.Application.Selection; 

      foreach (xl.Range cell in selection_rng.Cells) 
      { 
       if (cell.Value is string) 
       { 
        string v = cell.Value; 
        cell.Value = v + "*"; 
       } 
      } 
     } 
    } 
} 

Phần còn lại của mã cũng giống như trong ví dụ.

Có cách nào thay đổi ví dụ để nó hoạt động để mở nhiều sổ làm việc không? Những gì tôi muốn là cho cùng một Add-In xuất hiện trong mỗi cửa sổ sổ làm việc, với cùng một Ribbon và với cùng một khung tùy chỉnh. Và, tất nhiên, để có bất kỳ hành động băng (chẳng hạn như một nút bấm) tuyến đến ngăn tác vụ tùy chỉnh xuất hiện trong cùng một cửa sổ.

Trả lời

0

Có một ví dụ khác về MSDN nói về quản lý tác vụ tùy chỉnh trong nhiều tài liệu. Do lưu ý rằng đây là từ quan điểm của Word/InfoPath nhưng ý tưởng cơ bản sẽ giống nhau cho Excel.

Nói chung, bạn cần phải thêm một taskpane mới cho sổ làm việc hiện tại nếu nó không có. Vì vậy, hãy di chuyển thêm logic tùy chỉnh taskpane từ sự khởi động Addin vào sự kiện bấm nút ribbon. Làm điều này trong sự kiện nhấn nút cho bạn cơ hội để thêm một taskpane mới vào tài liệu hiện tại khi ribbon được click.

Link: https://msdn.microsoft.com/en-us/library/bb264456(v=office.12).aspx?f=255&MSPPError=-2147217396#Anchor_2

Đưa các đoạn mã hữu ích dưới đây trong trường hợp liên kết đi chết trong tương lai:

//Add a custom taskpane to active Word document 
public void AddCalendarTaskPane(Word.Document doc) 
{ 
    ctpCalendar = this.CustomTaskPanes.Add(new CalendarControl(), 
     "Select a date", doc.ActiveWindow); 
    ctpCalendar.Visible = true; 
} 

Thay vì loại bỏ, tôi khuyên bạn nên ẩn taskpane bởi Toggling cờ Visible false nhưng YMMV . Hi vọng điêu nay co ich.

Các vấn đề liên quan