Avatar billede bahne2000 Novice
24. september 2007 - 10:30 Der er 7 kommentarer og
1 løsning

excell VBeditor gemme filnavn ved hjælp af variabler

Sti = ThisWorkbook.Path & "\"  ' definer sti hvor skabelon skal gemmes som anden fil
Navn = Range("A1").Value    ' sæt variablen NAVN lig værdien i cellen A1

Navn = Replace(Navn, "/", "_") 'Erstatter slash med underscore
Navn = Replace(Navn, ".", " ") 'Erstatter punktum med underscore
Navn = Replace(Navn, ",", " ") 'Erstatter komma med underscore

'gem fil ved hjælp af variabler.

ActiveWorkbook.SaveAs Filename:= _
Sti & Navn, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

Denne kode fungerer fint. Men.. jeg vil gerne have at hvis koden skulle støde på samme navn mere end 1 gang skal den tilføje eksempelvis "2" til filnavnet. Nogen ide til hvordan det skal kodes?
Avatar billede tjacob Juniormester
24. september 2007 - 16:44 #1
Jeg ved ikke om der er nogle indbyggede funktioner til det i Excel, men du kan i hvert tilfælde gøre det med FileSystemObjectet:

Først skal du tilføje en reference til FileSystemObjectet: i VB editoren: Gå ind i menu 'Tools/References', og vælg her 'Microsoft Scripting Runtime'.

I din kode:

Dim FSO as FileSystemObject
If FSO.FileExists(Sti & Navn) Then Navn = Navn & "2"

-Du skal lige være opmærksom på at "2" skal tilføjes før extension.
Avatar billede kabbak Professor
24. september 2007 - 17:12 #2
Public Sub test()
    Dim Nr As Variant
    sti = ThisWorkbook.Path & "\"  ' definer sti hvor skabelon skal gemmes som anden fil
    Navn = Range("A1").Value    ' sæt variablen NAVN lig værdien i cellen A1
    Nr = Empty
    Navn = Replace(Navn, "/", "_")    'Erstatter slash med underscore
    Navn = Replace(Navn, ".", " ")    'Erstatter punktum med underscore
    Navn = Replace(Navn, ",", " ")    'Erstatter komma med underscore
    Do Until EksistererFil(sti & Navn & Nr) = False
        Nr = Nr + 1
    Loop
    EksistererFil (sti & Navn)
    'gem fil ved hjælp af variabler.

    ActiveWorkbook.SaveAs Filename:= _
                          sti & Navn & Nr, FileFormat:=xlNormal _
                        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                          CreateBackup:=False
End Sub

Public Function EksistererFil(FilOgSti) As Boolean
 
    If Dir(FilOgSti & ".xls") <> "" Then
        EksistererFil = True
    Else
        EksistererFil = False
    End If
End Function
Avatar billede kabbak Professor
24. september 2007 - 22:05 #3
der var en linje for meget

Public Sub test()
    Dim Nr As Variant
    sti = ThisWorkbook.Path & "\"  ' definer sti hvor skabelon skal gemmes som anden fil
    Navn = Range("A1").Value    ' sæt variablen NAVN lig værdien i cellen A1
    Nr = Empty
    Navn = Replace(Navn, "/", "_")    'Erstatter slash med underscore
    Navn = Replace(Navn, ".", " ")    'Erstatter punktum med underscore
    Navn = Replace(Navn, ",", " ")    'Erstatter komma med underscore
    Do Until EksistererFil(sti & Navn & Nr) = False
        Nr = Nr + 1
    Loop
 
    'gem fil ved hjælp af variabler.

    ActiveWorkbook.SaveAs Filename:= _
                          sti & Navn & Nr, FileFormat:=xlNormal _
                        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                          CreateBackup:=False
End Sub

Public Function EksistererFil(FilOgSti) As Boolean

    If Dir(FilOgSti & ".xls") <> "" Then
        EksistererFil = True
    Else
        EksistererFil = False
    End If
End Function
Avatar billede bahne2000 Novice
28. september 2007 - 09:36 #4
Smukt Kabbak :)
Virker uden problemer :)
Mange tak!
Avatar billede bahne2000 Novice
28. september 2007 - 09:49 #5
HMM er stødt på et nyt problem... nogle navne indeholder tegnet ' " ' og det kan jeg ik lige finde ud af at lave replace på, editoren brokker sig hvis jeg laver

Navn = Replace(Navn, " " ", " ")    'Erstatter gåseøjne med mellemrum
Avatar billede kabbak Professor
28. september 2007 - 10:58 #6
Navn = Replace(Navn, chr(34), " ")
Avatar billede kabbak Professor
28. september 2007 - 11:13 #7
Et svar ;-))
Avatar billede bahne2000 Novice
28. september 2007 - 15:59 #8
There ya go mate.
Det er blevet rigtig godt.
Makro'n henter nu et nr fra en liste, slår op i en database ud fra nr, returnerer resultatet af en sql forespørgelse til excell arket, gemmer arket med det tilsvarende navn, tjekker om filnavnet eksisterer (den kender du jo;) ), springer videre til næste nummer i listen på det andet excell ark og looper fint derud af. sparede mig lige for rigtig mange timers repetitions abe arb. :D
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