Avatar billede hardie Nybegynder
06. marts 2015 - 12:21 Der er 8 kommentarer og
1 løsning

Makro der gemmer en fil i en bestemt mappe

Hej

Jeg sidder og roder med en makro jeg ikke helt kan få til at fungere.
Makroen skal gemme en fil i en given mappe på computeren.
Hvis mappen ikke er oprettet skal den mappen oprettes.

Jeg har indsat følgende i min makro:
MkDir "C:\Mappe\2015"

Det fungerer - men hvis mappen er oprettet debugger makroen.

Jeg vil gerne have indsat et tjek at om stien eksisterer. Hvis den ikke eksisterer skal ovenstående makro køres.
Avatar billede garrett Seniormester
06. marts 2015 - 13:13 #1
Du kan lave et check på om en mappe eksistere v.h.a. et FileSystemObject:

Dim fs As Object
Dim strFolder As String
strFolder = "C:\directory"
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FolderExists(strFolder) Then
    fs.CreateFolder (strFolder)
    Debug.Print "New folder created"
Else
    Debug.Print "No new folder needed"
End If
Avatar billede hardie Nybegynder
09. marts 2015 - 08:55 #2
Jeg har kopieret ovenstående ind i min makro.
Ændret "strFolder" til min sti.

Men makroen debugger i "fs.CreateFolder (strFolder)"

Og slettet min MKdir - linie.

Hvad gør jeg galt?
Avatar billede garrett Seniormester
09. marts 2015 - 09:29 #3
Hvilken fejl kommer der ved "fs.CreateFolder..."?
Avatar billede hardie Nybegynder
09. marts 2015 - 09:50 #4
Run-time error "76"

Path not found
Avatar billede garrett Seniormester
09. marts 2015 - 09:56 #5
Kan du vise hele din kode ?
Avatar billede hardie Nybegynder
09. marts 2015 - 10:06 #6
Range("N3").Select
    Selection.Copy
    Range("N5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Dim fs As Object
    Dim strFolder As String
    strFolder = "C:\Ugerapporter\2015\"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If Not fs.FolderExists(strFolder) Then
    fs.CreateFolder (strFolder)
    Debug.Print "New folder created"
    Else
    Debug.Print "No new folder needed"
    End If
    ActiveWorkbook.SaveAs Filename:="C:\Ugerapporter\2015\" & Range("N5").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
  Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
  CreateBackup:=False
  Range("L19").Select
Avatar billede garrett Seniormester
09. marts 2015 - 14:43 #7
Har kigget lidt på .CreateFolder, og det ser ud til at den kun vil oprette mapper ét niveau af gangen.
Det samme er vist gældende for MkDir funktionen.
Så hvis du ændrer
fs.CreateFolder (strFolder)
til
Shell ("cmd /C mkdir """ & strFolder & """")
burde det virke.
Avatar billede hardie Nybegynder
10. marts 2015 - 08:20 #8
Takker - så virker det.

Smider du lige svar så du kan få dine velfortjente point
Avatar billede garrett Seniormester
10. marts 2015 - 08:37 #9
Godt så
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