Udostępnij za pośrednictwem


Jak pobrać nazwy makr ze skoroszytu programu Excel przy użyciu programu Visual Basic 6.0

Podsumowanie

W tym artykule krok po kroku opisano sposób pobierania nazw makr ze skoroszytu programu Excel za pomocą programu Visual Basic 6.0.

Wymagania

Poniższe elementy opisują zalecany sprzęt, oprogramowanie, infrastrukturę sieciową, umiejętności i wiedzę oraz potrzebne dodatki Service Pack:

  • Excel 2000, Excel 2002, Office Excel 2003 lub Office Excel 2007
  • Makra programu Excel
  • Visual Basic dla aplikacji

Tworzenie skoroszytu programu Excel z dwoma makrami

  1. Uruchom program Excel. Zostanie utworzony nowy pusty skoroszyt.

  2. Naciśnij klawisze ALT+F11, aby uruchomić edytor Visual Basic.

  3. W Eksploratorze projektu kliknij dwukrotnie pozycję ThisWorkbook , aby uruchomić edytor kodu.

  4. Wklej następujący kod dla dwóch prostych makr w edytorze kodu:

    Option Explicit
    
    Sub Macro_A()
        MsgBox "This is Macro A"
    End Sub
    
    Sub Macro_B()
        MsgBox "This is Macro B"
    End Sub
    
  5. Zamknij Edytor Visual Basic i wróć do widoku arkusza kalkulacyjnego.

  6. W programie Excel 2003 i we wcześniejszych wersjach programu Excel zapisz skoroszyt jako C:\Abc.xls.

    W programie Excel 2007 zapisz skoroszyt jako skoroszyt z obsługą makr o nazwie C:\Abc.xlsm.

  7. Zamknij skoroszyt i zamknij program Excel.

Tworzenie aplikacji Visual Basic w celu wyświetlenia listy makr w skoroszycie

  1. W programie Visual Basic 6.0 utwórz nowy projekt standardu EXE.

  2. W menu Project (Projekt ) kliknij pozycję Odwołania. W oknie dialogowym Odwołania wybierz następujące odwołania:

    • Rozszerzalność Visual Basic for Applications Microsoft 5.3
    • W przypadku programu Microsoft Excel 2000: Biblioteka obiektów programu Microsoft Excel 9.0
    • W przypadku programu Microsoft Excel 2002: Biblioteka obiektów programu Microsoft Excel 10.0
    • W przypadku programu Microsoft Office Excel 2003: Biblioteka obiektów programu Microsoft Excel 11.0
    • W przypadku programu Microsoft Office Excel 2007: Biblioteka obiektów programu Microsoft Excel 12.0
  3. Kliknij przycisk OK.

  4. Dodaj przycisk do formularza. Przycisk ma domyślną nazwę Command1.

  5. Dodaj pole listy do formularza. Pole listy ma domyślną nazwę List1.

  6. Zdefiniuj procedurę obsługi zdarzeń kliknięcia dla przycisku. Użyj następującego kodu dla tej procedury, aby wyświetlić informacje o makrach zdefiniowanych w C:\Abc.xls:

    Private Sub Command1_Click()
        ' Declare variables to access the Excel workbook.
        Dim objXLApp As Excel.Application
        Dim objXLWorkbooks As Excel.Workbooks
        Dim objXLABC As Excel.Workbook
    
    ' Declare variables to access the macros in the workbook.
        Dim objProject As VBIDE.VBProject
        Dim objComponent As VBIDE.VBComponent
        Dim objCode As VBIDE.CodeModule
    
    ' Declare other miscellaneous variables.
        Dim iLine As Integer
        Dim sProcName As String
        Dim pk As vbext_ProcKind
    
    ' Open Excel, and open the workbook.
        Set objXLApp = New Excel.Application
        Set objXLWorkbooks = objXLApp.Workbooks    
        Set objXLABC = objXLWorkbooks.Open("C:\ABC.XLS")
    
    ' Empty the list box.
        List1.Clear
    
    ' Get the project details in the workbook.
        Set objProject = objXLABC.VBProject
    
    ' Iterate through each component in the project.
        For Each objComponent In objProject.VBComponents
    
    ' Find the code module for the project.
            Set objCode = objComponent.CodeModule
    
    ' Scan through the code module, looking for procedures.
            iLine = 1
            Do While iLine < objCode.CountOfLines
                sProcName = objCode.ProcOfLine(iLine, pk)
                If sProcName <> "" Then
                    ' Found a procedure. Display its details, and then skip 
                    ' to the end of the procedure.
                    List1.AddItem objComponent.Name & vbTab & sProcName
                    iLine = iLine + objCode.ProcCountLines(sProcName, pk)
                Else
                    ' This line has no procedure, so go to the next line.
                    iLine = iLine + 1
                End If
            Loop
            Set objCode = Nothing
            Set objComponent = Nothing
        Next
    
    Set objProject = Nothing
    
    ' Clean up and exit.
        objXLABC.Close
        objXLApp.Quit
    End Sub
    
    

Testowanie przykładu

  1. Skompiluj i uruchom aplikację.
  2. Kliknij przycisk polecenia. W polu listy są wyświetlane nazwy wszystkich makr i skoroszytu, które je zawierają, w następujący sposób: ThisWorkbook Macro_A ThisWorkbook Macro_B

Rozwiązywanie problemów

Ze względu na rozszerzone zabezpieczenia w programach Excel 2002, Excel 2003 i Excel 2007 może zostać wyświetlony następujący komunikat o błędzie z programu Visual Basic podczas korzystania z programu Excel 2002, Excel 2003 lub Excel 2007: Programowy dostęp do programu Visual Basic Project nie jest zaufany.

Aby uzyskać więcej informacji na temat tego problemu i sposobu jego rozwiązania, kliknij następujący numer artykułu, aby wyświetlić artykuł w bazie wiedzy Microsoft Knowledge Base:

282830 PRB: Odmowa dostępu programowego do projektu VBA pakietu Office XP

Informacje

Aby uzyskać więcej informacji, zobacz następującą witrynę sieci Web microsoft developer network (MSDN):

Programowanie pakietu Microsoft Office przy użyciu programu Visual Studio

Aby uzyskać więcej informacji, zobacz artykuł z bazy wiedzy Knowledge Base:

219905 Jak dynamicznie dodawać i uruchamiać makro VBA z poziomu programu Visual Basic