مشاركة عبر


كيفية القيام بما يلي: إضافة أوامر إلى القوائم المختصرة في Excel

ينطبق على

تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع.

نوع المشروع

  • مشروعات على مستوى المستند

  • مشروعات على مستوى التطبيق

إصدار Microsoft Office

  • Excel 2007

  • Excel 2010

تطبيق بفحص السجل للإدخالات التي تعرف إضافة-زر 'Ins' التي تم إنشاؤها باستخدام أدوات تطوير المكتب في ‏‫Visual Studio. إذا وجد تطبيق إدخالات السجل هذه، يقوم تطبيق بتحميل VSTOEE.dll، الذي يحمل VSTOLoader.dll. عندما يقوم المستخدم بالنقر فوق الأمر يتم كتابة النص الموجود في الخلايا المحددة فى ملف نصى.

للحصول على مثال يوضح كيفية إنشاء قائمة مختصرة في Word، راجع كيفية القيام بما يلي: إضافة أوامر إلى قوائم مختصرة في Word.

قم بإضافة التعليمات البرمجية التالية إلى الفئة ThisAddIn في مشروع على مستوى التطبيق لـ .

مثال

Private WithEvents writeToText As Office.CommandBarButton
Private selectedCells As Excel.Range

Private Sub ThisAddIn_Startup(ByVal sender _
    As Object, ByVal e As System.EventArgs) Handles Me.Startup

    DefineShortcutMenu()
End Sub

Private Sub DefineShortcutMenu()

    Dim menuItem As Office.MsoControlType = Office.MsoControlType.msoControlButton
    writeToText = Application.CommandBars("Cell").Controls.Add(Type:=menuItem, _
        Before:=1, Temporary:=True)

    writeToText.Style = Office.MsoButtonStyle.msoButtonCaption
    writeToText.Caption = "Write to a Text File"
    writeToText.Tag = "0"
End Sub

Private Sub Application_SheetBeforeRightClick(ByVal Sh _
    As Object, ByVal Target As Excel.Range, _
    ByRef Cancel As Boolean) Handles Application.SheetBeforeRightClick

    selectedCells = Target
End Sub

Private Sub writeToText_Click(ByVal Ctrl As Office.CommandBarButton, _
    ByRef CancelDefault As Boolean) Handles writeToText.Click

    Try
        Dim currentDateTime As System.DateTime = _
            System.DateTime.Now
        Dim dateStamp As String = _
            currentDateTime.ToString("dMMMMyyyy_hh.mm.ss")

        Dim fileName As String = System.Environment.GetFolderPath( _
            Environment.SpecialFolder.MyDocuments) & "\\" & _
            dateStamp & ".txt"
        Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(fileName)

        For Each cell As Excel.Range In selectedCells.Cells
            If cell.Value2 IsNot Nothing Then
                sw.WriteLine(cell.Value2.ToString())
            End If
        Next
        sw.Close()
    Catch ex As Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try

End Sub
private Office.CommandBarButton writeToText;
private Excel.Range selectedCells;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    DefineShortcutMenu();
    Application.SheetBeforeRightClick +=
        new Excel.AppEvents_SheetBeforeRightClickEventHandler
            (Application_SheetBeforeRightClick);
    writeToText.Click +=
        new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler
            (writeToText_Click);
}

void writeToText_Click(Office.CommandBarButton Ctrl,
    ref bool CancelDefault)
{
    try
    {
        System.DateTime currentDateTime = System.DateTime.Now;
        string dateStamp = currentDateTime.ToString("dMMMMyyyy_hh.mm.ss");

        string fileName =
            System.Environment.GetFolderPath
            (Environment.SpecialFolder.MyDocuments) + "\\\\" + dateStamp + ".txt";
        System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName);

        foreach (Excel.Range cell in selectedCells.Cells)
        {
            if (cell.Value2 != null)
            {
                sw.WriteLine(cell.Value2.ToString());
            }
        }
        sw.Close();
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message);
    }
}
void Application_SheetBeforeRightClick(object Sh,
    Excel.Range Target, ref bool Cancel)
{
    selectedCells = Target;
}

private void DefineShortcutMenu()
{

    Office.MsoControlType menuItem = Office.MsoControlType.msoControlButton;
    writeToText = (Office.CommandBarButton)Application.CommandBars["Cell"].
        Controls.Add(menuItem, missing, missing, 1, true);

    writeToText.Style = Office.MsoButtonStyle.msoButtonCaption;
    writeToText.Caption = "Write to a Text File";
    writeToText.Tag = "0";
}

برمجة نشطة

يجب عليك تعيين خاصيه Tag لعناصر التحكم عند إضافة معالجات الحدث. يستخدم Office الخاصية Tag لمتابعة تعقب معالجات الأحداث لـ CommandBarControl خاص. إذا كانت خاصية Tag فارغة، لايتم معالجة الأحداث بشكل صحيح.

قم بالتصريح بمتغيرات القائمة على مستوى الفئة بدلاً من داخل الأسلوب حيث يتم استدعاؤهم . هذا يضمن أن متغيرات القامة ستظل في النطاق طالما يتم تشغيل التطبيق. وإلا، فستتم إزالة العنصر بواسطة مجمع المهملات ثم تتوقف التعليمات البرمجية الخاصة بمعالج الحدث عن العمل.

راجع أيضًا:

المهام

كيفية القيام بما يلي: إنشاء أشرطة أدوات Office

الإرشادات التفصيلية: إنشاء قوائم مختصرة للإشارات المرجعية

كيفية القيام بما يلي: إضافة أوامر إلى قوائم مختصرة في Word

كيفية القيام بما يلي: اضافة القوائم المخصصة و عناصر القائمة إلى Outlook

كيفية القيام بما يلي: إضافة أيقونات مخصصة لشريط الأدوات و عناصر القائمة

المبادئ

المعلمات الاختيارية في حلول Office

موارد أخرى

تخصيص واجهة Office