Kirjaudu sisään Microsoft-tilillä
Kirjaudu sisään tai luo tili.
Hei,
Käytä toista tiliä.
Sinulla on useita tilejä
Valitse tili, jolla haluat kirjautua sisään.

Yhteenveto

Kun Office-tuotetta Visual Basic, voi olla hyödyllistä siirtää osa koodista Microsoft Visual Basic for Applications (VBA) -moduuliin, joka voidaan suorittaa palvelimen prosessitilan sisällä. Tämä voi nopeuttaa sovelluksen yleistä suoritusnopeutta ja auttaa lieventämään ongelmia, jos palvelin suorittaa toiminnon vain, kun puhelu tehdään prosessissa.

Tässä artikkelissa esitellään, miten VOIT lisätä VBA-moduulin dynaamisesti Office-sovellukseen Visual Basic ja kutsua sitten makron täyttämään laskentataulukon prosessin aikana.

Lisätietoja

Seuraavassa esimerkissä esitellään koodimoduulin Microsoft Excel, mutta voit käyttää samaa menetelmää Wordissa ja Wordissa PowerPoint koska molemmat käyttävät samaa VBA-moduulia.

Mallissa käytetään staattista tekstitiedostoa koodimoduulille, joka lisätään Excel. Haluat ehkä siirtää koodin resurssitiedostoon, jonka voit kääntää sovellukseesi, ja purkaa sen sitten tilapäiseen tiedostoon tarvittaessa. Näin projektia voi hallita paremmin uudelleenjakamista varten.

Kun Microsoft Office XP:stä alkaen, käyttäjän on myönnettävä VBA-objektimallin käyttöoikeudet, ennen kuin VBA:n käsittelyä varten kirjoitettu automaatiokoodi toimii. Tämä on uusi XP:n Office suojausominaisuus. Lisätietoja on seuraavassa Knowledge Base -artikkelissa:

282830 XP:n VBA-Office ohjelmallinen Project on estetty

Mallien muodostaminen

  1. Luo ensin uusi KbTest.bas-tekstitiedosto (.txt tunnistetta). Tämä on koodimoduuli, jonka lisäämme Excel suorituksen aikana.

  2. Lisää tekstitiedostoon seuraavat koodirivit:

       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. Tallenna tekstitiedosto C:\KbTest.bas-hakemistoon ja sulje tiedosto.

  4. Aloita Visual Basic ja luo vakioprojekti. Lomake1 luodaan oletusarvoisesti.

  5. Valitse Project-valikossaReferences ja valitse sitten kirjaston versiotyyppi, jonka avulla voit käyttää varhaista sidontaa Excel.

    Valitse esimerkiksi jokin seuraavista:

    • Valitse Microsoft Office Excel 2007:ssä 12.0-kirjasto.

    • Valitse Microsoft Office Excel 2003:ssa 11.0-kirjasto.

    • Valitse Microsoft Excel 2002:ssa 10.0-kirjasto.

    • Valitse Microsoft Excel 2000:ssa 9.0-kirjasto.

    • Jos Microsoft Excel 97, valitse 8.0-kirjasto.

  6. Lisää painike Lomake1:ssä ja sijoita seuraava koodi painikkeen Click-tapahtuman käsittelyriin:

       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. For Excel 2002 and for later versions of Excel, you must turn on access the access the VBA project. Voit tehdä tämän jollakin seuraavista tavoista:

    • Napsauta Excel 2007:ssä Microsoft Office-painiketta ja valitse Excel asetukset. Valitse Luottamuskeskus ja valitse sitten Luottamuskeskuksen Asetukset. Valitse Asetukset makrot, valitse Luota VBA-projektiobjektimallin Accessiin -valintaruutu ja valitse sitten OK kaksi kertaa.

    • Valitse Excel 2003:ssa ja Excel-versiossa Työkalut-valikossa Makro ja valitse sitten Suojaus. Valitse Suojaus-valintaikkunassa Luotetut lähteet -välilehti ja valitse sitten Luotetut lähteet -Visual Basic Project valintaruutu.

  8. Suorita Visual Basic projekti.

Lisätietoja

Lisätietoja Office Visual Basic automaatiosta on Office -sivustossa:

http://support.microsoft.com/ofd

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.

Osallistumalla yhteisöihin voit kysyä kysymyksiä ja vastata niihin, antaa palautetta sekä kuulla lisää asiantuntijoilta, joilla on runsaasti tietoa.

Oliko näistä tiedoista hyötyä?

Kuinka tyytyväinen olet käännöksen laatuun?
Mikä vaikutti kokemukseesi?
Kun valitset Lähetä, palautettasi käytetään Microsoftin tuotteiden ja palveluiden parantamiseen. IT-järjestelmänvalvojasi voi kerätä nämä tiedot. Tietosuojatiedot.

Kiitos palautteesta!

×