Avatar billede kold6000 Nybegynder
04. juni 2007 - 23:22 Der er 12 kommentarer

Gemme en fil i et bestemt bibliotek via makro

KAn man mon få excel til at åbne en bestemt mappe og foreslå et bestemt navn til filen hvis f.eks. celle a100 er TOM?

Når jeg siger GEM eller GEM SOM skal makroen gøre klar til at filen skal gemmes i følgende mappe:

C:\dokumenter\

og foreslå filnavnet

"fil2006"

Men den skal kun gøre det hvis celle a100 er tom.
Hvis celle a100 IKKE er tom skal excel bare opføre sig som den plejer og gemme som den plejer.

Jeg regner med at jeg skal have lagt en makro ind under Before save, men jeg kan ikke lige hitte koden.

Er der nogen der kan knække den?
Avatar billede jkrons Professor
04. juni 2007 - 23:42 #1
Måsjke noget i denenc stil.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If IsEmpty(Range("a100")) Then
        ThisWorkbook.SaveAs "C:\Dokumenter\fil2006.xls"
        Application.Dialogs(xlDialogSaveAs).Show
    Else
        Exit Sub
    End If
End Sub

Jeg har lidt problemer med min pc i øjebvlikket, så det er ikke testet.
Avatar billede kold6000 Nybegynder
05. juni 2007 - 09:28 #2
Den starter med at gemme filen c:\dokumenter\2006.xls og derefter åbner den dialogboksen gem som.

Det skal den helst ikke. Den skal helst bare foreslå filnavnet fil2006.xls og pege på stien c:\dokumenter\  (herefter vælger jeg selv en undermappe i denne mappe)

Jeg har ændret på rækkefølgen af linierne, men det virker heller ikke helt som det skal.


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If IsEmpty(Range("a100")) Then
        Application.Dialogs(xlDialogSaveAs).Show
        ThisWorkbook.SaveAs "C:\Dokumenter\fil2006.xls"
    Else
        Exit Sub
    End If
End Sub
Avatar billede kabbak Professor
05. juni 2007 - 13:01 #3
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If IsEmpty(Range("a100")) Then
        Application.Dialogs(xlDialogSaveAs).Show
        ThisWorkbook.SaveAs "C:\Dokumenter\fil2006.xls"
  '******************
      Cancel = true
  '******************
    End If
End Sub
Avatar billede jkrons Professor
05. juni 2007 - 14:03 #4
kabbak-> Når jeg afprøver din kode sker derv ingenting. SaveAs dialogvoksen vises ikke, og mappem bliver ikek gemt.

Fjerner jeg Cancel = True vises SaveAs to gange. Første gang i standrd anden gang som ønsket.
Avatar billede bak Forsker
05. juni 2007 - 14:23 #5
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If IsEmpty(Range("a100")) Then
        Application.Dialogs(xlDialogSaveAs).Show "C:\Dokumenter\fil2006.xls"
    Else
        Exit Sub
    End If
End Sub
Avatar billede jkrons Professor
05. juni 2007 - 14:43 #6
bak-> Din løsning viser også GemSom to gange. I hvert fald første gang der gemmes.
Avatar billede kabbak Professor
05. juni 2007 - 14:52 #7
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If IsEmpty(Range("a100")) Then
        Application.EnableEvents = False
        Application.Dialogs(xlDialogSaveAs).Show
        ThisWorkbook.SaveAs "C:\Dokumenter\fil2006.xls"
        Application.EnableEvents = True
        Cancel = True
    End If
End Sub
Avatar billede jkrons Professor
05. juni 2007 - 15:03 #8
kabbak-> Det er ikek så nemt endda.

Linien

        ThisWorkbook.SaveAs "C:\Dokumenter\fil2006.xls"

gemmer filen, også hvis der trykkes Annuller i dialogboksen eller vælger et andet sted til at gemme.
Avatar billede bak Forsker
05. juni 2007 - 16:39 #9
Denne har jeg ingen problemer med

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    Cancel = True
    SaveAsUI = False
    If IsEmpty(Range("a100")) Then
        Application.Dialogs(xlDialogSaveAs).Show "C:\fil2010.xls"
    End If
    Application.EnableEvents = True
End Sub
Avatar billede bak Forsker
05. juni 2007 - 16:44 #10
og dog... det viser at den ikke fastholder stien, men kun filnavnet, så man skal nok lige have CHDIR "C:\Dokumenter" indsat før.
Avatar billede kold6000 Nybegynder
05. juni 2007 - 22:25 #11
Jeg kan se at der har været en heftig debat på området, siden jeg sidst har været herinde på siden.
Jeg kan forstå at det ikke er så lige til at lave. Bak´s kommentar omkring chdir.... forstår jeg desværre ikke.

Er der nogen der kan hjælpe med chdir... og drible bolden i mål?
Avatar billede bak Forsker
05. juni 2007 - 22:37 #12
Det er kun et problem hvis den har været gemt før og ikke i alle excelversioner.

Test og check. Ellers brug nedenstående version

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    Cancel = True
    SaveAsUI = False
    If IsEmpty(Range("a100")) Then
        chdir "C:\Dokumenter"
        Application.Dialogs(xlDialogSaveAs).Show "C:\Dokumenter\fil2010.xls"
    End If
    Application.EnableEvents = True
End Sub
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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