Avatar billede boligkode Nybegynder
23. september 2007 - 17:08 Der er 11 kommentarer og
1 løsning

Brug aktiv projektmappe eller åbn ny projektmappe - VBA

Vil gerne lave en makro, som vælger at bruge den aktive projektmappe hvis det første ark er navngivet: "Generelt".

Alternativt skal brugeren vælge en fil. Se nedenfor.

Derefter sættes den resterende del af makroen i gang.

Den bliver ved med at sætte dialogboks til åbning af fil igang.

Håber at én kan hjælpe?

Sub AabenEllerEksist()

If Sheets(1).Name = "Generelt" Then
    Filnavn1 = ActiveWorkbook.Name
   
Else
    Application.Dialogs(xlDialogOpen).Show
    Filnavn1 = ActiveWorkbook.Name
   
End If
Avatar billede word-hajen Nybegynder
23. september 2007 - 18:16 #1
Den fungerer fint hos mig. Har du styr på, hvad der er din aktive workbook, når du fyrer makroen i luften?
Avatar billede boligkode Nybegynder
23. september 2007 - 18:47 #2
Hej. Lavet følgende simple kode. Denne fejler desværre også. Såvidt jeg kan se er det genkendelsen af arknavnet "Generelt" i Ark1 - som det kniber med - for der skrives ikke noget i N30:

Sub A22_PDF()
If Sheets(1).Name = "Generelt" Then
    Sheets("Generelt").Select
    Range("N30").FormulaR1C1 = "PDF-22-Sjov"
Else
    Application.Dialogs(xlDialogOpen).Show
    Sheets("Generelt").Select
    Range("M30").FormulaR1C1 = "PDF-22-Ikke-Sjov"
End If
End Sub
Avatar billede word-hajen Nybegynder
23. september 2007 - 18:55 #3
Ja, jeg er klar over, at det er arknavnet, den er gal med - for ellers ville den ikke smide dialogen i luften.

Jeg går selvfølgelig ud fra, at det første ark i din fil hedder "Generelt" ;-) Ligger makroen i den workbook eller i en anden workbook?

Bliver der heller ikke skrevet noget i M30, når du derefter vælger og åbner en anden workbook med arket "Generelt"?
Avatar billede boligkode Nybegynder
23. september 2007 - 19:03 #4
Makroen ligger i en anden Workbook. Den skal når den fungerer - distruberes som en knap til flere brugere via et tilføjelsesprogram.

Yes. Der bliver skrevet i M30 - uanset at man annullerer åbning af fil (hvilket jeg i og for sig også kunne tænke mig at den lod være med - men det er et andet issue).

Checket endnu engang i VBA - Ark1 er lig arket Generelt.

Kedeligt - men kørt lidt surt i denne.
Avatar billede word-hajen Nybegynder
23. september 2007 - 19:09 #5
Hvis du vil, må du gerne sende mig dine 2 workbooks - den med koden og en med Generelt-fanen i. Bare lige for at tjekke; for som sagt fungerer din indledende kode efter hensigten hos mig.

lemontree snabelting jubii dot dk
Avatar billede word-hajen Nybegynder
23. september 2007 - 19:10 #6
pst! husk lige at acceptere kabbaks svar i http://www.eksperten.dk/spm/797061
Avatar billede boligkode Nybegynder
23. september 2007 - 22:55 #7
Checket emnet igen.

Problemstilling er, at Ark1 er lig arket Generelt, men Sheets(1) er det første Ark i projektmappen, som hedder Forside.

Dermed kan jeg ikke bruge denne metode til at skelne om brugeren skal anvende den åbne excelmappe - eller der skal åbnes en anden - så vidt jeg har forstået.

Ærgerligt, med mindre en har en anden løsning.
Avatar billede kabbak Professor
23. september 2007 - 23:16 #8
Prøv at teste denne, hvis arket ikke er i den første, kommer dialogen og du vælger en anden, hvis arket heller ikke er i den lukkes den igen og dialogen kommer igen.
du kan nu også allulere dialogen.

Var det det du efterlyste ??

Sub A22_PDF()
    If EksistererArk("Generelt") Then
        Sheets("Generelt").Select
        Range("N30").FormulaR1C1 = "PDF-22-Sjov"
    Else
Forfra:
        Navn = Application.Dialogs(xlDialogOpen).Show
        If Navn = False Then Exit Sub
        If EksistererArk("Generelt") Then
            Sheets("Generelt").Select
            Range("M30").FormulaR1C1 = "PDF-22-Ikke-Sjov"
        Else
            ActiveWorkbook.Close
            GoTo Forfra
        End If

    End If
End Sub

Public Function EksistererArk(Navn As String) As Boolean
    For Each SH In ActiveWorkbook.Sheets
        If SH.Name = Navn Then
            Eksisterer = True
            Exit Function
        End If
    Next
End Function
Avatar billede kabbak Professor
23. september 2007 - 23:20 #9
der var lige en fejl i functionen

Sub A22_PDF()
    If EksistererArk("Generelt") Then
        Sheets("Generelt").Select
        Range("N30").FormulaR1C1 = "PDF-22-Sjov"
    Else
Forfra:
        Navn = Application.Dialogs(xlDialogOpen).Show
        If Navn = False Then Exit Sub
        If EksistererArk("Generelt") Then
            Sheets("Generelt").Select
            Range("M30").FormulaR1C1 = "PDF-22-Ikke-Sjov"
        Else
            ActiveWorkbook.Close
            GoTo Forfra
        End If
    End If
End Sub

Public Function EksistererArk(Navn As String) As Boolean
    For Each SH In ActiveWorkbook.Sheets
        If SH.Name = Navn Then
            EksistererArk = True
            Exit Function
        End If
    Next
    EksistererArk = False
End Function
Avatar billede boligkode Nybegynder
23. september 2007 - 23:52 #10
Den virker bare. Dejlig med den sidste tilføjelse. Det løste problemet.

Hvis IF-sætningen udover at checke om arket Generelt eksisterer i den åbne projektmappe, kan man så tillige checke om Range("D3") har værdien SAND. Altså før man vælge at åbne en ny fil.

Sidste er vist et solidt ekstraspørgsmål.

Læg et svar og tusind tak.
Avatar billede kabbak Professor
24. september 2007 - 09:28 #11
"kan man så tillige checke om Range("D3") har værdien SAND. Altså før man vælge at åbne en ny fil."

Er det i arket "Generelt", at Range("D3")skal være sand. ??
Hvis det er det, hvordan vil du så åbne en ny fil, når arket eksisterer. ??
Avatar billede boligkode Nybegynder
24. september 2007 - 16:05 #12
Jeg fandt ud af at sammenhængen med Range("D3") ikke var nødvendig.
Tusind tak for hjælpen.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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