Just nu i M3-nätverket
Gå till innehåll

Spara och stänga utan dialogruta med hjälp av VBA


MvS

Rekommendera Poster

Hej!

 

Har en bra fil med en ypperlig "spara"-funktion som makro kopplat till en knapp i filen. Men jag skulle vilja ta det ett steg längre med VBA och det är två funktioner jag är nyfiken på om det går att göra:

  1. Kan man med en relativt enkel VBA-kod göra så att arbetsboken öppnar UTAN Minimerings-, Maximerings- och Stängningsknapparna uppe i övre högra hörnet av fönstret? Vill i stället ha ett stängningsmakro kopplat till min "Spara" knapp!
  2. Sedan vill jag ta bort den dialogruta som frågar "Vill du spara ändringar som du gjorde i ..." när man stänger!

Finns där någon vänlig själ som kan bistå mig i detta?

 

//Magnus

Länk till kommentar
Dela på andra webbplatser

Få bort alla stänga-knappar är nog inte möjligt, tror det är bättre att ta vägen att hindra användaren från att stänga annan väg än via din knapp, se

http://www.mrexcel.com/forum/excel-questions/151952-visual-basic-applications-disable-workbook-close-button.html

 

I exemplet har du även den rad du behöver för att undertrycka dialoger:

Application.DisplayAlerts = False

Länk till kommentar
Dela på andra webbplatser

Hej Monshi och tack för snabbt svar!

Har prövat den men det verkar inte fungera... Ser spontant ut för mig som lekman att exemplet är kopplat till någon databas av något slag.

Jag har f.ö. prövat att lägga in Application.DisplayAlerts = False utan att det förändrar något! Jag kan leva med den röda stängningsknappen men vill ha bort möjligheten för användaren att spara utöver med hjälp av den funktion som du tidigare hjälp mig med!

 

Sub DialogTest()    'Spara med fråga sökväg

    With Application.FileDialog(msoFileDialogSaveAs)
        .FilterIndex = 2
        .InitialFileName = ThisWorkbook.Path & "\" & Blad17.Range("J4") & " " & "Företaget" & "-" & Blad17.Range("F3") & ".xlsm"
        If .Show = -1 Then
            Application.DisplayAlerts = False
            ThisWorkbook.SaveAs .SelectedItems(1)
            Application.DisplayAlerts = False
        End If
    End With
    Application.Quit
        
            
End Sub

 

Som du ser har jag lagt till Application.Quit vilket påbörjar stängning av arbetsboken men sedan dyker frågan om jag vill spara ändringar upp igen... Det är den dialogrutan jag vill ha bort!

Tacksam för svar!

 

//Magnus

Länk till kommentar
Dela på andra webbplatser

Stänga boken, gör ett enkelt test:

Private doClose As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If doClose = False Then
        Debug.Print "NoClose"
        Cancel = True
    End If
End Sub

Sub Myclose()
    doClose = True
    
End Sub

Konceptet fungerar.

Dvs klickar jag på kryss för att stänga bok utan att ha kört MyClose händer inget utom lite text i debug-fönstret.

 

och..

Sub DialogTest()    'Spara med fråga sökväg
    With Application.FileDialog(msoFileDialogSaveAs)
        .FilterIndex = 2
       ' .InitialFileName = ThisWorkbook.Path & "\" & Blad17.Range("J4") & " " & "Företaget" & "-" & Blad17.Range("F3") & ".xlsm"
        If .Show = -1 Then
            ThisWorkbook.SaveAs .SelectedItems(1)
            Application.DisplayAlerts = False
            
            doClose = True
            Application.Quit
        End If
    End With
   
        
            
End Sub

fungerar den med.

 

Dvs kör du via din knapp får du upp en dialog. Om filen sparas stängs boken utan knot.

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...