Avatar billede perhol Seniormester
01. januar 2014 - 13:18 Der er 4 kommentarer og
1 løsning

Makro virker ikke i Excel 2007 og 2010 format

Nedenstående Sub fungerer hvis den køres i i Excel 2003 format i Excel 2007 og 2010 (.xls i stedet for .xlsm), men den fungerer ikke i Excel 2007 og Excel 2010 format. Den kommer bare ud med meddelelsen i Err1 og filen bliver ikke gemt!
Er der nogen der kan forklare mig hvorfor?

Funktionen nedenunder fungerer som den skal. Den opretter den ønskede mappestruktur, også når den køres i Excel 2007 format.

-----------------------------------------------------------------

Private Sub S_Exist()
'****************************************
'* Gemmer regnskabet i en mappe og med  *
'*  et navn bestemt af Beboernavn og  *
'*  Startdato hvis Drev S eksisterer    *
'****************************************
    On Error GoTo Err1
    Application.DisplayAlerts = False
    With Sheets("Kassebog")
        ActiveWorkbook.SaveAs CheckMakePath("S:\Boinstitutionen Højsletten\" & Sheets("Kassebog").Range("i4").Text & "-huset" & "\" & "Beboere" _
        & "\" & Sheets("Kassebog").Range("E2").Text & "\" & "Regnskab" & "\" _
        & Format(Sheets("Kassebog").Range("A4"), "yyyy")) & "Regnskab " & Format(Sheets("Kassebog").Range("A4"), _
        "mm-yyyy") & " " & Sheets("Kassebog").Range("E2").Text & ".xlsm"
    End With
'    MsgBox "                Regnskabet er gemt" + Chr(10) + "i beboerens regnskabsmappe på S:-drevet"
    Exit Sub
Err1:
    MsgBox "Regnskabet blev ikke gemt" + Chr(10) + "'Gem'-handlingen blev annulleret.", vbExclamation, ""
    Exit Sub
End Sub

-----------------------------------------------------------------

Function CheckMakePath(ByVal vPath As String) As String
    Dim PathSep As Long, oPS As Long
    If Right(vPath, 1) <> "\" Then vPath = vPath & "\"
    PathSep = InStr(3, vPath, "\")
    If PathSep = 0 Then Exit Function
    Do
        oPS = PathSep
        PathSep = InStr(oPS + 1, vPath, "\")
        If PathSep = 0 Then Exit Do
        If Len(Dir(Left(vPath, PathSep), vbDirectory)) = 0 Then Exit Do
    Loop
    Do Until PathSep = 0
        MkDir Left(vPath, PathSep)
        oPS = PathSep
        PathSep = InStr(oPS + 1, vPath, "\")
    Loop
    CheckMakePath = vPath
End Function

-----------------------------------------------------------------
01. januar 2014 - 13:34 #1
Hvad med at sætte en kommentar (') foran

On Error GoTo Err1

Så du kan se, hvad der faktisk går galt?
Avatar billede perhol Seniormester
01. januar 2014 - 13:39 #2
Det havde jeg ikke lige tænkt på.
Må prøves i morgen, er på vej til arbejde nu.
Avatar billede perhol Seniormester
02. januar 2014 - 08:21 #3
Fejlmeddelelsen lød -
Run-time error '1004':

Dette filtypenavn kan ikke bruges med den valgte filtype. Skift filtypenavnet i tekstboksen Finavn, eller vælg en anden filtype ved at ændre filtype.


Filen lå som *.xltm (skabelon med aktiverede makroer).

Jeg fjernede alle spærringer, lukkede filen, accepterede at få gemt ændringer, åbnede filen igen, gemte den uændret med filnavnet *.xlsm (projektmappe med aktiverede makroer) og nu virker det hele.

Det lader altså til at jeg ikke kan lade en makro i en skabelon med aktiverede makroer gemme som en projektmappe med aktiverede makroer!

Men nu er problemet i hvert fald løst.
02. januar 2014 - 09:51 #4
Super.
Jeg nu svært ved at forestille mig at den ikke vil gemme, men hvis du har løst problemet vil jeg ikke bruge mere tid på det.
Avatar billede perhol Seniormester
02. januar 2014 - 15:34 #5
Skulle måske have formuleret spørgsmålet "Er der nogen der kan få den til at gemme korrekt?" i stedet for "Er der nogen der kan forklare mig hvorfor?".

Fand selv det rigtige svar. Der skal bare tilføjes  , xlOpenXMLWorkbookMacroEnabled

Efter Text & ".xlsm"
Så virker det.
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