17. august 2003 - 19:34Der 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 ?
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.
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 !!
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
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
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.
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
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
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.
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.
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
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 !
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
Fint Hanne, så kom vi igennem alligevel... Hvad med at dele nogle point ud til Thor og mig :-)
Synes godt om
Ny brugerNybegynder
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.