VBA - Problem beim Öffnen einer Datei
10.11.2005 11:54:30
Sebastian
ich habe ein kleines Makro gebastelt und zwei Probleme:
1.) Das Makro meldet einen Fehler, wenn ich die Datei Makro-Liste.xls nicht per Hand öffne, obwohl die Datei laut Code aktiviert werden sollte. Wie kann ich die Datei automatisch öffnen?
2.) Das Makro funktuniert einwandfrei, wenn ich es im Makro-Editor abspiele. Öffne ich es aber über das verknüpfte Objekt in der Datei Makro-Eingabeformular.xls, so findet es den Wert nicht, den es suchen soll und schreibt auch nicht in die entsprechende Zeile.
Es wäre schön, wenn mir jemand helfen könnte: diese Probleme übersteigen meine bescheidenen VBA-Kenntnisse.
Vielen Dank schon mal,
Sebastian
Hier der Code:
Option Explicit
Sub Vergleichen()
Dim WkShL As Worksheet
Dim WkShE As Worksheet
Dim iWks As Integer
Dim lLetzte As Long
Dim lZeile As Long
Dim bGefu As Boolean
Dim sAbfra As String
Dim iSpalte As Integer
Const strPath1 As String = _
"C:\Documents and Settings\Rde14287x\Desktop"
Const strFile1 As String = "Makro-Liste.xls"
Const strPath2 As String = _
"C:\Documents and Settings\Rde14287x\Desktop"
Const strFile2 As String = "Makro-Eingabeformular.xls"
On Error Resume Next
bGefu = False
Workbooks.Open Filename:=strPath1 & strFile1
Sheets("Tabelle1").Activate
lLetzte = IIf(Range("a65536") <> "", 65536, Range("a65536").End(xlUp).Row)
On Error GoTo 0
Set WkShL = Workbooks("Makro-Liste.xls").Worksheets("Tabelle1")
Set WkShE = Workbooks("Makro-Eingabeformular.xls").Worksheets("Tabelle1")
For lZeile = 2 To lLetzte
If WkShE.Range("D3").Value = WkShL.Range("A" & lZeile).Value Then
bGefu = True
Exit For
End If
Next lZeile
If bGefu = True Then
MsgBox "Die Kundennummer wurde " _
& Chr(10) & "in Zeile " & lZeile & " gefunden.", _
64, " Der Kunde ist bereits angelegt."
sAbfra = MsgBox("Wollen Sie die Daten des Kunden aktualisieren?", _
vbQuestion + vbOKCancel, " Bitte entscheiden Sie sich.")
If sAbfra = "1" Then
WkShL.Cells(lZeile, 2).Value = WkShE.Cells(1, 3).Value
End If
Else
lZeile = lLetzte + 1
MsgBox "Der Kunde wird neu angelegt.", _
64, " Die Kundennummer ist noch nicht hinterlegt."
WkShL.Cells(lZeile, 2).Value = WkShE.Cells(1, 3).Value
End If
Workbooks("Makro-Liste.xls").Save
Workbooks("Makro-Liste.xls").Close
End Sub