Avatar billede hanne_markussen Nybegynder
17. august 2003 - 19:34 Der er 19 kommentarer og
1 løsning

åbne/lukke regneark med/uden Makro

Hej !
Har kreeret en rapport med fortløbende nummerering og automatisk afspilning af makro - med stor hjælp fra eksperten - Rapporten skal ligge på et netværksdrev og være tilgængelig for flere brugere.

Var jublende lykkelig indtil jeg erfarer, at nå jeg gemmer rapporten som "fru Hansen" og vil kalde den frem igen, så bliver der spurgt om jeg vil åbne med makro eller uden makro. Svarer jeg ja til at åbne med markro så bliver rapporten tildelt et nyt nr. - SE det var jo ikke meningen.

Er det ikke muligt at kode sig ud af at MsgBox popper op ?

At gemme rapporten, således at nummer ikke kan ændres ?

hilsen
Hanne
Avatar billede thor.ostergaard Nybegynder
17. august 2003 - 19:40 #1
Så skal du bruge Workbook_New() i stedet for Workbook_Open() - så bliver makroen kun kørt når der bliver skabt en ny workbook på grundlag af skabelonen.
Avatar billede hanne_markussen Nybegynder
17. august 2003 - 21:39 #2
Hej !
Har prøvet at ændre koden så den ser således ud:

Private Sub Workbook_New()
RapNr
End Sub
Koden er lagt ind i "Denne projektmappe"!
Og det sker der desværre ikke noget ved. For nu skal jeg igen aktivere makroen ved at - afspilde den -
Hvad gør jeg forkert !!

hilsen :-(
Hanne
Avatar billede thor.ostergaard Nybegynder
17. august 2003 - 21:42 #3
Workbook_new skal også ligge i ThisWorkbook - på samme måde som WorkBook_Open
Avatar billede hanne_markussen Nybegynder
17. august 2003 - 22:44 #4
Hej !

Det gør den også - men alligevel.... (jeg har virkelig chekket at koden ligger det rigtige sted) Vi er da enige om at ThisWorkbook, er det samme som denne projektmappe ? eller... Ja !! noget gør jeg forkert !!
hilsen :-(
Hanne
Avatar billede bak Forsker
17. august 2003 - 22:54 #5
Jeg tror det nemmeste er at chekke om den celle hvor løbenummereret er i, er større end fx. 1 og lægge testen ind i workbook_open

Private Sub Workbook_Open()
If Sheets("Ark1").Range("A5") > 1 then exit sub
RapNr
End Sub
Avatar billede hanne_markussen Nybegynder
18. august 2003 - 09:05 #6
Har prøvet ovennævnte, men det virker ikke. Jeg skal stadig afspille makroen. Det virker godt nok med:
Workbook_Open()
RapNr
End sub

Problemet er at når jeg åbner rapporten fra skabelonbibliotekt så får den et nr. (så langt så godt) men når jeg så gemmer rapporten som rapportl, og åbner  Rapport1 igen, så får den igen et nyt nr. , og det er jo ikke meningen. (det nummer rapporten for tildelt når den åbnes fra skabelonbiblioteket skal være unikt)- kan det lade sig gøre ?
Hanne
Avatar billede thor.ostergaard Nybegynder
18. august 2003 - 09:10 #7
Problemet med workbook_open() er, at den bliver - som navnet antyder - kørt HVER gang den pågældende fil åbnes.
Workbook_New bliver tilgengæld kun kørt én gang - nemlig når der bliver skabt en ny workbook på basis af en skabelon.
Avatar billede bak Forsker
18. august 2003 - 09:10 #8
Hanne-> Du må gøre noget galt
Hvis rapportnummeret står på Ark1 i celle A5 vil makroen under åbning stoppe FØR der bliver tildelt et nyt nummer, hvis der er et i forvejen i cellen.
Du skal selvfølgelig selv ændre Ark1 og A5 til det der passer for dig.

Private Sub Workbook_Open()
'Her går vi ud af makroen, hvis den allerede har et nummer i A5
If Sheets("Ark1").Range("A5") > 1 then exit sub
'Hvis der ikke er et nummer, køres makroen rapnr
RapNr
End Sub
Avatar billede bak Forsker
18. august 2003 - 09:13 #9
Thor-> hvilken version af excel bruger du ?
Workbook_New er ikke en standard event, men skal sættes via et klassemodul (ihvert tilfælde i xl2000).
Avatar billede thor.ostergaard Nybegynder
18. august 2003 - 09:16 #10
UNDSKYLD - Jeg regnede med at der var en vis sammenhæng mellem Word og Excel...
Beklager meget...
Avatar billede bak Forsker
18. august 2003 - 09:19 #11
Nææe, du behøver ikke undskylde, for den findes faktisk, men er noget mere besværlig at komme til, da man først skal oprette klassemodulet. :-)
Avatar billede hanne_markussen Nybegynder
18. august 2003 - 10:15 #12
Hej Bak->Der vil jo altid stå et nummer i cellen, da det jo bliver tildelt, når rapporten åbnes fra skabelonbiblioteket. Det er sker nu er:
Rapporten åbnes - får nr. 100.
Nr. 100 bliver så gemt i et dokument
Næste gang skabelonen så åbnes får den tildelt nr. 101, der så bliver gemt i dokumentet o.s.v.
Sådan skal det også være, men det der er mit problem er, at når jeg gemmer raport med nr. 100 som Rapport1, og åbner denne rapport igen og siger ja til at køre med makro - så får den tildelt et nyt nr. og det skal den jo ikke have. Jeg ved godt at siger jeg nej til at køre med makro, så sker der ikke noget, men da der er flere der skal bruge den samme skabelon (flere sagsbehandlere)så ved jeg det går galt, hvis jeg ikke får rapporten lavet så nummeret ikke kan ændres, når det først er blevet tildelt rapporten.

Jeg håber du kan fårstå, hvad jeg mener, under alle omstændigheder er jeg glad for din hjælp.
Hanne
Avatar billede bak Forsker
18. august 2003 - 10:36 #13
Jeg forstår godt hvad du mener, men har du prøvet min makro ?
Den skelner jo netop mellem om du åbner skabelonen eller et gemt dokument med et nummer.
Når du åbner skabelonen (med et blankt nummerfelt) for at danne et nyt dokument, chekkes om der findes et nummer i cellen. Det gør der jo ikke så makroen Rapnr køres så.
Når du åbner et "gammelt" dokument chekkes det samme. Her findes der et nummer i cellen og derfor køres makroen rapnr ikke.
Avatar billede hanne_markussen Nybegynder
18. august 2003 - 11:03 #14
Ja - jeg har naturligvis prøvet din makro og den virker ikke fordi, jeg starter jo ikke dokumentet op med et blankt nummer felt. Når jeg åbner skalbelonen køres en makro, hvor en del af koden er "NytNr = Val(GamlNr) + 1, så der vil jo altid stå et nummer i feltet. Dette mener jeg også er korrekt, idet numrene skal være fortløbende,og uden brud i nummerrækkefølgen. (Din kode virker for så vidt godt nok, men for at få tildelt et nyt nr. skal jeg køre makroen ved hjælp af "Funktioner -> makro -> afspil makro "RapNr". Det der er hele finessen (kald det et krav) er, at dem der skal bruge rapporten, ikke skal gøre andet en at åbne den fra skabelonbiblioteket, udfylde nogle felter og så skrive den du.
Avatar billede thor.ostergaard Nybegynder
18. august 2003 - 12:20 #15
Lad mig prøve at formulere det på en anden måde:
Du har en rapport skabelon, som dine brugere bruger når de skal skrive rapporter. Disse rapporter skal hver for sig nummereres fortløbende - lidt som fakturarer.
Hvis dette er korrekt foreslår jeg,
- at du har rapportnummeret liggende i en ekstern fil
- nummerfeltet i skabelonen er tomt
- som Bak foreslår lader du din Workbook_open makro hente nummeret i den eksterne fil og tælle det et op og gemme det eksterne dokument
Avatar billede hanne_markussen Nybegynder
18. august 2003 - 12:51 #16
Ja - men er det ikke også det jeg gør !! - se nedennænvte kode !
- er lagt ind i et modul.

Sub RapNr()
Dim RapFil
Dim NyNr
Dim GlNr

    RapFil = "D:\diverse\rap.txt"
    Open RapFil For Input As #1
    Line Input #1, GlNr
    Close #1
    Open RapFil For Output As #1
    NyNr = Val(GlNr) + 1
    Print #1, NyNr
    Close #1
    Range("C4").Value = NyNr
End Sub
Så har jeg lagt Bak's kode ind i "ThisWorkbook", den ser sådan ud

Private Sub Workbook_open()
If Sheets("Rapport").Range("C4") > 1 Then Exit Sub
RapNr
End Sub

Og det virker også, men det jeg gerne vil have er: at når jeg/vi åbner rapporten fra skabelonbiblioteket så afspilles makroen således at nummmer automatisk bliver sat ind i celle "C4"
Og det gør det ikke nu !! -
Sorry :-(
Men jeg vil stadig meget gerne have hjælp !
Avatar billede bak Forsker
18. august 2003 - 13:05 #17
Jeg har prøvet at lave noget magen til og det virker fint nok.
Prøv lige at åbne selve skabelonen og se efter om der står noget i C4.
Det skal der ikke i skabelonen
Avatar billede thor.ostergaard Nybegynder
18. august 2003 - 13:06 #18
Er Sheets("Rapport").Range("C4") = 1 i din skabelon?
Avatar billede hanne_markussen Nybegynder
18. august 2003 - 13:53 #19
Hej Bak !

Du har ret, da jeg slettede det nummer der stod i skabelonen så virker det - I am so happy - Tak for hjælpen

Hilsen
Hanne
Avatar billede bak Forsker
18. august 2003 - 19:53 #20
Fint Hanne, så kom vi igennem alligevel...
Hvad med at dele nogle point ud til Thor og mig :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Stort udvalg af Excel kurser til alle niveauer og jobfunktioner

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester