|
| VB(A) og Excel. Fra : Henrik Juul |
Dato : 20-10-03 10:23 |
|
Hejsa.
Jeg er ved at udvikle en applikation i VB60, hvor jeg i høj grad bruger et
Excel-obj. til at lave en masse beregninger.
Applikationen virker fint hos mig selv, men ved installation hos 'kunden'
virker applikationen pludseligt ikke og jeg har en mistanke om, at det er
versionerne af Excel, som volder problemer.
Jeg har lavet en installationspakke med Package&Deploy og burde vel derfor
få den rigtige Excel-version med under installation!?
Er der noget, man skal passe på i forb. med dansk contra engelsk version i
brugen af Excel-objektet??
Please hjælp - jeg er så tæt på at have applikationen færdig!
Mvh
Henrik
| |
Peter Lykkegaard (20-10-2003)
| Kommentar Fra : Peter Lykkegaard |
Dato : 20-10-03 10:42 |
|
"Henrik Juul" <henrik1@janning2-juul3(remove_numbers).dk> wrote in message
news:JPNkb.699$DZ3.438@news.get2net.dk...
> Jeg er ved at udvikle en applikation i VB60, hvor jeg i høj grad bruger et
> Excel-obj. til at lave en masse beregninger.
> Applikationen virker fint hos mig selv, men ved installation hos 'kunden'
> virker applikationen pludseligt ikke og jeg har en mistanke om, at det er
> versionerne af Excel, som volder problemer.
Brug latebinding
Dim objSomeObject As Object
Set objSomeObject = CreateObject("SomeComponent.SomeObject")
Kontra
Dim objSomeObject As New SomeComponent.SomeObject
- Peter
| |
Henrik Juul (20-10-2003)
| Kommentar Fra : Henrik Juul |
Dato : 20-10-03 12:01 |
|
Hvilket et af eksemplerne er late binding?
/Henrik
"Peter Lykkegaard" <polonline@hotmail.com> wrote in message
news:Y5Okb.806$pi4.726@news.get2net.dk...
>
> Brug latebinding
>
> Dim objSomeObject As Object
> Set objSomeObject = CreateObject("SomeComponent.SomeObject")
>
> Kontra
> Dim objSomeObject As New SomeComponent.SomeObject
>
> - Peter
>
>
| |
Harald Staff (20-10-2003)
| Kommentar Fra : Harald Staff |
Dato : 20-10-03 13:11 |
|
Den første, med Object som er en uspesifisert "noget".
"Dim X as Object" er som aller oftest Late binding, mens "Dim Y as
Outlook.Application" er spesifikt Early binding. Se
http://www.erlandsendata.no/norsk/index.php?d=novbaoleolebasics
--
HTH. Beste hilsen Harald
Followup to newsgroup only please
"Henrik Juul" <henrik1@janning2-juul3(remove_numbers).dk> skrev i melding
news:5gPkb.1223$XS4.938@news.get2net.dk...
> Hvilket et af eksemplerne er late binding?
>
> /Henrik
> "Peter Lykkegaard" <polonline@hotmail.com> wrote in message
> news:Y5Okb.806$pi4.726@news.get2net.dk...
> >
> > Brug latebinding
> >
> > Dim objSomeObject As Object
> > Set objSomeObject = CreateObject("SomeComponent.SomeObject")
> >
> > Kontra
> > Dim objSomeObject As New SomeComponent.SomeObject
> >
> > - Peter
> >
> >
>
>
| |
Tomas Christiansen (21-10-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 21-10-03 11:03 |
|
Harald Staff skrev:
> "Dim X as Object" er som aller oftest Late binding
Du mener vel "aller oftest" som i _altid_ ?
-------
Tomas
| |
Henrik Juul (20-10-2003)
| Kommentar Fra : Henrik Juul |
Dato : 20-10-03 13:44 |
|
Det er lavet som late binding, hvis jeg har forstået late binding rigtigt:
Public myXLObj As Object
......
......
......
Public Sub ConvertTxtToExcel(lSourceFile As String)
......
Set myXLObj = CreateObject("Excel.Application")
Jeg fatter ikke en bjælde.- Burde min applikation ikke bruge den Excel.exe,
som kommer med i installations-pakken, når jeg har den med i
Package&Deploy??
/Henrik
"Peter Lykkegaard" <polonline@hotmail.com> wrote in message
news:Y5Okb.806$pi4.726@news.get2net.dk...
>
> "Henrik Juul" <henrik1@janning2-juul3(remove_numbers).dk> wrote in message
> news:JPNkb.699$DZ3.438@news.get2net.dk...
>
> > Jeg er ved at udvikle en applikation i VB60, hvor jeg i høj grad bruger
et
> > Excel-obj. til at lave en masse beregninger.
> > Applikationen virker fint hos mig selv, men ved installation hos
'kunden'
> > virker applikationen pludseligt ikke og jeg har en mistanke om, at det
er
> > versionerne af Excel, som volder problemer.
>
> Brug latebinding
>
> Dim objSomeObject As Object
> Set objSomeObject = CreateObject("SomeComponent.SomeObject")
>
> Kontra
> Dim objSomeObject As New SomeComponent.SomeObject
>
> - Peter
>
>
| |
Harald Staff (20-10-2003)
| Kommentar Fra : Harald Staff |
Dato : 20-10-03 15:09 |
|
"Henrik Juul" <henrik1@janning2-juul3(remove_numbers).dk> skrev i melding
news:LMQkb.1273$3E5.894@news.get2net.dk...
> Det er lavet som late binding, hvis jeg har forstået late binding rigtigt:
>
> Public myXLObj As Object
> Set myXLObj = CreateObject("Excel.Application")
>
> Jeg fatter ikke en bjælde.- Burde min applikation ikke bruge den
Excel.exe,
> som kommer med i installations-pakken, når jeg har den med i
> Package&Deploy??
Nei. Nei nei nei. CreateObject bruker den Excel som er installert hos
brukeren og som er definert som "Excel" i brukerens registry. Med late
binding skal du ikke sette referanser til noe Excel.olb i prosjektet.
Og for all del: Excel.exe skal installeres med installasjonsprogramet for
Office, du kan ikke bare kopiere den inn til en bruker med en Setup. Både
fordi det kan og trolig vil ødelegge vedkommendes eksisterende
Office-installasjon, og fordi det er uhyre ulovlig. Excel er dyr og skal
kjøpes og betales av hver enkelt, du har absolutt ingen tillatelser til å
distribuere den.
--
HTH. Beste hilsen Harald
Followup to newsgroup only please
| |
Henrik Juul (20-10-2003)
| Kommentar Fra : Henrik Juul |
Dato : 20-10-03 15:24 |
|
Jeg medsender ikke bare en excel.exe, men package&deploy vælger selv
en excel.exe, som så kommer med i installationskittet.
Hvis jeg forstår det rigtigt så ligger tricket i at kode sin
applikation med early binding og en reference til excel library
objektet (Microsoft Excel 10.0 Object Library). Når så koden virker,
slår man referencen fra og ændrer koden til late binding.... korrekt??
Mvh
Henrik
>
>Nei. Nei nei nei. CreateObject bruker den Excel som er installert hos
>brukeren og som er definert som "Excel" i brukerens registry. Med late
>binding skal du ikke sette referanser til noe Excel.olb i prosjektet.
>
>Og for all del: Excel.exe skal installeres med installasjonsprogramet for
>Office, du kan ikke bare kopiere den inn til en bruker med en Setup. Både
>fordi det kan og trolig vil ødelegge vedkommendes eksisterende
>Office-installasjon, og fordi det er uhyre ulovlig. Excel er dyr og skal
>kjøpes og betales av hver enkelt, du har absolutt ingen tillatelser til å
>distribuere den.
Henrik Juul
henrik@1janning-2juul.dk (fjern tallene)
| |
Harald Staff (20-10-2003)
| Kommentar Fra : Harald Staff |
Dato : 20-10-03 15:34 |
|
"Henrik Juul" <henrik@1janning-2juul.dk (fjern tallene)> skrev i melding
news:mlr7pv8kmcgedr3mi2o89unj0tinc28gjj@4ax.com...
> Jeg medsender ikke bare en excel.exe, men package&deploy vælger selv
> en excel.exe, som så kommer med i installationskittet.
Hehe. Microsoft har lavet sin egen automatiske piratkopi-distributør ?
Fantastisk, intet mindre
Men jeg gjetter det betyr at det ligger en referanse der. Sjekk også hva for
en excel.exe det er tale om -meg bekjent finnes bare den ene, selve
programmet.
> Hvis jeg forstår det rigtigt så ligger tricket i at kode sin
> applikation med early binding og en reference til excel library
> objektet (Microsoft Excel 10.0 Object Library). Når så koden virker,
> slår man referencen fra og ændrer koden til late binding.... korrekt??
Korrekt. Og alt som da ikke lenger eksisterer skal deklareres om til
"object". Late binding er verken enkelt eller hurtig, men til gjengjeld
relativt robust. Denne maskinen har ikke Excel 10, men programmet vil i
teorien gjenkjenne min Excel 9 og kjøre ubesværet.
HTH. Beste hilsen Harald
Followup to newsgroup only please
| |
Henrik Juul (20-10-2003)
| Kommentar Fra : Henrik Juul |
Dato : 20-10-03 20:42 |
|
Nu har jeg fundet ud af, hvor mit program fejler og vel at mærke efter
der er ændret til late-binding.
Følgende stump kode fejler ikke på min egen pc, men derimod på en af
mine venners:
myXLObj.Columns("A:E").Select
myXLObj.Selection.Sort Key1:=myXLObj.range("B1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Følgende fejlmeddelse vises:
'Application-defined or object-defined error'
Hjææææælp.
On Mon, 20 Oct 2003 11:22:49 +0200, "Henrik Juul"
<henrik1@janning2-juul3(remove_numbers).dk> wrote:
>Hejsa.
>
>Jeg er ved at udvikle en applikation i VB60, hvor jeg i høj grad bruger et
>Excel-obj. til at lave en masse beregninger.
>Applikationen virker fint hos mig selv, men ved installation hos 'kunden'
>virker applikationen pludseligt ikke og jeg har en mistanke om, at det er
>versionerne af Excel, som volder problemer.
>Jeg har lavet en installationspakke med Package&Deploy og burde vel derfor
>få den rigtige Excel-version med under installation!?
>Er der noget, man skal passe på i forb. med dansk contra engelsk version i
>brugen af Excel-objektet??
>Please hjælp - jeg er så tæt på at have applikationen færdig!
>
>Mvh
>Henrik
>
Henrik Juul
henrik@1janning-2juul.dk (fjern tallene)
| |
Harald Staff (20-10-2003)
| Kommentar Fra : Harald Staff |
Dato : 20-10-03 23:32 |
|
Excel har ikke kolonner. Regneark har kolonner. Om det er der koden svikter.
Hva er forskjell på en av dine venners Excel og din Excel, generelt eller idet programmet
kjører -bortsett fra feilen ?
--
HTH. Beste hilsen Harald
Followup to newsgroup only please.
"Henrik Juul" <henrik@1janning-2juul.dk (fjern tallene)> wrote in message
news:96e8pvkablslvik828khvka30agbfit8s4@4ax.com...
> Nu har jeg fundet ud af, hvor mit program fejler og vel at mærke efter
> der er ændret til late-binding.
> Følgende stump kode fejler ikke på min egen pc, men derimod på en af
> mine venners:
>
> myXLObj.Columns("A:E").Select
> myXLObj.Selection.Sort Key1:=myXLObj.range("B1"), Order1:=xlAscending,
> Header:=xlGuess, _
> OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
> DataOption1:=xlSortNormal
>
> Følgende fejlmeddelse vises:
> 'Application-defined or object-defined error'
>
> Hjææææælp.
>
>
> On Mon, 20 Oct 2003 11:22:49 +0200, "Henrik Juul"
> <henrik1@janning2-juul3(remove_numbers).dk> wrote:
>
> >Hejsa.
> >
> >Jeg er ved at udvikle en applikation i VB60, hvor jeg i høj grad bruger et
> >Excel-obj. til at lave en masse beregninger.
> >Applikationen virker fint hos mig selv, men ved installation hos 'kunden'
> >virker applikationen pludseligt ikke og jeg har en mistanke om, at det er
> >versionerne af Excel, som volder problemer.
> >Jeg har lavet en installationspakke med Package&Deploy og burde vel derfor
> >få den rigtige Excel-version med under installation!?
> >Er der noget, man skal passe på i forb. med dansk contra engelsk version i
> >brugen af Excel-objektet??
> >Please hjælp - jeg er så tæt på at have applikationen færdig!
> >
> >Mvh
> >Henrik
> >
>
> Henrik Juul
> henrik@1janning-2juul.dk (fjern tallene)
| |
Henrik Juul (21-10-2003)
| Kommentar Fra : Henrik Juul |
Dato : 21-10-03 07:29 |
|
Det kan ikke passe. Programmet kører fint på både min egen pc og på min arb.
pc og i øvrigt laver jeg nogenlunde det samme længere oppe i koden, hvor der
ikke fejles:
myXLObj.Columns("C:H").Select
myXLObj.Selection.Delete Shift:=xlToLeft 'delete columns not needed
Jeg tror måske, det har noget med selve myXLObj.Selection.Sort at gøre - kan
syntaxen være forskellig fra Excel version til Excel version??
"Harald Staff" <innocent@enron.invalid> wrote in message
news:bn1nou$kvo$1@services.kq.no...
> Excel har ikke kolonner. Regneark har kolonner. Om det er der koden
svikter.
>
> Hva er forskjell på en av dine venners Excel og din Excel, generelt eller
idet programmet
> kjører -bortsett fra feilen ?
>
> --
> HTH. Beste hilsen Harald
> Followup to newsgroup only please.
>
> "Henrik Juul" <henrik@1janning-2juul.dk (fjern tallene)> wrote in message
> news:96e8pvkablslvik828khvka30agbfit8s4@4ax.com...
> > Nu har jeg fundet ud af, hvor mit program fejler og vel at mærke efter
> > der er ændret til late-binding.
> > Følgende stump kode fejler ikke på min egen pc, men derimod på en af
> > mine venners:
> >
> > myXLObj.Columns("A:E").Select
> > myXLObj.Selection.Sort Key1:=myXLObj.range("B1"), Order1:=xlAscending,
> > Header:=xlGuess, _
> > OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
> > DataOption1:=xlSortNormal
> >
> > Følgende fejlmeddelse vises:
> > 'Application-defined or object-defined error'
> >
> > Hjææææælp.
> >
> >
> > On Mon, 20 Oct 2003 11:22:49 +0200, "Henrik Juul"
> > <henrik1@janning2-juul3(remove_numbers).dk> wrote:
> >
> > >Hejsa.
> > >
> > >Jeg er ved at udvikle en applikation i VB60, hvor jeg i høj grad bruger
et
> > >Excel-obj. til at lave en masse beregninger.
> > >Applikationen virker fint hos mig selv, men ved installation hos
'kunden'
> > >virker applikationen pludseligt ikke og jeg har en mistanke om, at det
er
> > >versionerne af Excel, som volder problemer.
> > >Jeg har lavet en installationspakke med Package&Deploy og burde vel
derfor
> > >få den rigtige Excel-version med under installation!?
> > >Er der noget, man skal passe på i forb. med dansk contra engelsk
version i
> > >brugen af Excel-objektet??
> > >Please hjælp - jeg er så tæt på at have applikationen færdig!
> > >
> > >Mvh
> > >Henrik
> > >
> >
> > Henrik Juul
> > henrik@1janning-2juul.dk (fjern tallene)
>
>
| |
Harald Staff (22-10-2003)
| Kommentar Fra : Harald Staff |
Dato : 22-10-03 09:13 |
|
Unnskyld, Henrik, du har aldeles rett. Application har også kolonner -dvs
den bruker da default aktivt ark.
Følgende er testet i Excel 9, og den feilet der i "DataOption". Etter å ha
fjernet den så fungerer koden.
myXLObj.Columns("A:E").Sort _
Key1:=Application.Range("B1"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
Unngå Select, det bare forsinker:
myXLObj.Columns("C:H").Delete
Når det gjelder xlGuess så spesifiser heller. Fra Excel Help:
Header Optional Variant. Specifies whether or not the first row contains
headers. Can be one of the following XlYesNoGuess constants: xlGuess, xlNo,
or xlYes. Use xlYes if the first row contains headers (it shouldn't be
sorted). Use xlNo if there are no headers (the entire range should be
sorted). Use xlGuess to let Microsoft Excel determine whether there's a
header, and to determine where it is, if there is one.
--
HTH. Beste hilsen Harald
Followup to newsgroup only please
"Henrik Juul" <henrik1@janning2-juul3(remove_numbers).dk> skrev i melding
news:Nm4lb.2077$Su.130@news.get2net.dk...
> Det kan ikke passe. Programmet kører fint på både min egen pc og på min
arb.
> pc og i øvrigt laver jeg nogenlunde det samme længere oppe i koden, hvor
der
> ikke fejles:
> myXLObj.Columns("C:H").Select
> myXLObj.Selection.Delete Shift:=xlToLeft 'delete columns not needed
>
> Jeg tror måske, det har noget med selve myXLObj.Selection.Sort at gøre -
kan
> syntaxen være forskellig fra Excel version til Excel version??
| |
|
|