infostabil > edb.* > edb.regneark

AK (24.01.2007, 23:14)
Hej NG,

Jeg vil gerne starte excel automatisk fra scheduled job,og have den til at
starte med en bestemt macro (ikke "auto_open")

Jeg ønsker ikke at denne specielle macro skal køre når en "almindelig"
bruger åbner en bestemt excel fil, og det sker jo hvis man har en macro
"auto_open" i regnearket., så derfor ønsker jeg at starte excel med en andet
macronavn som parameter fra en serverproces.

mvh
Allan
Leo Heuser (25.01.2007, 08:29)
"AK" <allan.denmarkæt-dk> skrev i en meddelelse
news:db0f
> Hej NG,
> Jeg vil gerne starte excel automatisk fra scheduled job,og have den til at
> starte med en bestemt macro (ikke "auto_open")
> Jeg ønsker ikke at denne specielle macro skal køre når en "almindelig"
> bruger åbner en bestemt excel fil, og det sker jo hvis man har en macro
> "auto_open" i regnearket., så derfor ønsker jeg at starte excel med en
> andet macronavn som parameter fra en serverproces.
> mvh
> Allan


Hej Allan

Hvilken version af Excel er der tale om? (Nævn altid dette.)

Jeg er ikke sikker på, at jeg helt forstår, hvad du mener.
Drejer det sig om en bestemt projektmappe, som indeholder
en makro, der kun skal afvikles, når *du* åbner projektmappen
og ikke skal afvikles, hvis andre brugere åbner mappen?

Din beskrivelse lyder i mine ører, som om du vil afvikle en
makro, når *Excel* åbnes. Hvor ligger i givet fald denne makro?

Kan du ikke uddybe, hvad du mener med "scheduled job".
AK (26.01.2007, 00:20)
>> Hej NG,
>> Jeg vil gerne starte excel automatisk fra scheduled job,og have den til
>> at starte med en bestemt macro (ikke "auto_open")
>> Jeg ønsker ikke at denne specielle macro skal køre når en "almindelig"
>> bruger åbner en bestemt excel fil, og det sker jo hvis man har en macro
>> "auto_open" i regnearket., så derfor ønsker jeg at starte excel med en
>> andet macronavn som parameter fra en serverproces.


> Hej Allan
> Hvilken version af Excel er der tale om? (Nævn altid dette.)


Excel 2003 SP2
> Jeg er ikke sikker på, at jeg helt forstår, hvad du mener.
> Drejer det sig om en bestemt projektmappe, som indeholder
> en makro, der kun skal afvikles, når *du* åbner projektmappen
> og ikke skal afvikles, hvis andre brugere åbner mappen?

Det er hele workbook f.eks Statistics.xls, og macro ligger i den
Det er sådan at hvis man har en macro: auto_open så køre den hver gang en
bruger åbner workbook (hvis man ikke holder "shift" nede tror jeg det er.)
Men jeg ønsker at afvikle en opdatering af denne workbook (hente nye data
fra extern data source, og opdatere pivot tabeller) så den er klar til
brugerne om morgenen.
De kan nemlig ikke afvikle Macro og får en fejl, desuden ønsker jeg ikke at
dem der kan skal kunne gøre det.
Så derfor har jeg et scheduled job på serveren som gerne skulle åbne og køre
en bestemt macro og så lukke ned igen.
med f.eks Access kan man skrive :
call "C:\Program Files\Microsoft Office\OFFICE11\msaccess.exe"
"I:\statistics.mdb" /x AutoRun1 << og så køre den macro ved navn AutoRun1
det er samme fremgangsmåde jeg efterlyser i Excel

> Din beskrivelse lyder i mine ører, som om du vil afvikle en
> makro, når *Excel* åbnes. Hvor ligger i givet fald denne makro?


Ja nemlig, og macro ligger i det pågældende workbook
> Kan du ikke uddybe, hvad du mener med "scheduled job".


på server kan man afvikle scheduled jobs på bestemte tidspunkter.
>mvh

Allan
Leo Heuser (26.01.2007, 11:21)
"AK" <allan.denmarkæt-dk> skrev i en meddelelse
news:db0f
> Excel 2003 SP2
> Det er hele workbook f.eks Statistics.xls, og macro ligger i den


Projektmappe og Workbook er det samme.

> Det er sådan at hvis man har en macro: auto_open så køre den hver gang en
> bruger åbner workbook (hvis man ikke holder "shift" nede tror jeg det er.)


"Auto_Open" er gået på pension :-). I stedet for bruges "Sub Workbook_Open",
der liggger i "ThisWorkbook" (der gælder stadig det med "shift").

> Men jeg ønsker at afvikle en opdatering af denne workbook (hente nye data
> fra extern data source, og opdatere pivot tabeller) så den er klar til
> brugerne om morgenen.
> De kan nemlig ikke afvikle Macro og får en fejl, desuden ønsker jeg ikke
> at dem der kan skal kunne gøre det.
> Så derfor har jeg et scheduled job på serveren som gerne skulle åbne og
> køre en bestemt macro og så lukke ned igen.
> med f.eks Access kan man skrive :
> call "C:\Program Files\Microsoft Office\OFFICE11\msaccess.exe"
> "I:\statistics.mdb" /x AutoRun1 << og så køre den macro ved navn AutoRun1
> det er samme fremgangsmåde jeg efterlyser i Excel


Desværre eksisterer denne mulighed ikke for Excel. Den findes også i Word,

hvorfor Excel er blevet holdt uden for er en gåde.

>> Din beskrivelse lyder i mine ører, som om du vil afvikle en
>> makro, når *Excel* åbnes. Hvor ligger i givet fald denne makro?

> Ja nemlig, og macro ligger i det pågældende workbook
>> Kan du ikke uddybe, hvad du mener med "scheduled job".

> på server kan man afvikle scheduled jobs på bestemte tidspunkter.


Jeg vil foreslå følgende:
Den projektmappe, det drejer sig om, har jeg kaldt "UserBook.xls"

1. Opret en ny projektmappe og kald den fx "Updates.xls"
2. Indsæt denne makro i "ThisWorkbook" for mappen.

Private Sub Workbook_Open()
Dim ActWorkbook As String
Dim UserFile As String

UserFile = "F:\Dokumenter\Excel\Test\UserBook.xls"

Workbooks.Open Filename:=UserFile
ActWorkbook = ActiveWorkbook.Name
Application.Run ActWorkbook & "!UpdateData", 0

ThisWorkbook.Close savechanges:=False
End Sub

3. Ret i UserFile til det aktuelle stinavn.
4. Gem og luk "Updates.xls"

I "UserBook.xls" ser makroen, der skal updatere
tingene således ud:

Sub UpdateData(Dummy)
Din kode
End Sub

"Dummy" har jeg taget med, for at makroen ikke skal blive
vist på listen over makroer (<Alt><F8>).
Argumentet til parameteren "Dummy"er nullet i
ActWorkbook & "!UpdateData", 0

Forretningsgangen er nu, at du fra serveren kører
"Updates.xls". Derved afvikles "Workbook_Open", der

1. Åbner "UserBook.xls"
2. Afvikler sub'en "UpdateData".
3. Lukker "Updates.xls"

Med venlig hilsen
Leo
AK (29.01.2007, 20:01)
Hej Leo,

Mange tak for indsatsen, det ser ud til at være en god løsning, har dog ikke
nået at få det prøvet af, men vil gøre de så hurtigt som muligt.

Hav en god aften

mvh Allan
Leo Heuser (29.01.2007, 22:40)
"AK" <allan.denmarkæt-dk> skrev i en meddelelse
news:db0f
> Hej Leo,
> Mange tak for indsatsen, det ser ud til at være en god løsning, har dog
> ikke nået at få det prøvet af, men vil gøre de så hurtigt som muligt.
> Hav en god aften
> mvh Allan


Hej Allan

Velbekomme.
Lad mig høre, hvordan det forløber.

Med venlig hilsen
Leo
AK (06.02.2007, 23:36)
Hej Leo,
Så har jeg forsøgt, det virker næsten
Se lige mine kommentarer nedenfor

> Jeg vil foreslå følgende:
> Den projektmappe, det drejer sig om, har jeg kaldt "UserBook.xls"
> 1. Opret en ny projektmappe og kald den fx "Updates.xls"
> 2. Indsæt denne makro i "ThisWorkbook" for mappen.
>Jeg har lavet nedenstående, den ligger under Modules/Module1

jeg kan ikke få den til at måtte hedde "private", desuden har jeg døbt den
om til at hedde Auto_open for at den starter automatisk når Update.xls
afvikles.

[..]
> ThisWorkbook.Close savechanges:=False
> End Sub
>> 3. Ret i UserFile til det aktuelle stinavn.

> 4. Gem og luk "Updates.xls"
> I "UserBook.xls" ser makroen, der skal updatere
> tingene således ud:

Dette har jeg lavet helt magen til, koden ligger ligeledes under
Modules/Module1

> Sub UpdateData(Dummy)
> Din kode
> End Sub
> "Dummy" har jeg taget med, for at makroen ikke skal blive
> vist på listen over makroer (<Alt><F8>).
> Argumentet til parameteren "Dummy"er nullet i
> ActWorkbook & "!UpdateData", 0
> "Updates.xls". Derved afvikles "Workbook_Open", der
> 1. Åbner "UserBook.xls"
> 2. Afvikler sub'en "UpdateData".
> 3. Lukker "Updates.xls"


Når Update.xls åbnes starter auto_open og mit regneark som skal opdateres
åbner også men der kommer en fejl:
Runtime error 1004
macro F:\Dokumenter\Excel\Test\UserBook.xls!Updatedate cannot be found
(jeg har så naturligvis lige opdøbt filepath og programnavn, men har checket
det omhyggeligt, men der åbnes jo det rigtige program så det er kun macro
den ikke vil kendes ved)

så der er lige en lille detalje som jeg ikke kan få til at fungere.

Mvh
Allan
Leo Heuser (07.02.2007, 10:12)
Hej Allan

"AK" <allan.denmarkæt-dk> skrev i en meddelelse
news:db0f
> Hej Leo,
> Så har jeg forsøgt, det virker næsten
> Se lige mine kommentarer nedenfor
> Jeg har lavet nedenstående, den ligger under Modules/Module1
> jeg kan ikke få den til at måtte hedde "private", desuden har jeg døbt den
> om til at hedde Auto_open for at den starter automatisk når Update.xls
> afvikles.


Jeg synes, at du skulle læse mit svar en gang til ;-)

Jeg har lagt mine prøvemapper i dk.binaer under navnet "AK"

Med venlig hilsen
Leo
AK (08.02.2007, 00:07)
Hej Leo,
> Jeg synes, at du skulle læse mit svar en gang til ;-)
> Jeg har lagt mine prøvemapper i dk.binaer under navnet "AK"


Tak, jeg læser grundiger, og jeg får det til at virke, bortset fra at jeg
gerne vil have lukket userbook.xls og derefter returnere til update.xls for
at lukke den pænt ned også, således at der ikke står noget åbent. (det er
et scheduleret job på serveren der køre alt dette)

mvh
Allan
Leo Heuser (08.02.2007, 09:30)
"AK" <allan.denmarkæt-dk> skrev i en meddelelse
news:db0f
> Hej Leo,
> Tak, jeg læser grundiger, og jeg får det til at virke, bortset fra at jeg
> gerne vil have lukket userbook.xls og derefter returnere til update.xls
> for at lukke den pænt ned også, således at der ikke står noget åbent.
> (det er et scheduleret job på serveren der køre alt dette)
> mvh
> Allan


Hej Allan

Det kan du gøre således:

Private Sub Workbook_Open()
'Leo Heuser, 8-2-2007
Dim ActWorkbook As String
Dim UserFile As String

UserFile = "F:\Dokumenter\Excel\Test\UserBook.xls"

Workbooks.Open Filename:=UserFile
ActWorkbook = ActiveWorkbook.Name
Application.Run ActWorkbook & "!UpdateData", 0

With ActiveWorkbook
.Save
.Close
End With

ThisWorkbook.Close savechanges:=False
End Sub

Med venlig hilsen
Leo
AK (14.02.2007, 19:49)
Hej Leo,

Tak for svar, og det virker så helt fint nu. Perfekt.!

Lige en enkelt detalje, hvordan mon man åbner og retter Macro uden den
udføre Macro med det samme og lukker ned før man har tænkt sig om. :-)
hilsen
Allan
[..]
Leo Heuser (14.02.2007, 20:02)
"AK" <allan.denmarkæt-dk> skrev i en meddelelse
news:db0f
> Tak for svar, og det virker så helt fint nu. Perfekt.!
> Lige en enkelt detalje, hvordan mon man åbner og retter Macro uden den
> udføre Macro med det samme og lukker ned før man har tænkt sig om. :-)
> hilsen
> Allan


Hej Allan

Velbekomme og tak for tilbagemeldingen.

Med hensyn til at rette makroen: Tidligere nævnte du metoden med at
holde <Shift> nede, mens man åbner projektmappen. Dette forhindrer
auto-makroer i at blive afviklet. Virker det ikke, når du bruger
Workbook_Open? Det skal det! Husk at <Shift> skal holdes nede,
indtil projektmappen er helt åbnet!

Med venlig hilsen
Leo
Lignende emner