Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Podsumowanie

Automatyzowanie produktu pakietu Office z programu Visual Basic może być przydatne przeniesienie części kodu do modułu programu Microsoft Visual Basic for Applications (VBA), który może działać wewnątrz obszaru procesu serwera. Może to zwiększyć ogólną szybkość wykonywania dla twojej aplikacji i pomóc złagodzić problemy, jeśli serwer przenosi akcję tylko w trakcie wykonywania połączenia w trakcie procesu.

W tym artykule pokazano, jak dynamicznie dodać moduł VBA do uruchomionej aplikacji Office z programu Visual Basic, a następnie wywołać makro w celu wypełnienia arkusza w trakcie procesu.

Więcej informacji

Poniższy przykład przedstawia wstawianie modułu kodu do programu Microsoft Excel, ale tę samą technikę można stosować w programach Word i PowerPoint, ponieważ oba te aparaty zawierają ten sam aparat VBA.

W tym przykładzie użyto statycznego pliku tekstowego dla modułu kodu wstawionego do Excel. Możesz rozważyć przeniesienie kodu do pliku zasobu, który możesz skompilować w aplikacji, a następnie wyodrębnić do pliku tymczasowego, gdy będzie to konieczne podczas uruchamiania. Dzięki temu projekt będzie można zarządzać jeszcze bardziej w celu ponownego rozmieszczenia.

Rozpoczynając od Microsoft Office XP, użytkownik musi udzielić dostępu do modelu obiektowego VBA, zanim będzie działał dowolny kod automatyzacji napisany w celu manipulowania kodem VBA. To nowa funkcja zabezpieczeń z dodatkiem do Office XP. Aby uzyskać więcej informacji, zobacz następujący artykuł z bazy wiedzy:

282830 Programmatic Access to Office XP VBA Project denied

Procedura tworzenia przykładowego

  1. Najpierw utwórz nowy plik tekstowy o nazwie KbTest.bas (bez .txt tekstowego). Jest to moduł kodu, który wstawimy do Excel uruchomieniu.

  2. W pliku tekstowym dodaj następujące wiersze kodu:

       Attribute VB_Name = "KbTest"

    ' Your Microsoft Visual Basic for Applications macro function takes 1
    ' parameter, the sheet object that you are going to fill.

    Public Sub DoKbTest(oSheetToFill As Object)
    Dim i As Integer, j As Integer
    Dim sMsg As String
    For i = 1 To 100
    For j = 1 To 10

    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheetToFill.Cells(i, j).Value = sMsg
    Next j
    Next i
    End Sub
  3. Zapisz plik tekstowy w katalogu C:\KbTest.bas, a następnie zamknij plik.

  4. Rozpocznij Visual Basic i utwórz projekt standardowy. Domyślnie jest tworzony formularz 1.

  5. W menu Projectkliknij polecenie Wnioski, a następnie wybierz odpowiednią wersję biblioteki typów, która pozwoli na używanie wczesnego powiązania z Excel.

    Na przykład wybierz jedną z następujących opcji:

    • W Microsoft Office Excel 2007 wybierz bibliotekę 12.0.

    • W Microsoft Office Excel 2003 wybierz bibliotekę 11.0.

    • W Microsoft Excel 2002 wybierz bibliotekę 10.0.

    • W Microsoft Excel 2000 wybierz bibliotekę 9.0.

    • Aby Microsoft Excel 97, wybierz bibliotekę 8.0.

  6. Dodaj przycisk do formularza Form1 i umieść następujący kod w programie obsługi zdarzenia Click przycisku:

       Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim i As Integer, j As Integer
    Dim sMsg As String

    ' Create a new instance of Excel and make it visible.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Add a new workbook and set a reference to Sheet1.
    Set oBook = oXL.Workbooks.Add
    Set oSheet = oBook.Sheets(1)

    ' Demo standard Automation from out-of-process,
    ' this routine simply fills in values of cells.
    sMsg = "Fill the sheet from out-of-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    For i = 1 To 100
    For j = 1 To 10
    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheet.Cells(i, j).Value = sMsg
    Next j
    Next i

    ' You're done with the first test, now switch sheets
    ' and run the same routine via an inserted Microsoft Visual Basic
    ' for Applications macro.
    MsgBox "Done.", vbMsgBoxSetForeground
    Set oSheet = oBook.Sheets.Add
    oSheet.Activate

    sMsg = "Fill the sheet from in-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    ' The Import method lets you add modules to VBA at
    ' run time. Change the file path to match the location
    ' of the text file you created in step 3.
    oXL.VBE.ActiveVBProject.VBComponents.Import "C:\KbTest.bas"

    ' Now run the macro, passing oSheet as the first parameter
    oXL.Run "DoKbTest", oSheet

    ' You're done with the second test
    MsgBox "Done.", vbMsgBoxSetForeground

    ' Turn instance of Excel over to end user and release
    ' any outstanding object references.
    oXL.UserControl = True
    Set oSheet = Nothing
    Set oBook = Nothing
    Set oXL = Nothing

    End Sub
  7. Aby Excel 2002 i nowsze wersje programu Excel, musisz włączyć dostęp do projektu VBA. W tym celu zastosuj jedną z następujących metod:

    • W Excel 2007 kliknij przycisk Microsoft Office, a następnie kliknij pozycję Excel opcje. Kliknij pozycję Centrum zaufania, a następnie kliknij pozycję Centrum Ustawienia. Kliknij pozycję Ustawienia, zaznacz pole wyboru Ufaj dostępowi do modelu obiektowego projektu VBA, a następnie kliknij dwa razy przycisk OK.

    • W Excel 2003 i starszych wersjach programu Excel wskaż polecenie Makro w menu Narzędzia, a następnie kliknij polecenie Zabezpieczenia. W oknie dialogowym Zabezpieczenia kliknij kartę Zaufane źródła, a następnie kliknij, aby zaznaczyć pole wyboru Ufaj dostępowi Visual Basic Project sieci.

  8. Uruchom Visual Basic projektu.

Informacje

Aby uzyskać więcej informacji na temat automatyzacji Office z Visual Basic, zobacz witrynę Office pomocy technicznej dla rozwoju pod następującym adresem:

http://support.microsoft.com/ofd

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×