[Mono-list] Re: Am confused

Marco Parenzan thinkingindotnet@libero.it
Wed, 18 Sep 2002 17:16:17 +0200


This is a multi-part message in MIME format.

------=_NextPart_000_001A_01C25F37.1980D9F0
Content-Type: text/plain;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

Some precisations:

>Brief summary.  Highly suspect, but brief, and has the highlights. ;-)

>1.  Microsoft BASIC on DOS
>2.  Microsoft extends/rewrites, named Visual Basic 1.0

    Microsoft writes Visual Basic 1.0 on Alan Cooper's work named Ruby =
(an environment that allow to draw windows - in 1987) and on QuickBasic

>3.  Visual Basic is popular; has several revisions (VB 1.0 - VB 6.0)
>4.  Microsoft gets great idea that there should be a common scripting
>    language across all Microsoft products; calls it VBA (Visual Basic
>    for Applications).  It's a simplified version of Visual Basic;=20
>    same (similar?) syntax, different object model (to take advantage
>    of the applications).  First introduced (IIRC) with Office 6.0 for=20
>    Windows 3.1.  Initially supported in Excel & Access; Word not=20
>    supported until Office 95 or 97.


    Microsoft added basic like macro languages to Access 1.0 and Excel. =
they were VB-like (not VB subset). VBA starts appearing with office 4.2 =
(Excel 5.0 and Access 2.0), but again different from VB1.0/2.0/3.0.
    The big change comes with VB5.0/6.0 in which VBA for Office 97 and =
VB are completly rewritten and VBA is a real subset of VB (just look =
into DLLs - they are the same)
    VB become "the COM-language" in the Internet/ActivceX era.

>5.  Internet gets big; Microsoft releases smaller version of VBA, calls =

>    it VB Script.  Used primarily with IIS ASP, Windows Scripting Host,
>    etc.


    VBScript is not a VBA Subset: is a kind of JavaScript with VB syntax =
- and some different costructs (it's like VB.NET that can be though as a =
C#  with VB syntax)

>6.  Microsoft works on .NET; changes VB syntax/semantics, calls it=20
>    VB.NET.

>The deal with VBA, primarily, is a library that developers can link =
into
>their applications to allow scripting of the applications.  All the
>developer needs to do is expose a COM object model (implement lots of
>IDispatch COM interfaces), and link in the VBA library.  (Of course,
>this simplifies things a bit; the object model must be created, and
>there are probably more steps to add VBA.)  After this, users can write
>VBA script, utilizing the applications object model, and script the
>application.


    VBA is not scripting: it's a real compilation as it was under VB6. =
VB was instead completly interpreted only until VB3.0 (and 4.0, if I =
remember well)

>VBA is basically a VBScript interpreter, linked to the application so
>that it knows about the program's object model, which interprets VBA
>>scripts the user provides.

    VBA is not a VBScript interpreter, but they use the same approach: =
when you host VBScript or VBA, you have to add you object model =
(example: Excel adds Workbook/Worksheets objects to VBA engine)

>As for the relationship between Access, Excel, and VBA, all Office apps
>expose an object model which can be scripted through COM, as described
>above.  Access, Excel, et. al merely expose the object model so the
>script interpreter can operate.  They accept scripts written in VBA (a
>superset of VBScript), but they can also be "scripted" through "normal"
>COM interop, allowing for control from  C/C++, Perl, TCL/TK, and any
>other COM-supporting language.

>Hope this provides an adequate summary.

> - Jon
------=_NextPart_000_001A_01C25F37.1980D9F0
Content-Type: text/html;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dwindows-1252">
<META content=3D"MSHTML 6.00.2800.1106" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>
<DIV><SPAN class=3D053135614-18092002>Some precisations:</SPAN></DIV>
<DIV><SPAN class=3D053135614-18092002></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D053135614-18092002>&gt;</SPAN>Brief summary.&nbsp; =
Highly=20
suspect, but brief, and has the highlights. ;-)<BR><BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>1.&nbsp; Microsoft BASIC on =
DOS<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>2.&nbsp; Microsoft =
extends/rewrites, named=20
Visual Basic 1.0<BR></DIV><SPAN class=3D053135614-18092002></SPAN><SPAN=20
class=3D053135614-18092002>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;&nbsp;=20
Microsoft writes Visual Basic 1.0 on Alan Cooper's work named Ruby (an=20
environment that allow to draw windows - in 1987) and on=20
QuickBasic</FONT></SPAN></DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV>&gt;</SPAN>3.&nbsp; Visual Basic is popular; has several revisions =
(VB 1.0=20
- VB 6.0)<BR><SPAN class=3D053135614-18092002>&gt;</SPAN>4.&nbsp; =
Microsoft gets=20
great idea that there should be a common scripting<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; language across =
all=20
Microsoft products; calls it VBA (Visual Basic<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; for =
Applications).&nbsp;=20
It's a simplified version of Visual Basic;&nbsp;<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; same (similar?) =
syntax,=20
different object model (to take advantage<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; of the=20
applications).&nbsp; First introduced (IIRC) with Office 6.0 =
for&nbsp;<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; Windows =
3.1.&nbsp;=20
Initially supported in Excel &amp; Access; Word not&nbsp;<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; supported until =
Office 95=20
or 97.<BR><SPAN class=3D053135614-18092002></SPAN></DIV><SPAN=20
class=3D053135614-18092002>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;&nbsp;=20
Microsoft added basic like macro languages to Access 1.0 and Excel. they =
were=20
VB-like (not VB subset). VBA starts appearing with office 4.2 (Excel 5.0 =
and=20
Access 2.0), but again different from VB1.0/2.0/3.0.</FONT></SPAN></DIV>
<DIV><SPAN class=3D053135614-18092002>&nbsp;&nbsp;&nbsp; <FONT =
face=3DArial=20
size=3D2>The big change comes with VB5.0/6.0 in which VBA for Office 97 =
and VB are=20
completly rewritten and VBA is a real subset of VB (just look into DLLs =
- they=20
are the same)</FONT></SPAN></DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;&nbsp;=20
VB become "the COM-language" in the Internet/ActivceX =
era.</FONT></SPAN></DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV>&gt;</SPAN>5.&nbsp; Internet gets big; Microsoft releases smaller =
version=20
of VBA, calls&nbsp;<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; it VB =
Script.&nbsp; Used=20
primarily with IIS ASP, Windows Scripting Host,<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp; etc.<BR><SPAN=20
class=3D053135614-18092002></SPAN></DIV><SPAN =
class=3D053135614-18092002>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;&nbsp;=20
VBScript is not a VBA Subset: is a kind of JavaScript with VB syntax - =
and some=20
different costructs (it's&nbsp;like VB.NET that can be though&nbsp;as a =
C#&nbsp;=20
with VB syntax)</FONT></SPAN></DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV>&gt;</SPAN>6.&nbsp; Microsoft works on .NET; changes VB =
syntax/semantics,=20
calls it&nbsp;<BR><SPAN =
class=3D053135614-18092002>&gt;</SPAN>&nbsp;&nbsp;&nbsp;=20
VB.NET.<BR><BR><SPAN class=3D053135614-18092002>&gt;</SPAN>The deal with =
VBA,=20
primarily, is a library that developers can link into<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>their applications to allow =
scripting of the=20
applications.&nbsp; All the<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>developer needs to do is expose a =
COM object=20
model (implement lots of<BR><SPAN =
class=3D053135614-18092002>&gt;</SPAN>IDispatch=20
COM interfaces), and link in the VBA library.&nbsp; (Of course,<BR><SPAN =

class=3D053135614-18092002>&gt;</SPAN>this simplifies things a bit; the =
object=20
model must be created, and<BR><SPAN =
class=3D053135614-18092002>&gt;</SPAN>there=20
are probably more steps to add VBA.)&nbsp; After this, users can =
write<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>VBA script, utilizing the =
applications=20
object model, and script the<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>application.<BR></DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; VBA is not scripting: it's a real compilation as =
it was=20
under VB6. VB was instead completly interpreted only until VB3.0 (and =
4.0, if I=20
remember well)</DIV>
<DIV><BR><SPAN class=3D053135614-18092002>&gt;</SPAN>VBA is basically a =
VBScript=20
interpreter, linked to the application so<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>that it knows about the program's =
object=20
model, which interprets VBA<BR><SPAN=20
class=3D053135614-18092002>&gt;&gt;</SPAN>scripts the user =
provides.</DIV>
<DIV>&nbsp;</DIV>
<DIV>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial size=3D2>
<DIV><SPAN class=3D053135614-18092002><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;&nbsp;=20
VBA is not a VBScript interpreter, but they use the same approach: when =
you host=20
VBScript or VBA, you have to add you object model (example: Excel adds=20
Workbook/Worksheets objects to VBA=20
engine)</FONT></SPAN></DIV></FONT></SPAN></DIV><BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>As for the relationship between =
Access,=20
Excel, and VBA, all Office apps<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>expose an object model which can =
be scripted=20
through COM, as described<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>above.&nbsp; Access, Excel, et. al =
merely=20
expose the object model so the<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>script interpreter can =
operate.&nbsp; They=20
accept scripts written in VBA (a<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>superset of VBScript), but they =
can also be=20
"scripted" through "normal"<BR><SPAN =
class=3D053135614-18092002>&gt;</SPAN>COM=20
interop, allowing for control from&nbsp; C/C++, Perl, TCL/TK, and =
any<BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>other COM-supporting =
language.<BR><BR><SPAN=20
class=3D053135614-18092002>&gt;</SPAN>Hope this provides an adequate=20
summary.<BR><BR><SPAN class=3D053135614-18092002>&gt;</SPAN>&nbsp;-=20
Jon</DIV></FONT></DIV></BODY></HTML>

------=_NextPart_000_001A_01C25F37.1980D9F0--