Hallo,
ich habe ein Problem wo ich nicht weiterkomme. Ich habe ein Makro welches eine andere Excel Datei (Quelldatei) öffnet und sich dort 2 Werte rausholt und die zu Datei schreibt in der das Makro ausgeführt wird. Wenn ich die Quelldatei geschlossen habe läuft das Makro sauber durch. Ist die Quelldatei erst geöffnet und das Makro startet dann bricht das Makro mit Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs ab. Ich weiß leider nicht warum.
Kann mir jemand behilflich sein? Ich nutze Office 2016.
Option Explicit
Private Sub Workbook_Open()
Dim oTargetBook As Object
Dim oSourceBook As Object
Dim sDatei As String
Dim Jahr As String
Dim Projektnummer As String
Dim Adresse() As String
Dim Angebotsnummer As String
Dim Angebotssumme As Currency
Dim Einsatzzeit As String
Dim Angebotssumme_Alt As String
Dim Einsatzzeit_Alt As String
Dim Pfad As String
Dim Angebot As String
Dim intLeerPos As Integer
Projektnummer = Range("Projektnummer").Value
Jahr = Right(Projektnummer, 2)
Angebotssumme_Alt = Range("Angebotssumme").Value
Einsatzzeit_Alt = Range("Einsatzzeit").Value
Einsatzzeit_Alt = WorksheetFunction.RoundUp(Einsatzzeit_Alt, 0)
If Dir("F:\AAA Projekte\20" & Jahr & "\" & Projektnummer & "\" & Range("Angebotsnummer").Value & "*.xlsx") <> "" Then
Application.ScreenUpdating = False 'Das "Flackern" ausstellen
Set oTargetBook = ActiveWorkbook
sDatei = "F:\AAA Projekte\20" & Jahr & "\" & Projektnummer & "\" & Range("Angebotsnummer").Value & "*.xlsx"
Set oSourceBook = Workbooks.Open(sDatei, False, True) 'nur lesend öffnen
Angebotssumme = oSourceBook.Sheets("Kalkulation").Range("Angebotssumme_netto").Value
If Angebotssumme <> Angebotssumme_Alt Then
oTargetBook.Sheets("Tabelle1").Range("Angebotssumme").Value = Angebotssumme
oTargetBook.Save
End If
If NameVorhanden("Kalkulation!Angebotsstunden", oSourceBook) = True Then
Einsatzzeit = oSourceBook.Sheets("Kalkulation").Range("Angebotsstunden")
Einsatzzeit = Application.WorksheetFunction.Round(Einsatzzeit, 0)
If Einsatzzeit <> Einsatzzeit_Alt Then
oTargetBook.Sheets("Tabelle1").Range("Einsatzzeit").Value = Einsatzzeit
oTargetBook.Save
End If
End If
If NameVorhanden("Kalkulation!Akkordstunden", oSourceBook) = True Then
Einsatzzeit = oSourceBook.Sheets("Kalkulation").Range("Akkordstunden")
Einsatzzeit = WorksheetFunction.RoundUp(Einsatzzeit, 0)
If Einsatzzeit <> Einsatzzeit_Alt Then
oTargetBook.Sheets("Tabelle1").Range("Einsatzzeit").Value = Einsatzzeit
oTargetBook.Save
End If
End If
oSourceBook.Close False
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
Set oTargetBook = Nothing
Set oSourceBook = Nothing
End If
End Sub
Function NameVorhanden(ByVal s As String, wkb As Workbook) As Boolean
Dim n As Name
For Each n In wkb.Names
If n.Name = s Then
NameVorhanden = True
Exit For
End If
Next
'NameVorhanden = False
End Function
|