/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
WSH/VBA: Kompatibilitet
Fra : Lars Kim Lund


Dato : 04-05-01 12:18


Dav, ved ikke helt om man må snakke afarter af visual basic her, men
jeg prøver alligevel.

Spørgsmålet er ganske simpelt. Er det muligt at køre VBA kode (f.eks.
fra Microsoft Office) fra WSH?

Jeg kan godt få startet applikationen, men den tuder over syntakser
der fungerer i VBA. Er der nogle guidelines for "sådan ser det ud i
VBA, sådan skal du skrive i WSH"?

Altså set obj = Wscript.CreateObject("word.application")
obj.blabla = ?!

Please advice.

--
Lars Kim Lund
http://www.net-faq.dk/

 
 
Peter Lykkegaard (04-05-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 04-05-01 13:00


"Lars Kim Lund" <larskim@mail.com> wrote in message
news:3af38f23.15205715@news.tele.dk...
>
> Dav, ved ikke helt om man må snakke afarter af visual basic her, men
> jeg prøver alligevel.
>
> Spørgsmålet er ganske simpelt. Er det muligt at køre VBA kode (f.eks.
> fra Microsoft Office) fra WSH?
>
> Jeg kan godt få startet applikationen, men den tuder over syntakser
> der fungerer i VBA. Er der nogle guidelines for "sådan ser det ud i
> VBA, sådan skal du skrive i WSH"?
>
> Altså set obj = Wscript.CreateObject("word.application")
> obj.blabla = ?!
>
Du kan _ikke_ flytte VBA direkte over til WHS kode, men næsten
Jeg mener at WHS falder ind under VBScript - har ikke selv rodet med WHS

Prøv at lave et lille script ala Hello World - _uden_ type erklæringer

Dvs brug
Dim strMinStreng

ikke
Dim strMinStreng As String

Den sidste er nogo i VBScript

Der er også en række andre ting, der vil pine og plage dig - fx brug af
Format etc

mvh/Peter Lykkegaard



Lars Kim Lund (04-05-2001)
Kommentar
Fra : Lars Kim Lund


Dato : 04-05-01 14:45

Hej "Peter Lykkegaard" <polonline@hot.mail.com>

>Du kan _ikke_ flytte VBA direkte over til WHS kode, men næsten
>Jeg mener at WHS falder ind under VBScript - har ikke selv rodet med WHS

Si, vbscript.

>Prøv at lave et lille script ala Hello World - _uden_ type erklæringer

Jeg kan til nød godt programmere vbscript, jeg kender til
objekt-modellen og kontrol-strukturerne og variable syntaks etc. kan
jeg læse mig til i referencen.

Mit problem er at 'konvertere' kommandoer fra VBA til WSH. Egentlig
handler det blot om at kalde library-funktioner i VBA.

F.eks. ser VBA kode ud som følger.

Options.DefaultFilePath(Path:=wdUserTemplatesPath) = "S:\"
Options.DefaultFilePath(Path:=wdWorkgroupTemplatesPath) = "H:\"

Så jeg tænkte, aha, det må man kunne bruge i vbscript.

Set WordObj = Wscript.CreateObject("Word.Application")

WordObj.Documents.add
WordObj.Options.DefaultFilePath(Path:=wdUserTemplatesPath)="S:\"
WordObj.Options.DefaultFilePath(Path:=wdWorkgroupTemplatesPath)="H:\"
WordObj.Application.Quit

Men nix, den går ikke. Med lidt hjælp fra en kollega der ved en del
mere om vbscript end jeg (der skal ikke ret meget til), fandt jeg ud
af at den har problemer med konstanterne.

Således fungerer:

Set WordObj = Wscript.CreateObject("Word.Application")

wdUserTemplatesPath     = 2
wdWorkgroupTemplatesPath = 3
wdUserOptionsPath     = 4
wdStartupPath        = 8

WordObj.Documents.add
WordObj.Options.DefaultFilePath(wdUserTemplatesPath) = "H:\"
WordObj.Options.DefaultFilePath(wdWorkgroupTemplatesPath) = "S:\"
WordObj.Options.DefaultFilePath(wdAutoRecoverPath) = "H:\"
WordObj.Options.DefaultFilePath(wdStartupPath) = "H:\"
WordObj.Application.Quit

Objektbrowseren er en rar ting. Jeg har også lidt problemer med at få
at sætte parameter på objekter; altså with object .blabla = blabla,
men jeg har ikke kigget så meget på det endnu.

Det jeg egentlig mest savner er nogle flere sample-scripts på Office
2000 library-kald fra vbscript.

>Der er også en række andre ting, der vil pine og plage dig - fx brug af
>Format etc

Sikkert. Visual Basic er noget lort. Var en ensartet syntaks for meget
at forlange?

P.S.
Hvordan er det med Dim. Hvad er straffen for ikke at declare variable?

--
Lars Kim Lund
http://www.net-faq.dk/

Peter Lykkegaard (04-05-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 04-05-01 15:51


"Lars Kim Lund" <larskim@mail.com> wrote in message
news:htb5ft8phtq32ujqndu15ji0j5tepnbhup@sunsite.auc.dk...
> Hej "Peter Lykkegaard" <polonline@hot.mail.com>
>
> >Du kan _ikke_ flytte VBA direkte over til WHS kode, men næsten
> >Jeg mener at WHS falder ind under VBScript - har ikke selv rodet med WHS
>
> Si, vbscript.
>
> >Prøv at lave et lille script ala Hello World - _uden_ type erklæringer
>
> Jeg kan til nød godt programmere vbscript,

Det var mere for at "se" forskellen mellem vbScript og VBA
> Med lidt hjælp fra en kollega der ved en del
> mere om vbscript end jeg (der skal ikke ret meget til), fandt jeg ud
> af at den har problemer med konstanterne.

Jeps, det er en af herlighederne - glemte den desværre i første omgang
>
> Således fungerer:
>
> Set WordObj = Wscript.CreateObject("Word.Application")
>
> wdUserTemplatesPath = 2
> wdWorkgroupTemplatesPath = 3
> wdUserOptionsPath = 4
> wdStartupPath = 8
>
Ja, det er rigtigt, du er desværre nødt til at erklære alle konstanter igen
Men de er en rar ting at have i koden
Du kan slå konstanterne op i VBA vha intermediate vinduet (Ctrl-G)

> Objektbrowseren er en rar ting. Jeg har også lidt problemer med at få
> at sætte parameter på objekter; altså with object .blabla = blabla,
> men jeg har ikke kigget så meget på det endnu.

Lav den del af koden i VBA og flyt den over i VBScript
>
> Det jeg egentlig mest savner er nogle flere sample-scripts på Office
> 2000 library-kald fra vbscript.
>
Der er ikke forskel på de to ting, med undtagelsen af konstater og strong
typing - afiak

> >Der er også en række andre ting, der vil pine og plage dig - fx brug af
> >Format etc
>
> Sikkert. Visual Basic er noget lort. Var en ensartet syntaks for meget
> at forlange?

VBScript er _ikke_ VB og omvendt
Lisså lidt som Java og JavaScript er to forsk størrelser

Prøv at kikke på
http://msdn.microsoft.com/scripting/default.htm

> Hvordan er det med Dim. Hvad er straffen for ikke at declare variable?

Du får den samme straf, som når du ikke dokumenterer dine patch kabler
Dvs mange timer med at finde en tyrk fjel

Brug _altid_ Option Explicit (hvis ellers WHS tillader)
Det svarer til at gennemtvinge mærkning af alle patch kabler, så at sige

mvh/Peter Lykkegaard



Lars Kim Lund (04-05-2001)
Kommentar
Fra : Lars Kim Lund


Dato : 04-05-01 16:02

Hej "Peter Lykkegaard" <polonline@hot.mail.com>

>Ja, det er rigtigt, du er desværre nødt til at erklære alle konstanter igen
>Men de er en rar ting at have i koden
>Du kan slå konstanterne op i VBA vha intermediate vinduet (Ctrl-G)

Jeg bruger objekt-browseren.

>> Objektbrowseren er en rar ting. Jeg har også lidt problemer med at få
>> at sætte parameter på objekter; altså with object .blabla = blabla,
>> men jeg har ikke kigget så meget på det endnu.
>
>Lav den del af koden i VBA og flyt den over i VBScript

Det har jeg prøvet, det er netop problemet - det virker ikke. I hvert
fald ikke uden tilretninger, som jeg ikke lige har gennemskuet endnu.

>> Sikkert. Visual Basic er noget lort. Var en ensartet syntaks for meget
>> at forlange?
>
>VBScript er _ikke_ VB og omvendt
>Lisså lidt som Java og JavaScript er to forsk størrelser

Ja, ja, men de er i familie. Jeg har i øvrigt også prøvet at
programmere i rigtig VB engang tilbage i version 5, det brød jeg mig
ikke specielt om .. men smag og behag.

>> Hvordan er det med Dim. Hvad er straffen for ikke at declare variable?
>
>Du får den samme straf, som når du ikke dokumenterer dine patch kabler
>Dvs mange timer med at finde en tyrk fjel

Nå, ikke andet. Det er nogenlunde til at overskue når man kun laver
små-scripts.

--
Lars Kim Lund
http://www.net-faq.dk/

Peter Lykkegaard (04-05-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 04-05-01 16:26


"Lars Kim Lund" <larskim@mail.com> wrote in message
news:ctg5ft48utkef1o5a0nfbldjccsqu4jdkk@sunsite.auc.dk...
> Hej "Peter Lykkegaard" <polonline@hot.mail.com>
>
> >Lav den del af koden i VBA og flyt den over i VBScript
>
> Det har jeg prøvet, det er netop problemet - det virker ikke. I hvert
> fald ikke uden tilretninger, som jeg ikke lige har gennemskuet endnu.
>
Du kan _ikke_ bruge strong typing

Du skal oprette objecter på runtime tidspunktet
dvs CreateObject etc

Undlad brug af <parameternavn>:=<parameterværdi>
Jævnfør dit eget eksempel tidligere

Erklær _alle_ konstanterne (med de rigtige værdier

Jeg har ikke haft noget der ikke har virket endnu efter en (næsten) direkte
kopiering, men måske er det fordi det sidder på rygraden - who knows

> >> Hvordan er det med Dim. Hvad er straffen for ikke at declare variable?
> >
> >Du får den samme straf, som når du ikke dokumenterer dine patch kabler
> >Dvs mange timer med at finde en tyrk fjel
>
> Nå, ikke andet. Det er nogenlunde til at overskue når man kun laver
> små-scripts.
>
Jep - lissom, når man har en lille hub med 16 indgange
Det er til at se sig ud af

mvh/Peter Lykkegaard



Lars Kim Lund (04-05-2001)
Kommentar
Fra : Lars Kim Lund


Dato : 04-05-01 18:40

Hej "Peter Lykkegaard" <polonline@hot.mail.com>

>> Det har jeg prøvet, det er netop problemet - det virker ikke. I hvert
>> fald ikke uden tilretninger, som jeg ikke lige har gennemskuet endnu.
>>
>Du kan _ikke_ bruge strong typing
>
>Du skal oprette objecter på runtime tidspunktet
>dvs CreateObject etc

Nå, det var det du mente med strong typing.

>Jeg har ikke haft noget der ikke har virket endnu efter en (næsten) direkte
>kopiering, men måske er det fordi det sidder på rygraden - who knows

Måske, alt bliver lettere når man har prøvet det før.

>Jep - lissom, når man har en lille hub med 16 indgange
>Det er til at se sig ud af

Du er ret glad for netværksanalogier. Jeg arbejder rent faktisk også
med andet end netværk. :)

Men i øvrigt tak for hjælpen.

--
Lars Kim Lund
http://www.net-faq.dk/

Lars Kim Lund (04-05-2001)
Kommentar
Fra : Lars Kim Lund


Dato : 04-05-01 20:38

Hej "Peter Lykkegaard" <polonline@hot.mail.com>

>Jeg har ikke haft noget der ikke har virket endnu efter en (næsten) direkte
>kopiering, men måske er det fordi det sidder på rygraden - who knows

Jeg må give dig ret, jeg ved ikke rigtig hvad der gik galt første
omgang. Følgende kode er næsten ren cut'n'paste.

Set Obj = Wscript.CreateObject("Word.Application")

Obj.Application.Visible = True
Obj.Documents.Add

Obj.Application.DisplayStatusBar = True

With Obj.ActiveWindow
.DisplayHorizontalScrollBar    = True
.DisplayVerticalScrollBar    = True
.DisplayLeftScrollBar    = False
.DisplayRightRuler       = False
.DisplayScreenTips       = False
With .View
.ShowAnimation       = True
.Draft          = False
.WrapToWindow       = False
.ShowPicturePlaceHolders    = False
.ShowFieldCodes       = False
.ShowBookmarks       = False
.ShowTabs          = False
.ShowSpaces       = False
.ShowParagraphs       = False
.ShowHyphens       = False
.ShowHiddenText       = False
.ShowAll          = False
.ShowDrawings       = True
.ShowObjectAnchors       = False
.ShowTextBoundaries      = False
.ShowHighlight       = True
End With
End With

Obj.Application.Quit

Jeg siger tak.

--
Lars Kim Lund
http://www.net-faq.dk/

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408942
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste