Unterschied zwischen Makros und VBA?

Hallo,

worin besteht der Unterschied zwischen Makros und VBA?

Gruß, Fred

Hallo Fred,

worin besteht der Unterschied zwischen Makros und VBA?

Philosophisch:
Makro = Anfänger
VBA = Experte

Geschwindigkeit:
VBA = 1
Makro = 10 * VBA

Syntax:
Makro = kann man ablesen
VBA = muß man lernen

Umwandeln:
Makro = in VBA
VBA = nein

ich erspare mir hier alle anderen Gründe auch noch aufzuführen.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo,

worin besteht der Unterschied zwischen Makros und VBA?

Gruß, Fred

Macros bestehen aus VBA . In der hinsicht ist es das gleiche.
Es ist aber ein unterschied ob einer nur Macros erstellen kann ,die er per Macro Aufzeichnung erzeugt oder aber er Macros via VBA coding produziert.

Im ersteren Fall ist es eine klicksimulation, der Macro aufzeichner macht genau das was der User macht (leider auch nicht immer). Der dadurch erzeugte Code ist allerdings nicht effizient, selbst das scrolling des users wird mit aufgezeichnet. Dann wird auch meist das Macro im sichtmodus ausgeführt, was bedeutet das es sehr langsam ist (sieht aber echt geil aus wenn alles magisch hin und herspringt und die tabellen füllt , diagramme erstellt). Und wie gesagt es ist eine User simulation , ergo kann auch nur erreicht werden was ein user mit klicks und eingaben erreichen kann.

Im zweiten fall ist die grenze das VBA selber und das können des Coders. Wenn es machbar ist , kann es auch umgesetzt werden. Ein VBA coder weiss wie Office arbeitet und kann dementsprechen auch sehr viel manipulieren und sachen bewirken die mit keinem Klick machbar wären.
Der VBA coder steuert also die Application auf seine ganz eigene weise also unabhängig von irgentwelchen Menu’s. Er kann also so auf ziemlich alle Office VBA sachen zugreifen. Zum Beispiel aus Word heraus eine Powerpoint presentation erstellen (Versuch das mal mit Macroaufzeichnung).

Also Macros sind User defenierte Aktion und nutzen VBA.
VBA hingegen ist das ProgrammierInterface.

Für kritik zu diesem thema steh ich offen.

worin besteht der Unterschied zwischen Makros und VBA?

Hi Fred,

ich sehe das so, ein einfaches Makro ist erst mal nur die Aufzeichnung von Tastatureingaben, die durch Start des Makros an den Rechner geschickt werden, so als hätte man sie per Tastatur eingegeben.

Ein gutes Beispiel ist z.B. Word, durch ein Makro kann ich es mir ersparen immer wieder in Briefen meine Adresse eintippen zu müssen.
Ich zeichne mir das einmalig auf (Makrorekorder) und lege das auf eine Tastenkombintaion und/oder ein neues Symbol.

Entweder durch Klick auf das Symbol oder die Eingabe der Tastenkombination wird dann an der Stelle wo ich grad im Blatt stehe meine Adresse eingefügt.

Das erspart mir das Eintippen. Ändert sich meine Adresse durch Umzug, so gehe ich in einen Editor und ändere einfach den Inhalt des Makros ab, sodaß nun immer die neue Adresse erscheint.
Damit habe ich dann die Grenze zwischen Makroaufzeichner und Programmierer überschritten und kann mich ab dem Zeitpunkt als Programmierer bezeichnen *gg*

Das Ganze hat mit Vba erstmal überhaupt nix zu tun, das Makro kann in jeder dafür geeigneten Programmiersprache aufgezeichnet worden sein.

Nun ist es so daß alle Officepakete von Microsoft, Open-Office, Corel Draw und einiges mehr VBA beherrschen.
Das „A“ steht quasi für Officeanwendungen.(VBA = V isual B asic for A pplications).

Grundlage von VBA ist VB, drücke mal in deinem Access Alt+F11 oder wenn das dort nicht geht (ich mache selten was in Access, Access-VBA) so wechsle übers Menü in den VB-Editor, dort klicke mal auf das Fragezeichen oder so und dort auf „Info“.

Es erscheint dann die VB-Version die für deine Access-Version als Basis dient.
Bei Access 2000 ist das z.B. VB6.0, bei Access97 VB5.0.

Aus VB wurde eine Teilmenge der VB-Befehle übernommen und noch durch Spezialbefehle für das jeweilige Officeprogramm ergänzt, zusammen ist das dann der VBA-Sprachschatz des jewiligen Officeprogramms.

Von daher ist es nicht immer möglich, wenn man nur den Code sieht, zu erahnen ob es nun VB-Code, Access-VBA-Code, Excel-VBA oder sonstwas ist.

Sofern nur reinrassige VB-Befehle benutzt wurden im Code läuft der Code normalerweise in jedem der erwähnten Programme.

Steht z.b. so eine Codezeile im Code:

Worksheets(„Blatt1“).Range(„A1“).Select

(übersetzt heißt das, markiere mir die Zelle A1 im Tabellenblatt mit dem Namen „Blatt1“)

so weiß man mit Hintergrundwissen, es kann sich nur um Code für Excel-VBA handeln, da „Worksheets“ nur in Excel-VBA „bekannt“ ist.
D.h. in VB, Access-VBA kommt in dieser Zeile ein Fehler weil die noch nie was von einem „Worksheet“ gehört haben.

Manche Befehle/Funktionen/Bezeichnungen wie z.B. „Range“ werden sowohl in Word-VBA als auch in Excel-VBA benutzt, haben aber nicht die identische Aufgabe.

Ich hoffe ich habe dich jetzt nicht mit zuviel Informationen zugetextet :smile:

Schau zu dem Thema auch mal hier:

http://de.wikipedia.org/wiki/Makro

Gruß
Reinhard