Hallo Brigitte,
ohne dein Problem wirklich zu lösen (habe ich mir nicht weiter angesehen, da umfangreich), schlage ich vor, mit SendKeys einfach die vom Nutzer erwartete Anwort einzusteuern.
Gruß
Holger
Brigitte schrieb am 27.11.2009 09:09:59:
Hallo zusammen,
ich habe ein kleines Problem:
Um ein konsistentes Versions-Management zu gewährleisten, soll das Workbook bei größeren Veränderungen automatisiert (also mit einem vorgegebenen Namen) abgespeichert werden.
Hierzu mein (gesamter) Code:
Option Explicit
Public ExportDate As Date
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
Dim Canc As Boolean
Datenstand = Range("Datum")
Application.DisplayAlerts = False
If Datenstand <> ExportDate Or FileUser <> Application.UserName Then
Canc = Application.Dialogs(xlDialogSaveAs).show(DateiName)
If Canc = False Then End
Else: Application.Save
End If
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_Open()
ExportDate = Range("Datum")
End Sub
____________________________________________________________________________________
Option Explicit
Dim SheetName As String, stateStr As String
Dim ExportDatum As Date, DatenDatum As Date
Dim projekt As String
Public Property Let stateText(str As String)
stateStr = str
End Property
Public Property Get stateText() As String
stateText = stateStr
End Property
Public Property Let Datenstand(i As String)
ExportDatum = i
End Property
Public Property Get Datenstand() As String
Datenstand = ExportDatum
End Property
Public Property Get DNRS() As String
DNRS = Left(ThisWorkbook.name, InStr(ThisWorkbook.name, ".") - 1)
DNRS = Right(DNRS, Len(DNRS) - (InStr(DNRS, "_")))
DNRS = Left(DNRS, InStrRev(DNRS, "_") - 1)
End Property
Public Property Get ExportTag() As String
ExportTag = Left(Datenstand, InStr(Datenstand, ".") - 1)
End Property
Public Property Get ExportMonat() As String
ExportMonat = Left(Right(Datenstand, InStrRev(Datenstand, ".") + 1), InStr(Right(Datenstand, _
_
InStrRev(Datenstand, ".") + 1), ".") - 1)
End Property
Public Property Get ExportJahr() As String
ExportJahr = Right(Datenstand, InStr(Datenstand, ".") + 1)
End Property
Public Property Get ProjektStr() As String
If Worksheets(newSheet).Range("projekt") Like "*AU*" Then
ProjektStr = "Projekt1"
Else: ProjektStr = "Projekt2"
End If
End Property
Public Property Get FileUser() As String
FileUser = Right(Left(ThisWorkbook.name, InStr(ThisWorkbook.name, ".") - 1), Len(Left( _
ThisWorkbook.name, InStr(ThisWorkbook.name, ".") - 1)) - InStrRev(Left(ThisWorkbook.name, InStr( _
_
ThisWorkbook.name, ".") - 1), "_"))
End Property
Public Property Get FileProjektStr() As String
FileProjektStr = Right(Left(DNRS, InStrRev(DNRS, "_") - 1), Len(Left(DNRS, InStrRev(DNRS, "_" _
_
) - 1)) - InStr(DNRS, "_"))
End Property
Public Property Get FileStarter()
FileStarter = Left(DNRS, InStr(DNRS, "_") - 1)
End Property
Public Property Get FileVersion() As String
FileVersion = Right(Right(DNRS, Len(DNRS) - InStr(DNRS, "_")), Len(Right(DNRS, Len(DNRS) - _
_
InStr(DNRS, "_"))) - InStr(Right(DNRS, Len(DNRS) - InStr(DNRS, "_")), "_"))
End Property
Public Property Get DateiName() As String
DateiName = ExportJahr & ExportMonat & ExportTag & "_" & _
FileStarter & "_" & ProjektStr & "_" & FileVersion & "_" & Application.UserName & ".xls"
End Property
Leider erstellt Excel immer wieder eine resume.xlw-Datei (dachte eigentlich, das wäre mit Application.DisplayAlerts=False ausgeschaltet), wäre ja grundsätzlich egal, aber da der Nutzer gefragt wird, ob er die vorhandene ersetzen will, ziemlich lästig...
Kann mir jemand helfen?
Danke schonmal,
Brigitte |