Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Keuzeboodschap in macro  (gelezen 1915 keer)

0 leden en 1 gast bekijken dit topic.

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
Keuzeboodschap in macro
« Gepost op: 11 februari 2005, 22:03:46 »
Via VB maak ik macro's aan in excel. Bepaalde stukken voer ik eerst uit met macro-opname om deze macro daarna aan te passen (met behulp van de help) via VB in excel (bespaart wat typewerk en is beter voor een VB-leek zoals ik).

Indien ik op het einde van de macro echter een bestand wil saven zoals 'ActiveWorkbook.SaveAs FileName:="test.xls"' is er geen probleem totdat ik de macro opnieuw uitvoer en de file wil overschrijven. Ik weet al dat je door het gebruik van displayalerts = false dit kunt omzeilen, maar dit is mijn vraag niet.

Indien de file reeds bestaat, krijgt men de melding om deze te overschrijven (met 'ja' 'neen' of 'cancel').

Welke commando's moet ik gebruiken om bv. bij 'ja' deze te overschrijven - bij 'neen' de file te sluiten zonder saven en bij 'cancel' niets te doen en de file open te laten staan?
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Keuzeboodschap in macro
« Reactie #1 Gepost op: 12 februari 2005, 10:57:13 »
Justaguy,

Naast de "hoofdcode" heb je dan ook een functie nodig om te controleren of die file al bestaat of niet.

Dit kan o.a. zo:

Deze functie gebruik je om te zien of de file bestaat:
Function FileExists(FullFileName) As Boolean
' Checks if a certain file exists
FileExists = CBool(Dir(FullFileName) <> "")
End Function


Dit zou je "hoofdcode" ongeveer moeten zijn:
Sub SaveWithOptions()
Application.DisplayAlerts = False

target = "D:\!Docs\overwrite.xls"
If FileExists(target) Then
    yourchoice = MsgBox("This file already exists!" & vbCrLf & vbCrLf & _
                        "Click:" & vbCrLf & _
                        "YES: to overwrite the file and close." & vbCrLf & _
                        "NO: to close without saving" & vbCrLf & _
                        "CANCEL: to leave the file open", vbYesNoCancel)
    Select Case yourchoice
        Case vbYes: ActiveWorkbook.SaveAs target
        Case vbNo: ActiveWorkbook.Close savechanges = False
        Case vbCancel: Exit Sub
    End Select
Else
    ActiveWorkbook.SaveAs target
End If
ActiveWorkbook.Close

Application.DisplayAlerts = True
End Sub


Succes,
Bart

PS: In de file in bijlage moet je E:\!Docs\overwrite.xls naar je eigen filepath veranderen...
WinXP - Excel 2000/XP/2003

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
Re:Keuzeboodschap in macro
« Reactie #2 Gepost op: 12 februari 2005, 17:55:51 »
Bedankt, BartHold.
Alles werkt zoals het moet. Echt klasse  :D.
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

 


www.combell.com