(No) Future of VBA in Office for Mac?

D

David-Artur Daix

AppleScript hooks into OLE. Yes, OLE will continue to work, but MS has not
(so far) published an API for it publicly. However, it does appear that they
exposed the API to RealBasic back in 2000 or so, when they were getting
Office v. X ready, they gave some support to RB (notice the "RealBasic
Editor" menu item in Tools and the Lite version of RB that they shipped with
Office) in the hope that developers would switch to RB and RB would shoulder
the programmability issues. It didn't work out that way since cross-platform
developers preferred to continue using VBA and Mac-only developers prefer
AppleScript, which they provided for in 2004. But now that VBA will be going
away, it's possible that RB might be able to fill the gap. It's just that
nobody knows if their compiler is independent of the CPU or not. It probably
has to be since it can already work on both PPC Macs and Windows computers.
But some adjustment will undoubtedly have to made for Intel Macs, only
nobody knows yet if that's a small adjustment or a huge one, nor whether
it's being done or not.

The next version of RB to be released in September (2006 r4 I believe) will
be able to build Universal Binary applications. What remains to be seen is
the impact this change will have on the Office Automation features.

But right now, despite the help RB may have received in the past from
Microsoft, support for Office Automation on the Mac is horribly sluggish in
RB as soon as complex operations are involved, which easily explains why
developers would prefer AS to using RB to automate Office.

I chose to use VBA so that GreekTranscoder would be a cross-platform
solution (and because, after having looked at both AS and VBA, I decided I
much preferred the VBA syntax.) But, indeed, for Mac-only projects, when one
already knows AS, given the horror that is the VB Editor on the Mac and the
problems exhibited by RB, AS would be the obvious choice.

Right now I would favor a mix of RB and AppleScript to bring GreekTranscoder
to the next Office version, simply because it would be the easiest way to do
it, and I don't have much time on my hands during the year.

But what you write about VB.NET shows the promise, in a few year, of a
version of GreekTranscoder that would be again cross-platform.

Thanks again for your help: it's been invaluable.

Best wishes,


--
David-Artur Daix
Centre d'Études Anciennes
Département des Sciences de l'Antiquité
École Normale Supérieure
45 rue d'Ulm, 75230 Paris Cedex 05
<mailto:daix _AT_ ens _DOT_ fr>
<http://www.antiquite.ens.fr/index.html>
<http://www.greektranscoder.org>
 
D

David-Artur Daix

Eventually (but no one knows how long) in some future version of Office Mac,
some version of .NET will be implemented for Office Mac, when there's a
Microsoft-supported CLR for the Mac (they're working on that now). When
Office Windows also switches to that, Mac and Windows programming will be
compatible again. (Yes, there's VB.NET already, but apparently there are
some flaws. Anyway, no one knows yet what the final setup will be.)

I've looked a bit into that topic and what strikes me is that the switch
from VB6 to VB.NET seem to have created a huge controversy on the Windows
side. See for instance:

http://blogs.msdn.com/jroxe/archive/2005/03/17/398325.aspx

http://en.wikipedia.org/wiki/Visual_Basic_.NET#Controversy

The general feeling seems to be that Microsoft has simply abandoned the
"classic" Visual Basic developers and their huge code base. The comments,
some by MVPs, to Roxe's "open letter" are particularly telling in that
regard.

While I understand better now why it would not make much sense to spend
resources on bringing VBA to Intel Macs given the fact that VBA is
essentially dead _also_ on Windows, what really does not make sense is the
fact that Microsoft has decided to kill "classic" VB and VBA, period
(despite the huge virus issue, which must have weighted on their decision).

In that regard, the MacBU is simply following the lead of the whole company,
and it becomes harder to blame them for their decision, since it's
company-wide. But it doesn't take away the pain of the current "classic" VB
developers, on Macs _as_well_as_ PCs.

While on the Mac we have to start thinking about rewriting everything in AS,
on the PC side they have to rewrite everything for VB.NET (which seems to be
quite a bit of work despite the common "VB" name). And cross-platform
support is simply gone in the near future.

It will not come as a surprise then that on the Windows side the forced
switch to VB.NET seems neither popular nor, apparently, very successful
(though I haven't found any recent VB.NET vs VB6 adoption surveys, those
I've seen did not favor VB.NET at all).

And the same arguments I've been reading about the VBA disappearance on the
Mac have already appeared more than a year ago about that forced migration
to VB.NET on Windows: people threatening to stop upgrading their Office
version if VBA is gone, to switch to Open Office instead, and if they have
to learn a new language and rewrite everything anyway to simply forego any
Microsoft-made solution and adopt Java instead (or C#, for those still
willing to consider a Microsoft language: once bitten...).

In the end, what seems really surprising is that Microsoft would make what
seems to be an incredibly bad _business_ decision regarding VB and VBA on
_every_ platform.

I don't really mind learning AppleScript, nor even Obj-C if I need to. I
took up VB and REALbasic last year because those were the most practical
tools available to me to do what I needed. And in fact REALbasic still seems
to be my best option for now. But I'm a linguist by trade and learning
programming languages is not really an issue for me. It's even rather fun.
It takes a bit of time, that's all, time I don't always have, unfortunately.
But that's just a hobby for me, so that's OK.

But I can see why people -- and businesses especially -- would simply decide
not to upgrade at all, on Windows as well as on Mac OS, to VBA-deprived
versions of Office.

At least WinOffice 2007 will still support VBA. So that decision has bought
Microsoft some time. And on Macs, maybe the need for an Intel-native version
of Office will also save the MacBU's bacon, at least for casual users who do
not need cross-platform support beyond document formats. But do casual users
really need/buy Office anyway?

The more I think about, the more the decision to abandon "classic" VB/VBA
doesn't make sense to me.

And given the apparent misgivings on the Windows side about VB.NET, the
future of cross-platform development for Office applications is indeed very
murky ;-(

I'm not even sure that by a time a CLR would be available on Macs, VB.NET
would still be a viable development platform _anywhere_! At the very least
I'd sure think twice before committing to it.

What a strange world.

Best,

--
David-Artur Daix
Centre d'Études Anciennes
Département des Sciences de l'Antiquité
École Normale Supérieure
45 rue d'Ulm, 75230 Paris Cedex 05
<mailto:daix _AT_ ens _DOT_ fr>
<http://www.antiquite.ens.fr/index.html>
<http://www.greektranscoder.org>
 
D

David-Artur Daix

I've looked a bit into that topic and what strikes me is that the switch
from VB6 to VB.NET seem to have created a huge controversy on the Windows
side.

Still on that topic, here is the perspective of a VB expert who chose to go
with REALbasic instead of switching to VB.NET:

http://www.realsoftware.com/support/whitepapers/portingvisualbasic/

The introduction seems particularly relevant to developers faced with the
disappearance of VBA in the next version of Office. The only problem is that
the REALbasic Office Automation features, as I have explained, do not work
very well on Macs at least.

Best,

--
David-Artur Daix
Centre d'Études Anciennes
Département des Sciences de l'Antiquité
École Normale Supérieure
45 rue d'Ulm, 75230 Paris Cedex 05
<mailto:daix _AT_ ens _DOT_ fr>
<http://www.antiquite.ens.fr/index.html>
<http://www.greektranscoder.org>
 
J

John McGhie [MVP - Word and Word Macintosh]

Hi David-Artur:

Some really good points you raise. I was going to just dash off a quick
comment before bed. An hour later...

While I understand better now why it would not make much sense to spend
resources on bringing VBA to Intel Macs given the fact that VBA is
essentially dead _also_ on Windows, what really does not make sense is the
fact that Microsoft has decided to kill "classic" VB and VBA, period
(despite the huge virus issue, which must have weighted on their decision).

That's it, right there. That's the REASON. And it's the ONLY reason :)

The controversy rages, of course. The less people understand the issues,
the more noise they're making on the topic.

The basic reality is:

* VBA was designed to provide powerful, object-oriented cross-application
scripting back in kinder, gentler days, when networks were safe places and
the internet did not really exist.

* the fundamental architecture of VBA relies on the fact that you can
"trust" everything in your immediate vicinity. VBA assumes that everything
on your computer is meant to be there, and every program interacting with it
is doing good.

* VBA was also designed at a time when memory and CPU horsepower was a lot
less plentiful than they are today. For reasons of efficiency, they
dispensed with a lot of the "good housekeeping:" and "security" that is
required these days.

So, when it came time to fix the problems that descended, Microsoft made the
sensible decision to do it once and do it right. They designed a single,
secure platform for the entire computer. The Common Language Runtime is
engineered as part of the operating system, and protected by all of the OS's
security mechanisms.

Instead of having to solve all these problems over and over again for every
application that exists, dot-Net solves them once for the entire system. In
the ensuing 20 years, everyone has learned a lot about making software.
VB.NET is not only fairly impregnable security-wise, it's also a LOT faster
than VBA.

You can write very serious applications in VB.NET (or any other .NET
language you prefer, including COBOL...). You can even write different
modules in different languages, depending on your needs and preferences.
They all end up executing on the same runtime platform.
But it doesn't take away the pain of the current "classic" VB
developers, on Macs _as_well_as_ PCs.

No. It doesn't. But in a sense, we only have ourselves to blame. If we
had written our applications properly in the first place, they would
auto-convert to VB.NET :)

No, you're right. That's not quite true... But nearly. The problems with
converting to VB.NET are largely around explicitly qualifying things.
VB.NET is a lot more strongly-typed and qualified than VBA (it has to be:
it's going into a compiler that needs to resolve its references at compile
time, rather than heading off to an interpreter that can work things out at
run-time).
While on the Mac we have to start thinking about rewriting everything in AS,
on the PC side they have to rewrite everything for VB.NET (which seems to be
quite a bit of work despite the common "VB" name). And cross-platform
support is simply gone in the near future.

Yes. Even Microsoft was taken aback at just how MUCH legacy VBA there is
out there.
It will not come as a surprise then that on the Windows side the forced
switch to VB.NET seems neither popular nor, apparently, very successful
(though I haven't found any recent VB.NET vs VB6 adoption surveys, those
I've seen did not favor VB.NET at all).

I don't believe you can compare them. VB6 is simply another compiled
language. Just why you would use it these days I'm not sure. It's a
language for creating stand-alone applications. These days, I would be
surprised if a software architect did not choose C++ instead.

VB.NET is a cross-application object-oriented language which also supports
massively-distributed computing. Choose VB.NET if you want to hook pieces
of application up across a large number of systems and knit them together
with XML. You can't properly compare VBA and VB.NET either: although the
syntax is similar, they have very different purposes. VB.NET is a much
larger and richer platform than VBA.

I was speaking with one of the world's most advanced VBA coders last week,
who was giggling and chortling at how much easier he was finding things in
VB.NET. It's a much richer environment with a lot more pre-built widgets
that do useful stuff you don't have to write. If you wanted to compare
VB.NET with something, you would probably compare it with Java: they're very
similar in purpose.
And the same arguments I've been reading about the VBA disappearance on the
Mac have already appeared more than a year ago about that forced migration
to VB.NET on Windows: people threatening to stop upgrading their Office
version if VBA is gone, to switch to Open Office instead, and if they have
to learn a new language and rewrite everything anyway to simply forego any
Microsoft-made solution and adopt Java instead (or C#, for those still
willing to consider a Microsoft language: once bitten...).

Well, YOU have managed to make sense of it then :) Some people are going
to take a little longer. One of the main things we lose is that in VBA, the
code is executing INSIDE the application we're automating. So the VBA
interpreter has the full object model of the host application immediately
available. To do this in VB.NET, you must use Visual Studio to add support
for the object models of the applications you're trying to automate.

Yes, some people will not upgrade their current copies of Office. But they
WILL develop new applications in the new language for the new platform.
Switching to Open Office is not a viable strategy, and they'll find that out
if they attempt it.

Anyone who has tried to get things working efficiently cross-platform in
Java becomes an instant convert to dot-Net :) You've heard the promise
"Write once, run anywhere"? The reality is "Write once, test everywhere,
efficient nowhere!"

C# simply IS dot-NET. If you prefer object-oriented C syntax, C# is made
for you. If you prefer to write in VB syntax, VB.NET is your weapon. The
object code that comes out of the compiler can be exactly the same from
both.

You would probably choose C# if your main interest was in "efficiency". You
would probably choose VB.NET if your main interest was in productivity.
C-based languages are very close to Assembler: ultimate performance with a
very steep learning curve. VB-based languages are closer to a
fourth-generation language. Lots of pre-built add-ins that massively
improve programmer productivity at the expense of a bit of efficiency.

Typically, VB code doesn't do very much "work". It's great for presenting
displays to single users. C# comes to the fore when you are writing server
applications that are going to do millions of iterations of each step and
support thousands of concurrent users.
In the end, what seems really surprising is that Microsoft would make what
seems to be an incredibly bad _business_ decision regarding VB and VBA on
_every_ platform.

I don't think it *was* a business decision. I believe that if they could
have made *any* other decision, they would have. The bottom line was that
VBA was not safe, and could not be made to be safe. It had to go. From
there, they knew they HAD to re-design the fundamental architecture. If
they were going to do that, far better to do it once and get it right for
the entire platform, than have to do it over for each of several hundred
applications. And having it as a common runtime enabled some substantial
value-adds that would have been difficult and expensive if they stayed with
the application extension model.
But I can see why people -- and businesses especially -- would simply decide
not to upgrade at all, on Windows as well as on Mac OS, to VBA-deprived
versions of Office.

Sure. So can I. However, I think you will find that what happens is that
business won't "upgrade", it will "replace". Instead of migrating their
existing applications upwards, I think you will find that business will
develop new applications in the new version of Office.

One thing that's not at all clear to anyone, yet, is just how much
programming will be *needed* in the new version of Office. The development
tools and documentation have not yet appeared for Office 2007. When they
do, I think we will find that we can accomplish a lot of what we used to do
with VBA -- faster and more reliably -- in XML and all its various
associated technologies.
At least WinOffice 2007 will still support VBA. So that decision has bought
Microsoft some time.

Well, *I* think they caved in to pressure from the "Fortune 500", and what
that has done is *waste* everyone's time :) The sooner we get out of VBA,
the sooner we will be safe, secure and reliable.
And on Macs, maybe the need for an Intel-native version
of Office will also save the MacBU's bacon, at least for casual users who do
not need cross-platform support beyond document formats. But do casual users
really need/buy Office anyway?

That's a very good question. If you look at the design of Office 2007, you
would see a substantial "dumbing-down" of individual Office Applications.
Together with a move of the "development" and "customisation" functions off
the desktop and into the IS Department. There's no longer much support for
individual users' customisation. Microsoft's research tells them that
end-users basically DON'T use macros or customisations. So the ability to
produce these, and the tools to do it with, have all gone off into the
glass-house where professional information systems people will do that work.

Office 2007 is substantially quicker than Office 2003. I suspect that's
because it's actually quite a bit lighter in weight :)
I'm not even sure that by a time a CLR would be available on Macs, VB.NET
would still be a viable development platform _anywhere_! At the very least
I'd sure think twice before committing to it.

Very good question. The start-up of dot-Net was VERY slow. People took a
very cautious look, and for years it went practically nowhere. All I can
say is that the up-take of the dot-NET technologies has turned into a flood
in the past year. I think one of the reasons was that developers were
waiting for it to work properly. Another was that they were waiting to see
if Java 2 would solve their problems.

On the WinTel side, I think the VHS vs BetaMax debate is over. Everyone's
going to DVD :)

Cheers

--

Please reply to the newsgroup to maintain the thread. Please do not email
me unless I ask you to.

John McGhie <[email protected]>
Microsoft MVP, Word and Word for Macintosh. Consultant Technical Writer
Sydney, Australia +61 (0) 4 1209 1410
 
P

Phillip Jones

Just read in MacAdict Magazine, That MS was discontinuing any support
for VBA seemed to imply across all platforms. this was also during a
report that they were dropping Virtual PC.
Hi David-Artur:

Some really good points you raise. I was going to just dash off a quick
comment before bed. An hour later...



That's it, right there. That's the REASON. And it's the ONLY reason :)

The controversy rages, of course. The less people understand the issues,
the more noise they're making on the topic.

The basic reality is:

* VBA was designed to provide powerful, object-oriented cross-application
scripting back in kinder, gentler days, when networks were safe places and
the internet did not really exist.

* the fundamental architecture of VBA relies on the fact that you can
"trust" everything in your immediate vicinity. VBA assumes that everything
on your computer is meant to be there, and every program interacting with it
is doing good.

* VBA was also designed at a time when memory and CPU horsepower was a lot
less plentiful than they are today. For reasons of efficiency, they
dispensed with a lot of the "good housekeeping:" and "security" that is
required these days.

So, when it came time to fix the problems that descended, Microsoft made the
sensible decision to do it once and do it right. They designed a single,
secure platform for the entire computer. The Common Language Runtime is
engineered as part of the operating system, and protected by all of the OS's
security mechanisms.

Instead of having to solve all these problems over and over again for every
application that exists, dot-Net solves them once for the entire system. In
the ensuing 20 years, everyone has learned a lot about making software.
VB.NET is not only fairly impregnable security-wise, it's also a LOT faster
than VBA.

You can write very serious applications in VB.NET (or any other .NET
language you prefer, including COBOL...). You can even write different
modules in different languages, depending on your needs and preferences.
They all end up executing on the same runtime platform.


No. It doesn't. But in a sense, we only have ourselves to blame. If we
had written our applications properly in the first place, they would
auto-convert to VB.NET :)

No, you're right. That's not quite true... But nearly. The problems with
converting to VB.NET are largely around explicitly qualifying things.
VB.NET is a lot more strongly-typed and qualified than VBA (it has to be:
it's going into a compiler that needs to resolve its references at compile
time, rather than heading off to an interpreter that can work things out at
run-time).

Yes. Even Microsoft was taken aback at just how MUCH legacy VBA there is
out there.

I don't believe you can compare them. VB6 is simply another compiled
language. Just why you would use it these days I'm not sure. It's a
language for creating stand-alone applications. These days, I would be
surprised if a software architect did not choose C++ instead.

VB.NET is a cross-application object-oriented language which also supports
massively-distributed computing. Choose VB.NET if you want to hook pieces
of application up across a large number of systems and knit them together
with XML. You can't properly compare VBA and VB.NET either: although the
syntax is similar, they have very different purposes. VB.NET is a much
larger and richer platform than VBA.

I was speaking with one of the world's most advanced VBA coders last week,
who was giggling and chortling at how much easier he was finding things in
VB.NET. It's a much richer environment with a lot more pre-built widgets
that do useful stuff you don't have to write. If you wanted to compare
VB.NET with something, you would probably compare it with Java: they're very
similar in purpose.

Well, YOU have managed to make sense of it then :) Some people are going
to take a little longer. One of the main things we lose is that in VBA, the
code is executing INSIDE the application we're automating. So the VBA
interpreter has the full object model of the host application immediately
available. To do this in VB.NET, you must use Visual Studio to add support
for the object models of the applications you're trying to automate.

Yes, some people will not upgrade their current copies of Office. But they
WILL develop new applications in the new language for the new platform.
Switching to Open Office is not a viable strategy, and they'll find that out
if they attempt it.

Anyone who has tried to get things working efficiently cross-platform in
Java becomes an instant convert to dot-Net :) You've heard the promise
"Write once, run anywhere"? The reality is "Write once, test everywhere,
efficient nowhere!"

C# simply IS dot-NET. If you prefer object-oriented C syntax, C# is made
for you. If you prefer to write in VB syntax, VB.NET is your weapon. The
object code that comes out of the compiler can be exactly the same from
both.

You would probably choose C# if your main interest was in "efficiency". You
would probably choose VB.NET if your main interest was in productivity.
C-based languages are very close to Assembler: ultimate performance with a
very steep learning curve. VB-based languages are closer to a
fourth-generation language. Lots of pre-built add-ins that massively
improve programmer productivity at the expense of a bit of efficiency.

Typically, VB code doesn't do very much "work". It's great for presenting
displays to single users. C# comes to the fore when you are writing server
applications that are going to do millions of iterations of each step and
support thousands of concurrent users.

I don't think it *was* a business decision. I believe that if they could
have made *any* other decision, they would have. The bottom line was that
VBA was not safe, and could not be made to be safe. It had to go. From
there, they knew they HAD to re-design the fundamental architecture. If
they were going to do that, far better to do it once and get it right for
the entire platform, than have to do it over for each of several hundred
applications. And having it as a common runtime enabled some substantial
value-adds that would have been difficult and expensive if they stayed with
the application extension model.


Sure. So can I. However, I think you will find that what happens is that
business won't "upgrade", it will "replace". Instead of migrating their
existing applications upwards, I think you will find that business will
develop new applications in the new version of Office.

One thing that's not at all clear to anyone, yet, is just how much
programming will be *needed* in the new version of Office. The development
tools and documentation have not yet appeared for Office 2007. When they
do, I think we will find that we can accomplish a lot of what we used to do
with VBA -- faster and more reliably -- in XML and all its various
associated technologies.


Well, *I* think they caved in to pressure from the "Fortune 500", and what
that has done is *waste* everyone's time :) The sooner we get out of VBA,
the sooner we will be safe, secure and reliable.


That's a very good question. If you look at the design of Office 2007, you
would see a substantial "dumbing-down" of individual Office Applications.
Together with a move of the "development" and "customisation" functions off
the desktop and into the IS Department. There's no longer much support for
individual users' customisation. Microsoft's research tells them that
end-users basically DON'T use macros or customisations. So the ability to
produce these, and the tools to do it with, have all gone off into the
glass-house where professional information systems people will do that work.

Office 2007 is substantially quicker than Office 2003. I suspect that's
because it's actually quite a bit lighter in weight :)


Very good question. The start-up of dot-Net was VERY slow. People took a
very cautious look, and for years it went practically nowhere. All I can
say is that the up-take of the dot-NET technologies has turned into a flood
in the past year. I think one of the reasons was that developers were
waiting for it to work properly. Another was that they were waiting to see
if Java 2 would solve their problems.

On the WinTel side, I think the VHS vs BetaMax debate is over. Everyone's
going to DVD :)

Cheers

--
------------------------------------------------------------------------
Phillip M. Jones, CET |LIFE MEMBER: VPEA ETA-I, NESDA, ISCET, Sterling
616 Liberty Street |Who's Who. PHONE:276-632-5045, FAX:276-632-0868
Martinsville Va 24112 |[email protected], ICQ11269732, AIM pjonescet
------------------------------------------------------------------------

If it's "fixed", don't "break it"!

mailto:p[email protected]

<http://www.kimbanet.com/~pjones/default.htm>
<http://www.kimbanet.com/~pjones/90th_Birthday/index.htm>
<http://www.kimbanet.com/~pjones/Fulcher/default.html>
<http://www.kimbanet.com/~pjones/Harris/default.htm>
<http://www.kimbanet.com/~pjones/Jones/default.htm>

<http://www.vpea.org>
 
P

Phillip Jones

I can understand and it did say with the advent of Boot camp and the
other applications there was no need for VPC. The way it was worded that
implied that there would be no new VPC. Seemed say it was dead in the
water. The way it was written or at the way I read at least it did seem
to say it was dead in the water leaving thousands of PowerPC Machine
hanging.

Since MacAddict is a Mac Centric Magazine. Maybe it was VBA would no
longer be supported on the Mac version? Since I expect the Mac Community
is not wedded to VBA and don't have much at Stake.

By the way its in the Oct print issue of Mac Addict.
Hi Phillip:

I suggest that you read the online version of your sources :)

The demise of VBA was announced around 1999 and was intended to apply to all
platforms.

The Fortune 500 companies, with their giga-dollar legacy base of VBA, kicked
up such a fuss that Microsoft has delayed the removal of VBA from Microsoft
Office 2007.

However, they are strongly encouraging new development to be in VB.NET.
Microsoft has not backed away from their intention to get rid of VBA, they
have simply granted a stay of execution. I will bet they are also producing
large legal agreements that say "If you continue to use VBA, and your entire
corporation gets blown away by some nasty viruses, don't try to claim that
we didn't warn you!"

Microsoft is NOT "Dropping VPC" for heaven's sake :) That's just WRONG.
It's a key strategic product for them, in Windows Server 2003.

However, it is no longer needed on new Macs.

Virtual PC for the Mac will continue to be sold for Power PC machines. On
Mac Intel machines, it's simply not necessary -- the new Macs will run
Windows (better than most PCs...) without it. So there won't be a new
version of VPC for Mac, and it's unlikely that the product will be
reinstated unless and until Apple produces a Mac that won't run Windows.

Cheers

--
------------------------------------------------------------------------
Phillip M. Jones, CET |LIFE MEMBER: VPEA ETA-I, NESDA, ISCET, Sterling
616 Liberty Street |Who's Who. PHONE:276-632-5045, FAX:276-632-0868
Martinsville Va 24112 |[email protected], ICQ11269732, AIM pjonescet
------------------------------------------------------------------------

If it's "fixed", don't "break it"!

mailto:p[email protected]

<http://www.kimbanet.com/~pjones/default.htm>
<http://www.kimbanet.com/~pjones/90th_Birthday/index.htm>
<http://www.kimbanet.com/~pjones/Fulcher/default.html>
<http://www.kimbanet.com/~pjones/Harris/default.htm>
<http://www.kimbanet.com/~pjones/Jones/default.htm>

<http://www.vpea.org>
 
P

Phillip Jones

I have the actual article in from of me its in the Mailed version of the
Oct Mac Addict Magazine that comes with the CD.

In GETINFO section page 11.

The Bon VOYAGE, VIRTUAL PC.

Very last sentence reads as Follows:

"Other Microsoft MacBU news includes the release of Messenger for Mac
6.0 as a Universal application; the development of a free, Universal
version of Remote Desktop Connection; and the discontinuation of support
for Visual Basic scripting —— RL"

So it seems that VBA on the Mac Platform appears to be dead in the
water. I don't no whether it means That VBA will be totally unusable in
Mac Version from now on. Or simply it will be there but they're not
supporting it.

Phillip said:
I can understand and it did say with the advent of Boot camp and the
other applications there was no need for VPC. The way it was worded that
implied that there would be no new VPC. Seemed say it was dead in the
water. The way it was written or at the way I read at least it did seem
to say it was dead in the water leaving thousands of PowerPC Machine
hanging.

Since MacAddict is a Mac Centric Magazine. Maybe it was VBA would no
longer be supported on the Mac version? Since I expect the Mac Community
is not wedded to VBA and don't have as much at Stake.

By the way its in the Oct print issue of Mac Addict.
Hi Phillip:

I suggest that you read the online version of your sources :)

The demise of VBA was announced around 1999 and was intended to apply
to all
platforms.

The Fortune 500 companies, with their giga-dollar legacy base of VBA,
kicked
up such a fuss that Microsoft has delayed the removal of VBA from
Microsoft
Office 2007.

However, they are strongly encouraging new development to be in VB.NET.
Microsoft has not backed away from their intention to get rid of VBA,
they
have simply granted a stay of execution. I will bet they are also
producing
large legal agreements that say "If you continue to use VBA, and your
entire
corporation gets blown away by some nasty viruses, don't try to claim
that
we didn't warn you!"

Microsoft is NOT "Dropping VPC" for heaven's sake :) That's just WRONG.
It's a key strategic product for them, in Windows Server 2003.

However, it is no longer needed on new Macs.

Virtual PC for the Mac will continue to be sold for Power PC
machines. On
Mac Intel machines, it's simply not necessary -- the new Macs will run
Windows (better than most PCs...) without it. So there won't be a new
version of VPC for Mac, and it's unlikely that the product will be
reinstated unless and until Apple produces a Mac that won't run Windows.

Cheers

Just read in MacAdict Magazine, That MS was discontinuing any support
for VBA seemed to imply across all platforms. this was also during a
report that they were dropping Virtual PC.

John McGhie [MVP - Word and Word Macintosh] wrote:
Hi David-Artur:

Some really good points you raise. I was going to just dash off a
quick
comment before bed. An hour later...

On 3/9/06 4:50 PM, in article C12047EC.19C06%daix@spoof_usenet.com,

While I understand better now why it would not make much sense to
spend
resources on bringing VBA to Intel Macs given the fact that VBA is
essentially dead _also_ on Windows, what really does not make sense
is the
fact that Microsoft has decided to kill "classic" VB and VBA, period
(despite the huge virus issue, which must have weighted on their
decision).
That's it, right there. That's the REASON. And it's the ONLY
reason :)

The controversy rages, of course. The less people understand the
issues,
the more noise they're making on the topic.

The basic reality is:

* VBA was designed to provide powerful, object-oriented
cross-application
scripting back in kinder, gentler days, when networks were safe
places and
the internet did not really exist.

* the fundamental architecture of VBA relies on the fact that you can
"trust" everything in your immediate vicinity. VBA assumes that
everything
on your computer is meant to be there, and every program interacting
with it
is doing good.

* VBA was also designed at a time when memory and CPU horsepower
was a lot
less plentiful than they are today. For reasons of efficiency, they
dispensed with a lot of the "good housekeeping:" and "security" that is
required these days.

So, when it came time to fix the problems that descended, Microsoft
made the
sensible decision to do it once and do it right. They designed a
single,
secure platform for the entire computer. The Common Language
Runtime is
engineered as part of the operating system, and protected by all of
the OS's
security mechanisms.

Instead of having to solve all these problems over and over again
for every
application that exists, dot-Net solves them once for the entire
system. In
the ensuing 20 years, everyone has learned a lot about making software.
VB.NET is not only fairly impregnable security-wise, it's also a LOT
faster
than VBA.

You can write very serious applications in VB.NET (or any other .NET
language you prefer, including COBOL...). You can even write different
modules in different languages, depending on your needs and
preferences.
They all end up executing on the same runtime platform.

But it doesn't take away the pain of the current "classic" VB
developers, on Macs _as_well_as_ PCs.
No. It doesn't. But in a sense, we only have ourselves to blame.
If we
had written our applications properly in the first place, they would
auto-convert to VB.NET :)

No, you're right. That's not quite true... But nearly. The
problems with
converting to VB.NET are largely around explicitly qualifying things.
VB.NET is a lot more strongly-typed and qualified than VBA (it has
to be:
it's going into a compiler that needs to resolve its references at
compile
time, rather than heading off to an interpreter that can work things
out at
run-time).
While on the Mac we have to start thinking about rewriting
everything in AS,
on the PC side they have to rewrite everything for VB.NET (which
seems to be
quite a bit of work despite the common "VB" name). And cross-platform
support is simply gone in the near future.
Yes. Even Microsoft was taken aback at just how MUCH legacy VBA
there is
out there.
It will not come as a surprise then that on the Windows side the
forced
switch to VB.NET seems neither popular nor, apparently, very
successful
(though I haven't found any recent VB.NET vs VB6 adoption surveys,
those
I've seen did not favor VB.NET at all).
I don't believe you can compare them. VB6 is simply another compiled
language. Just why you would use it these days I'm not sure. It's a
language for creating stand-alone applications. These days, I would be
surprised if a software architect did not choose C++ instead.

VB.NET is a cross-application object-oriented language which also
supports
massively-distributed computing. Choose VB.NET if you want to hook
pieces
of application up across a large number of systems and knit them
together
with XML. You can't properly compare VBA and VB.NET either:
although the
syntax is similar, they have very different purposes. VB.NET is a much
larger and richer platform than VBA.

I was speaking with one of the world's most advanced VBA coders last
week,
who was giggling and chortling at how much easier he was finding
things in
VB.NET. It's a much richer environment with a lot more pre-built
widgets
that do useful stuff you don't have to write. If you wanted to compare
VB.NET with something, you would probably compare it with Java:
they're very
similar in purpose.
And the same arguments I've been reading about the VBA
disappearance on the
Mac have already appeared more than a year ago about that forced
migration
to VB.NET on Windows: people threatening to stop upgrading their
Office
version if VBA is gone, to switch to Open Office instead, and if
they have
to learn a new language and rewrite everything anyway to simply
forego any
Microsoft-made solution and adopt Java instead (or C#, for those still
willing to consider a Microsoft language: once bitten...).
Well, YOU have managed to make sense of it then :) Some people are
going
to take a little longer. One of the main things we lose is that in
VBA, the
code is executing INSIDE the application we're automating. So the VBA
interpreter has the full object model of the host application
immediately
available. To do this in VB.NET, you must use Visual Studio to add
support
for the object models of the applications you're trying to automate.

Yes, some people will not upgrade their current copies of Office.
But they
WILL develop new applications in the new language for the new platform.
Switching to Open Office is not a viable strategy, and they'll find
that out
if they attempt it.

Anyone who has tried to get things working efficiently
cross-platform in
Java becomes an instant convert to dot-Net :) You've heard the
promise
"Write once, run anywhere"? The reality is "Write once, test
everywhere,
efficient nowhere!"

C# simply IS dot-NET. If you prefer object-oriented C syntax, C# is
made
for you. If you prefer to write in VB syntax, VB.NET is your
weapon. The
object code that comes out of the compiler can be exactly the same from
both.

You would probably choose C# if your main interest was in
"efficiency". You
would probably choose VB.NET if your main interest was in productivity.
C-based languages are very close to Assembler: ultimate performance
with a
very steep learning curve. VB-based languages are closer to a
fourth-generation language. Lots of pre-built add-ins that massively
improve programmer productivity at the expense of a bit of efficiency.

Typically, VB code doesn't do very much "work". It's great for
presenting
displays to single users. C# comes to the fore when you are writing
server
applications that are going to do millions of iterations of each
step and
support thousands of concurrent users.
In the end, what seems really surprising is that Microsoft would
make what
seems to be an incredibly bad _business_ decision regarding VB and
VBA on
_every_ platform.
I don't think it *was* a business decision. I believe that if they
could
have made *any* other decision, they would have. The bottom line
was that
VBA was not safe, and could not be made to be safe. It had to go.
From
there, they knew they HAD to re-design the fundamental
architecture. If
they were going to do that, far better to do it once and get it
right for
the entire platform, than have to do it over for each of several
hundred
applications. And having it as a common runtime enabled some
substantial
value-adds that would have been difficult and expensive if they
stayed with
the application extension model.

But I can see why people -- and businesses especially -- would
simply decide
not to upgrade at all, on Windows as well as on Mac OS, to
VBA-deprived
versions of Office.
Sure. So can I. However, I think you will find that what happens
is that
business won't "upgrade", it will "replace". Instead of migrating
their
existing applications upwards, I think you will find that business will
develop new applications in the new version of Office.

One thing that's not at all clear to anyone, yet, is just how much
programming will be *needed* in the new version of Office. The
development
tools and documentation have not yet appeared for Office 2007. When
they
do, I think we will find that we can accomplish a lot of what we
used to do
with VBA -- faster and more reliably -- in XML and all its various
associated technologies.

At least WinOffice 2007 will still support VBA. So that decision
has bought
Microsoft some time.
Well, *I* think they caved in to pressure from the "Fortune 500",
and what
that has done is *waste* everyone's time :) The sooner we get out
of VBA,
the sooner we will be safe, secure and reliable.

And on Macs, maybe the need for an Intel-native version
of Office will also save the MacBU's bacon, at least for casual
users who do
not need cross-platform support beyond document formats. But do
casual users
really need/buy Office anyway?
That's a very good question. If you look at the design of Office
2007, you
would see a substantial "dumbing-down" of individual Office
Applications.
Together with a move of the "development" and "customisation"
functions off
the desktop and into the IS Department. There's no longer much
support for
individual users' customisation. Microsoft's research tells them that
end-users basically DON'T use macros or customisations. So the
ability to
produce these, and the tools to do it with, have all gone off into the
glass-house where professional information systems people will do
that work.

Office 2007 is substantially quicker than Office 2003. I suspect that's
because it's actually quite a bit lighter in weight :)

I'm not even sure that by a time a CLR would be available on Macs,
VB.NET
would still be a viable development platform _anywhere_! At the
very least
I'd sure think twice before committing to it.
Very good question. The start-up of dot-Net was VERY slow. People
took a
very cautious look, and for years it went practically nowhere. All
I can
say is that the up-take of the dot-NET technologies has turned into
a flood
in the past year. I think one of the reasons was that developers were
waiting for it to work properly. Another was that they were waiting
to see
if Java 2 would solve their problems.

On the WinTel side, I think the VHS vs BetaMax debate is over.
Everyone's
going to DVD :)

Cheers

--
------------------------------------------------------------------------
Phillip M. Jones, CET |LIFE MEMBER: VPEA ETA-I, NESDA, ISCET, Sterling
616 Liberty Street |Who's Who. PHONE:276-632-5045, FAX:276-632-0868
Martinsville Va 24112 |[email protected], ICQ11269732, AIM pjonescet
------------------------------------------------------------------------

If it's "fixed", don't "break it"!

mailto:p[email protected]

<http://www.kimbanet.com/~pjones/default.htm>
<http://www.kimbanet.com/~pjones/90th_Birthday/index.htm>
<http://www.kimbanet.com/~pjones/Fulcher/default.html>
<http://www.kimbanet.com/~pjones/Harris/default.htm>
<http://www.kimbanet.com/~pjones/Jones/default.htm>

<http://www.vpea.org>
 
B

Beth Rosengard

Hi Phillip,

VBA will be totally dead in the next version of MacWord. You must have
missed this thread "(No) Future of VBA in Office for Mac?". It started on
August 10. Go back and read it.

Beth
 
J

John McGhie [MVP - Word and Word Macintosh]

Hi Phillip:

There will be NO VBA in future versions of Mac Office. It will not run at
all. No VBA code written for any version of Office will be able to run in
future versions of Mac Office.

The PC version will still have VBA, the Mac Office version will not. Users
wanting to run VBA will need to keep Word 2004 or a PC version of Word.

Users on new Macs do not NEED Virtual PC, new Macs will run Windows
natively.

Users on older Macs can continue to use the existing version of Virtual PC.
Virtual PC has been absorbed into Windows Server, and will be a free add-on
to Windows Vista.

Cheers

I have the actual article in from of me its in the Mailed version of the
Oct Mac Addict Magazine that comes with the CD.

In GETINFO section page 11.

The Bon VOYAGE, VIRTUAL PC.

Very last sentence reads as Follows:

"Other Microsoft MacBU news includes the release of Messenger for Mac
6.0 as a Universal application; the development of a free, Universal
version of Remote Desktop Connection; and the discontinuation of support
for Visual Basic scripting ‹‹ RL"

So it seems that VBA on the Mac Platform appears to be dead in the
water. I don't no whether it means That VBA will be totally unusable in
Mac Version from now on. Or simply it will be there but they're not
supporting it.

Phillip said:
I can understand and it did say with the advent of Boot camp and the
other applications there was no need for VPC. The way it was worded that
implied that there would be no new VPC. Seemed say it was dead in the
water. The way it was written or at the way I read at least it did seem
to say it was dead in the water leaving thousands of PowerPC Machine
hanging.

Since MacAddict is a Mac Centric Magazine. Maybe it was VBA would no
longer be supported on the Mac version? Since I expect the Mac Community
is not wedded to VBA and don't have as much at Stake.

By the way its in the Oct print issue of Mac Addict.
Hi Phillip:

I suggest that you read the online version of your sources :)

The demise of VBA was announced around 1999 and was intended to apply
to all
platforms.

The Fortune 500 companies, with their giga-dollar legacy base of VBA,
kicked
up such a fuss that Microsoft has delayed the removal of VBA from
Microsoft
Office 2007.

However, they are strongly encouraging new development to be in VB.NET.
Microsoft has not backed away from their intention to get rid of VBA,
they
have simply granted a stay of execution. I will bet they are also
producing
large legal agreements that say "If you continue to use VBA, and your
entire
corporation gets blown away by some nasty viruses, don't try to claim
that
we didn't warn you!"

Microsoft is NOT "Dropping VPC" for heaven's sake :) That's just WRONG.
It's a key strategic product for them, in Windows Server 2003.

However, it is no longer needed on new Macs.

Virtual PC for the Mac will continue to be sold for Power PC
machines. On
Mac Intel machines, it's simply not necessary -- the new Macs will run
Windows (better than most PCs...) without it. So there won't be a new
version of VPC for Mac, and it's unlikely that the product will be
reinstated unless and until Apple produces a Mac that won't run Windows.

Cheers

On 9/9/06 6:31 AM, in article (e-mail address removed),

Just read in MacAdict Magazine, That MS was discontinuing any support
for VBA seemed to imply across all platforms. this was also during a
report that they were dropping Virtual PC.

John McGhie [MVP - Word and Word Macintosh] wrote:
Hi David-Artur:

Some really good points you raise. I was going to just dash off a
quick
comment before bed. An hour later...

On 3/9/06 4:50 PM, in article C12047EC.19C06%daix@spoof_usenet.com,

While I understand better now why it would not make much sense to
spend
resources on bringing VBA to Intel Macs given the fact that VBA is
essentially dead _also_ on Windows, what really does not make sense
is the
fact that Microsoft has decided to kill "classic" VB and VBA, period
(despite the huge virus issue, which must have weighted on their
decision).
That's it, right there. That's the REASON. And it's the ONLY
reason :)

The controversy rages, of course. The less people understand the
issues,
the more noise they're making on the topic.

The basic reality is:

* VBA was designed to provide powerful, object-oriented
cross-application
scripting back in kinder, gentler days, when networks were safe
places and
the internet did not really exist.

* the fundamental architecture of VBA relies on the fact that you can
"trust" everything in your immediate vicinity. VBA assumes that
everything
on your computer is meant to be there, and every program interacting
with it
is doing good.

* VBA was also designed at a time when memory and CPU horsepower
was a lot
less plentiful than they are today. For reasons of efficiency, they
dispensed with a lot of the "good housekeeping:" and "security" that is
required these days.

So, when it came time to fix the problems that descended, Microsoft
made the
sensible decision to do it once and do it right. They designed a
single,
secure platform for the entire computer. The Common Language
Runtime is
engineered as part of the operating system, and protected by all of
the OS's
security mechanisms.

Instead of having to solve all these problems over and over again
for every
application that exists, dot-Net solves them once for the entire
system. In
the ensuing 20 years, everyone has learned a lot about making software.
VB.NET is not only fairly impregnable security-wise, it's also a LOT
faster
than VBA.

You can write very serious applications in VB.NET (or any other .NET
language you prefer, including COBOL...). You can even write different
modules in different languages, depending on your needs and
preferences.
They all end up executing on the same runtime platform.

But it doesn't take away the pain of the current "classic" VB
developers, on Macs _as_well_as_ PCs.
No. It doesn't. But in a sense, we only have ourselves to blame.
If we
had written our applications properly in the first place, they would
auto-convert to VB.NET :)

No, you're right. That's not quite true... But nearly. The
problems with
converting to VB.NET are largely around explicitly qualifying things.
VB.NET is a lot more strongly-typed and qualified than VBA (it has
to be:
it's going into a compiler that needs to resolve its references at
compile
time, rather than heading off to an interpreter that can work things
out at
run-time).
While on the Mac we have to start thinking about rewriting
everything in AS,
on the PC side they have to rewrite everything for VB.NET (which
seems to be
quite a bit of work despite the common "VB" name). And cross-platform
support is simply gone in the near future.
Yes. Even Microsoft was taken aback at just how MUCH legacy VBA
there is
out there.
It will not come as a surprise then that on the Windows side the
forced
switch to VB.NET seems neither popular nor, apparently, very
successful
(though I haven't found any recent VB.NET vs VB6 adoption surveys,
those
I've seen did not favor VB.NET at all).
I don't believe you can compare them. VB6 is simply another compiled
language. Just why you would use it these days I'm not sure. It's a
language for creating stand-alone applications. These days, I would be
surprised if a software architect did not choose C++ instead.

VB.NET is a cross-application object-oriented language which also
supports
massively-distributed computing. Choose VB.NET if you want to hook
pieces
of application up across a large number of systems and knit them
together
with XML. You can't properly compare VBA and VB.NET either:
although the
syntax is similar, they have very different purposes. VB.NET is a much
larger and richer platform than VBA.

I was speaking with one of the world's most advanced VBA coders last
week,
who was giggling and chortling at how much easier he was finding
things in
VB.NET. It's a much richer environment with a lot more pre-built
widgets
that do useful stuff you don't have to write. If you wanted to compare
VB.NET with something, you would probably compare it with Java:
they're very
similar in purpose.
And the same arguments I've been reading about the VBA
disappearance on the
Mac have already appeared more than a year ago about that forced
migration
to VB.NET on Windows: people threatening to stop upgrading their
Office
version if VBA is gone, to switch to Open Office instead, and if
they have
to learn a new language and rewrite everything anyway to simply
forego any
Microsoft-made solution and adopt Java instead (or C#, for those still
willing to consider a Microsoft language: once bitten...).
Well, YOU have managed to make sense of it then :) Some people are
going
to take a little longer. One of the main things we lose is that in
VBA, the
code is executing INSIDE the application we're automating. So the VBA
interpreter has the full object model of the host application
immediately
available. To do this in VB.NET, you must use Visual Studio to add
support
for the object models of the applications you're trying to automate.

Yes, some people will not upgrade their current copies of Office.
But they
WILL develop new applications in the new language for the new platform.
Switching to Open Office is not a viable strategy, and they'll find
that out
if they attempt it.

Anyone who has tried to get things working efficiently
cross-platform in
Java becomes an instant convert to dot-Net :) You've heard the
promise
"Write once, run anywhere"? The reality is "Write once, test
everywhere,
efficient nowhere!"

C# simply IS dot-NET. If you prefer object-oriented C syntax, C# is
made
for you. If you prefer to write in VB syntax, VB.NET is your
weapon. The
object code that comes out of the compiler can be exactly the same from
both.

You would probably choose C# if your main interest was in
"efficiency". You
would probably choose VB.NET if your main interest was in productivity.
C-based languages are very close to Assembler: ultimate performance
with a
very steep learning curve. VB-based languages are closer to a
fourth-generation language. Lots of pre-built add-ins that massively
improve programmer productivity at the expense of a bit of efficiency.

Typically, VB code doesn't do very much "work". It's great for
presenting
displays to single users. C# comes to the fore when you are writing
server
applications that are going to do millions of iterations of each
step and
support thousands of concurrent users.
In the end, what seems really surprising is that Microsoft would
make what
seems to be an incredibly bad _business_ decision regarding VB and
VBA on
_every_ platform.
I don't think it *was* a business decision. I believe that if they
could
have made *any* other decision, they would have. The bottom line
was that
VBA was not safe, and could not be made to be safe. It had to go.
From
there, they knew they HAD to re-design the fundamental
architecture. If
they were going to do that, far better to do it once and get it
right for
the entire platform, than have to do it over for each of several
hundred
applications. And having it as a common runtime enabled some
substantial
value-adds that would have been difficult and expensive if they
stayed with
the application extension model.

But I can see why people -- and businesses especially -- would
simply decide
not to upgrade at all, on Windows as well as on Mac OS, to
VBA-deprived
versions of Office.
Sure. So can I. However, I think you will find that what happens
is that
business won't "upgrade", it will "replace". Instead of migrating
their
existing applications upwards, I think you will find that business will
develop new applications in the new version of Office.

One thing that's not at all clear to anyone, yet, is just how much
programming will be *needed* in the new version of Office. The
development
tools and documentation have not yet appeared for Office 2007. When
they
do, I think we will find that we can accomplish a lot of what we
used to do
with VBA -- faster and more reliably -- in XML and all its various
associated technologies.

At least WinOffice 2007 will still support VBA. So that decision
has bought
Microsoft some time.
Well, *I* think they caved in to pressure from the "Fortune 500",
and what
that has done is *waste* everyone's time :) The sooner we get out
of VBA,
the sooner we will be safe, secure and reliable.

And on Macs, maybe the need for an Intel-native version
of Office will also save the MacBU's bacon, at least for casual
users who do
not need cross-platform support beyond document formats. But do
casual users
really need/buy Office anyway?
That's a very good question. If you look at the design of Office
2007, you
would see a substantial "dumbing-down" of individual Office
Applications.
Together with a move of the "development" and "customisation"
functions off
the desktop and into the IS Department. There's no longer much
support for
individual users' customisation. Microsoft's research tells them that
end-users basically DON'T use macros or customisations. So the
ability to
produce these, and the tools to do it with, have all gone off into the
glass-house where professional information systems people will do
that work.

Office 2007 is substantially quicker than Office 2003. I suspect that's
because it's actually quite a bit lighter in weight :)

I'm not even sure that by a time a CLR would be available on Macs,
VB.NET
would still be a viable development platform _anywhere_! At the
very least
I'd sure think twice before committing to it.
Very good question. The start-up of dot-Net was VERY slow. People
took a
very cautious look, and for years it went practically nowhere. All
I can
say is that the up-take of the dot-NET technologies has turned into
a flood
in the past year. I think one of the reasons was that developers were
waiting for it to work properly. Another was that they were waiting
to see
if Java 2 would solve their problems.

On the WinTel side, I think the VHS vs BetaMax debate is over.
Everyone's
going to DVD :)

Cheers

--

Please reply to the newsgroup to maintain the thread. Please do not email
me unless I ask you to.

John McGhie <[email protected]>
Microsoft MVP, Word and Word for Macintosh. Business Analyst, Consultant
Technical Writer.
Sydney, Australia +61 (0) 4 1209 1410
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top