Office: VBA-Code kompilieren

Helfe beim Thema VBA-Code kompilieren in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Guten Morgen, ich habe hier ein Programm, das in VB geschrieben wurde. Dieses greift auf eine Access-Datenbank zu. Darin gibt es Berichte mit VBA-Code... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Thomas_Engel, 21. September 2003.

  1. VBA-Code kompilieren


    Guten Morgen,

    ich habe hier ein Programm, das in VB geschrieben wurde. Dieses greift auf eine Access-Datenbank zu. Darin gibt es Berichte mit VBA-Code im Drucken-Ereignis. Nun läuft das einigermassen langsam und ich vermute, das liegt daran, dass der VBA-Code jedesmal zur Laufzeit zuerst kompiliert werden muss.
    Gibt es eine Möglichkeit, diesen VBA-Code in das kompilierte VB-Programm zu übernehmen, damit das schneller läuft?

    Danke schon mal
    Thomas

    :)
     
    Thomas_Engel, 21. September 2003
    #1
  2. Du kannst in der Entwurfsansicht des Bericht in den Code gehen und den Menüpunkt "Testen --> Alle Module kompilieren und speichern" (Access97) auswählen. Bei den anderen Access Versionen heißt der Punkt "Debuggen" oder so.

    Ich schätze aber, dass die Geschwindigkeit eher mit der zugrundeliegenden Abfrage zu tun hat. Wie sieht der VBA-Code denn aus?
     
    Thomas Braun, 22. September 2003
    #2
  3. Hi Thomas,

    das Debuggen wird nicht viel bringen, weil der Code ja funktioniert. Es ist einfach für meinen Geschmack zu langsam. Das liegt eben vermutlich daran, weil der Code bei jedem Ausführen neu kompiliert wird. Wäre der Code in meiner EXE-Datei, dann wäre er eben schon kompiliert. Ich habe auch schon versucht, die mdb in eine mde umzuwandeln. Das bringt aber auch keine Geschwindigkeit.
    Hier jedenfalls mal der Code:

    Das ist der Code im Bericht:
    Code:
    Das ist der Code von Mudul1
    Code:
    Grüsse
    Thomas
     
    Thomas_Engel, 22. September 2003
    #3
  4. VBA-Code kompilieren

    Am kompilieren liegts m.E. definitiv nicht. In der mde hast du nur kompilierten Code und mit der läufts ja auch nicht schneller.
    Ich habe mir den Code jetzt nicht bis ins Detail angesehen, aber eigentlich sollten die Einstellungen auch durch einen ordentlichen Berichtsentwurf gemacht werden können.
    Vielleicht liegts ja doch an der Datenherkunft.
    Du kannst ja mal testen, wie lange die zugrundeliegende Abfrage zum Anzeigen der Daten braucht.
     
    Thomas Braun, 23. September 2003
    #4
  5. Dass der Bericht langsam ist wundert mich bei diesem Code nicht.

    Da würde auch ein Übernehmen in VB - was so nicht geht - gar nichts bringen. (Im Gegenteil, da der Bericht unter Access läuft, jedoch von VB aus gesteuert würde, würde noch mehr Rechenpower für die Automation draufgehen.)

    Es liegt auch ein Missverständnis vor: Access kompiliert seinen VBA-Code nicht jedesmal, wenn es ihn aufruft. Ist er nach der letzen Änderung erst einmal kompiliert, so bleibt das auch so.

    Es scheint zwar ein superdynamaischer Bericht zu sein, in dem das Layout jedem einzelnen Feld bzw. der Größe seines Inhalts angepasst wird - und der Entwickler hat sich wirklich Mühe gegeben - aber bei vielen Seiten im Bericht ist die Kehrseite eben, dass diese Berechnungen ziemlich lange dauern. Damit wirst du leben müssen.

    Ciao, Sascha
     
    Sascha Trowitzsch, 23. September 2003
    #5
  6. \@Thomas:
    Leider lässt sich das, was der Code bewirkt nicht im Berichtsentwurf realisieren. Sieh mal hier:
    Das hier zeigt einen Berichtsauschnitt mit 2 Datensätzen ohne Formatierung per VBA-Code:

    VBA-Code kompilieren [​IMG]



    Und dieses hier zeigt dasselbe aber mit Formatierung:

    VBA-Code kompilieren [​IMG]


    Es geht dabei darum, einzelne Berichtsfelder am unteren Rand eines anderen Feldes auszurichten, welches dynamisch seine Grösse an den beinhaltenden Text angleicht. Das kann Access aber von sich aus nicht.

    @Sascha:
    Nun ist es so, meine Anwendung lässt Access im Hintergrund starten und schliesst Access auch gleich nach dem Druck wieder. Access bleibt also für den Anwender unsichtbar. Glaubst Du, es würde was bringen, Access im Hintergrund laufen zu lassen damit Access sofort verfügbar ist?


    Grüsse und danke für Eure Mithilfe
    Thomas
     
    Thomas_Engel, 23. September 2003
    #6
  7. Tja Gott, wenn der Bericht öfters aufgerufen wird, so ist es sicher sinnvoll, nicht jedesmal extra Access anzuschmeißen und die DB zu laden.
    Ja, da würde ich beim ersten Start des Berichts das Access-Objekt laden und dann geöffnet lassen und erst beim Beenden deines Programm ebenfalls entladen.

    Ciao, Sascha
     
    Sascha Trowitzsch, 23. September 2003
    #7
  8. VBA-Code kompilieren

    Danke Sascha,

    teste ich mal. Da muss ich natürlich auch noch eine Boolean-Variable auf true setzen, wenn Access geöffnet wird bzw. auf false, wenn Access beendet wird. Nicht dass ich dann den ganzen Arbeitspeicher mit Dutzenden Access.exes gefüllt habe :-)

    Grüsse
    Thomas
     
    Thomas_Engel, 23. September 2003
    #8
  9. Das brauchst du nicht, wenn du die Automation mit

    GetObject(,"Deine.mdb")

    bewerkstelligst.
    Falls Access mit der DB noch nicht offen ist, so wird es geöffnet.
    Falls es schon offen ist, so wird keine neue Instanz geöffnet, sondern auf die bereits geöffnete verwiesen.

    Ciao, Sascha
     
    Sascha Trowitzsch, 23. September 2003
    #9
  10. Danke Sascha,

    so meinte ich das eigentlich auch:
    Code:
    Grüsse
    Thomas
     
    Thomas_Engel, 24. September 2003
    #10
  11. Aber ich meinte es nicht so.

    Es reicht einfach:

    Set appAcc = GetObject(sDbPath)

    Es muss damit nicht überprüft werden, ob Access schon offen ist.
    (s. Hilfe zu GetObject.)

    Mit GetObject wird nicht jedesmal eine neue Instanz gestartet. Umgekehrt: Falls noch keine Instanz besteht, dann erzeugt es eine. So intelligent ist die Funktion! *wink.gif*

    Deshalb kannst du dir das mit der Boolschen sparen.

    Ciao, Sascha
     
    Sascha Trowitzsch, 24. September 2003
    #11
  12. Staunemann und Söhne! Tatsächlich, das wusste ich gar nicht.
    Tja, man lernt eben nie aus :-)

    Danke für diesen Tipp

    viele Grüsse
    Thomas
     
    Thomas_Engel, 24. September 2003
    #12
Thema:

VBA-Code kompilieren

Die Seite wird geladen...
  1. VBA-Code kompilieren - Similar Threads - VBA Code kompilieren

  2. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  3. VBA Code für Zeilen ausblenden einblenden mit JA/Nein

    in Microsoft Excel Hilfe
    VBA Code für Zeilen ausblenden einblenden mit JA/Nein: Hallo, habe eine Exceltabelle, bei der ich bei einer Zelle eine Ja/Nein abfrage mache, wenn in der Zelle Nein steht, dann soll ein bestimmter Zeilenbereich, den ich definieren möchte, ausgeblendet...
  4. VBA Code ohne ergebnis

    in Microsoft Excel Hilfe
    VBA Code ohne ergebnis: Hallo, ich habe einen VBA Code der in meiner Tabelle nicht funktioniert. Kann mir vielleicht jemand bei der Korrektur ggf. weiter helfen? Danke und Gruß Private Sub Worksheet_Change(ByVal Target...
  5. VBA Code Anpassen "Wert Einfügen statt Formel"

    in Microsoft Excel Hilfe
    VBA Code Anpassen "Wert Einfügen statt Formel": Hallo alle zusammen. Ich benötige bitte Hilfe von einem Experten, da ich mit meinem Code unzufrieden bin und dieser bei größeren Datenmengen respektive Zeilen ziemlich langsam wird. Wie müsste man...
  6. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  7. VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst"

    in Microsoft Excel Hilfe
    VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst": Hallo Leute dieser Code für Zellenhöhe bei Verbundenen Zellen Funktioniert fast. Ich habe ein Code von jemand anderem bekommen der nicht in einem Forum ist. Ich kann gerade diese Person nicht...
  8. PDF mit Namen,Datum speichern im Zielordner

    in Microsoft Excel Hilfe
    PDF mit Namen,Datum speichern im Zielordner: Hallo, habe das Problem den Namen in Zelle D2, Vorname in Zelle D5 , das Datum steht in der Zelle B 10 und soll beim speichern so angezeigt werden (Max Mustermann 2023 Oktober) wie und wo muß ich...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden