Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

Sažetak

Prilikom automatizacije Office proizvoda iz Visual Basic, može biti korisno premjestiti dio koda u modul programa Microsoft Visual Basic for Applications (VBA) koji se može izvoditi unutar prostora procesa poslužitelja. To može povećati ukupnu brzinu izvršenja aplikacije i olakšati probleme ako poslužitelj izvršava akciju samo kada je poziv u tijeku.

U ovom se članku pokazuje kako dinamički dodati VBA modul u pokrenutu aplikaciju Office programa Visual Basic, a zatim pozvati makronaredbu da bi radni list ispunio u tijeku.

Dodatne informacije

Sljedeći uzorak pokazuje umetanje modula koda u Microsoft Excel, ali možete koristiti istu tehniku za Word i PowerPoint jer obje uključuju isti VBA modul.

Uzorak koristi statičnu tekstnu datoteku za modul koda koji je umetnut u Excel. Preporučujemo da razmislite o premještanju koda u datoteku resursa koju možete sastaviti u aplikaciju, a zatim izdvojiti u privremenu datoteku kada je to potrebno u vrijeme izvoditi. Time bi se projektom bolje upravljao za ponovno raspodiobu.

Počevši od Microsoft Office XP, korisnik mora odobriti pristup VBA modelu objekta prije nego što bilo koji kod automatizacije napisan za upravljanje VBA-om funkcionira. To je nova sigurnosna značajka s Office XP. Dodatne informacije potražite u sljedećem članku iz baze znanja:

282830 Programski pristup Office VBA Project XP

Koraci za izradu uzorka

  1. Najprije stvorite novu tekstnu datoteku pod nazivom KbTest.bas (bez .txt proširenja). To je modul koda koji ćemo umetnuti u Excel tijekom vremena.

  2. U tekstnu datoteku dodajte sljedeće retke koda:

       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. Spremite tekstnu datoteku u direktorij C:\KbTest.bas, a zatim zatvorite datoteku.

  4. Pokrenite Visual Basic i stvorite standardni projekt. Obrazac1 po zadanom se stvara.

  5. Na izborniku ProjectklikniteReferencije, a zatim odaberite odgovarajuću verziju biblioteke vrsta koja omogućuje korištenje ranog povezivanja za Excel.

    Na primjer, odaberite nešto od sljedećeg:

    • Da Microsoft Office Excel 2007, odaberite biblioteku 12.0.

    • Da Microsoft Office Excel 2003, odaberite biblioteku 11.0.

    • Da Microsoft Excel 2002, odaberite biblioteku 10.0.

    • Da Microsoft Excel 2000, odaberite biblioteku 9.0.

    • Da Microsoft Excel 97, odaberite biblioteku 8.0.

  6. Dodajte gumb u Obrazac1 i postavite sljedeći kod u rukovatelj za događaj klika na gumb:

       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. Da Excel 2002 i novijim verzijama programa Excel, morate uključiti pristup VBA projektu. Da biste to učiniti, koristite jedan od sljedećih načina:

    • U Excel 2007 kliknite gumb Microsoft Office, a zatim mogućnosti Excel mogućnosti. Kliknite Centar za pouzdanost, a zatim Centar za pouzdanost Postavke. Kliknite Makronaredba Postavke, kliknite da biste odabrali potvrdni okvir Pristup pouzdanosti modelu objekta VBA projekta, a zatim dvaput kliknite U redu.

    • U Excel 2003 i u starijim verzijama programa Excel pokažite na Makronaredba na izborniku Alati, a zatim kliknite Sigurnost. U dijaloškom okviru Sigurnost kliknite karticu Pouzdani izvori, a zatim potvrdite okvir Pouzdani pristup Visual Basic Project pouzdanim izvorima.

  8. Pokrenite Visual Basic projekt.

Reference

Dodatne informacije o automatizaciji Office s Visual Basic potražite na web-mjestu Office razvojne podrške na sljedećoj adresi:

http://support.microsoft.com/ofd

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×