Avatar billede 2hans Juniormester
07. december 2014 - 15:43 Der er 15 kommentarer og
1 løsning

Automatisk udskrift af udfyldte ark

Lige et sidste spørgsmål i denne omgang :)

Jeg har fikset en formular i en projektmappe, der fylder op til 40 ark.

Der er behov for at udskrive de udfyldte ark, og antallet varierer, idet formularen automatisk udfylder det antal ark der skal bruges.

Så kommer 200 Points spørgsmålet:

Kan det lade sig gøre at lave en funktion, der udskriver de ark, hvor der f.eks er indhold i F7, mens de øvrige ark ikke udskrives ?

F.eks. Celle F7 er udfyldt i Ark 1, Ark 2, Ark 3, Ark 4, Ark 5, Ark 6 Ark 7 og Árk 8. mens celle F7 er tomt i resten af arkene. Det er så kun ark 1 til 7, der skal udskrives.

Findes der mon en måde at gøre det på?
Avatar billede supertekst Ekspert
07. december 2014 - 16:34 #1
Ja det kan en makro også klare
Avatar billede 2hans Juniormester
07. december 2014 - 16:47 #2
Det lyder ret fint, Supertekst, monstro du kunne komme lidt nærmere ind på, hvordan sådan en makro kunne se ud? :)
Avatar billede supertekst Ekspert
07. december 2014 - 17:20 #3
Vender tilbage..
Avatar billede supertekst Ekspert
07. december 2014 - 18:18 #4
Anbringes under ThisWorkbook i VBA (Alt+F11):

Public Sub udskrivArkBetinget()
Const betingelse = "F7"
Dim Ark

    For Each Ark In ActiveWorkbook.Sheets
        If Ark.Range(betingelse) <> "" Then
            Ark.Activate
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
   
        End If
    Next Ark
End Sub
Avatar billede 2hans Juniormester
07. december 2014 - 18:28 #5
Hej supertekst, det ser jo nærmest genialt ud. Det skal OMGÅENDE testes :)
Avatar billede 2hans Juniormester
07. december 2014 - 18:42 #6
Hmm, jeg havde vist ikke helt fået forklaret projektet. F7 bliver udfyldt, når der registreret en dato i et andet felt. Det ser ud om om makroen, som iøvrigt fungerer fint, idet den meget fint sorterer Ark fra, der er helt tomme, uden formler.

Men netop i F7 i de aktuelle ark, er der en formel:=HVIS(B1="";"";"udskriv")

Kan man lave det så makroen ikke "ser" formlen og agerer som om feltet er tomt?
Avatar billede 2hans Juniormester
07. december 2014 - 18:59 #7
Kanon, det virker, med en lille ændring, mange tak, kast lige et svar, så du kan få nogle point :)

Ændringen:

Public Sub udskrivArkBetinget()
Const betingelse = "F7"
Dim Ark

    For Each Ark In ActiveWorkbook.Sheets
        If Ark.Range(betingelse) = "udskriv" Then
            Ark.Activate
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
   
        End If
    Next Ark
End Sub
Avatar billede 2hans Juniormester
07. december 2014 - 19:12 #8
Hej igen, er det et problem at arkene er beskyttede ? Når jeg kører test i mit testprojekt, ser det ud til at virke, men når jeg lægger den ind i mit fullscale projekt, og kompilerer, kommer der følgende fejlmedd:

Run-time error '428' Object doesn't support this property method
Avatar billede supertekst Ekspert
07. december 2014 - 23:22 #9
Er det denne linje, der viser fejl?

  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
Avatar billede supertekst Ekspert
07. december 2014 - 23:29 #10
Hvis ja - så prøv evt. med denne erstatning:

ActiveSheet.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
Avatar billede 2hans Juniormester
07. december 2014 - 23:31 #11
Hej Supertekst

Nej, det er denne:  If Ark.Range(betingelse) <> "" Then

Men det er lidt underligt, for jeg har lavet en test projektmappe, der indeholder samme antal ark, som  og der virker det udmærket. Men projektmappen virker det simpelthen ikke i. Jeg tænkte, at det er for tungt, så jeg har lavet en kopi og hevet ark ud, så der nu kun er 10 ark i den, og det virker stadig ikke.
Der er masser af øvrig kode i projektet, men det burde jo ikke gøre, at udskriftfunktionen ikke kan virke.

Meget underligt :)
Avatar billede supertekst Ekspert
07. december 2014 - 23:46 #12
Hej 2hans

Ok - så kan det være du skal ændre den viste linje til:

If Ark.range("F7") = "udskriv" Then
Avatar billede supertekst Ekspert
07. december 2014 - 23:47 #13
PS: Lukke "biksen" nu - god nat
Avatar billede 2hans Juniormester
08. december 2014 - 00:04 #14
Hej supertekst
Ja, jeg tænkte nok du ville nævne det, men det ER J7, jeg skrev forkert i problemformuleringen.

Det er godt nok underligt. Ville det være ok, hvis jeg sender dig en afkortet version, så du eventuelt kan se, hvad det er der sker?

Det bliver i så fald først i morgen, for det er også sengetid her :)
Avatar billede supertekst Ekspert
08. december 2014 - 09:20 #15
Hej 2hans

Det er ok - min @-adresse er under min profil.
Avatar billede 2hans Juniormester
08. december 2014 - 13:55 #16
Mail er afsendt :)
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

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