Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1256to1260
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Datei in Makro öffnen aber richtig

Excel Datei in Makro öffnen aber richtig
Kai
Hallo zusammen,
ich benutze folgendes Makro:
Sub ImportJanuar()
Dim strDatName As Variant
Dim wbA As Workbook, wbB As Workbook
Dim wsA As Worksheet, wsB As Worksheet
Dim iZeile As Long, letzteZeile As Long
Dim Suchnummer, varSuch2, boolTreffer As Boolean
Dim rngB As Range, rngFinden As Range, sErsteZelle As String
' Dateinnamen definieren
strDatName = Application.GetOpenFilename("ExcelFiles (*.XLS), *.xls")
If strDatName  False Then
Set wbB = Workbooks.Open(strDatName)
Set wbA = ThisWorkbook
Else
Exit Sub
End If
Worksheets("Jan.").Unprotect Password:=""
getMoreSpeed True
' Tabellennamen definieren
Set wsA = wbA.Worksheets(2)
Set wsB = wbB.Worksheets(2)
letzteZeile = wsB.Range("A65536").End(xlUp).Row
With wsB
'zu durchsuchender Bereich in Blatt B fur Suchnummer
Set rngB = .Range(.Cells(5, 1), .Cells(letzteZeile, 1))
End With
' Suche
For iZeile = 5 To wsA.Range("A65536").End(xlUp).Row
Suchnummer = wsA.Cells(iZeile, 1)
varSuch2 = wsA.Cells(iZeile, 6).Value
'Suchnummer in B suchen
Set rngFinden = rngB.Find(What:=Suchnummer, LookIn:=xlValues, lookat:=xlWhole)
boolTreffer = False
If Not rngFinden Is Nothing Then
'Zelladresse der 1. Fundstelle merken
sErsteZelle = rngFinden.Address
Do
'Wert in Spalte F mit 2. Suchwert vergleichen
If wsB.Cells(rngFinden.Row, 6).Value = varSuch2 Then
boolTreffer = True
Exit Do
End If
'Suche in Spalte A wiederholen
Set rngFinden = rngB.FindNext(After:=rngFinden)
Loop Until rngFinden.Address = sErsteZelle
End If
If boolTreffer = True Then
wsA.Cells(iZeile, 7) = wsB.Cells(rngFinden.Row, 7)
wsA.Cells(iZeile, 8) = wsB.Cells(rngFinden.Row, 8)
wsA.Cells(iZeile, 9) = wsB.Cells(rngFinden.Row, 9)
End If
Next iZeile
' Datei B schliessen
wbB.Close False
getMoreSpeed False
Worksheets("Jan.").Protect Password:=""
MsgBox ("Daten Januar importiert")
End Sub
Das ganze funktioniert einwandfrei, solange die zu öffnende Datei nicht schon geöffnet ist. Da auch andere diese Datei benutzen sollen, ist es nötig, das kein Fehler produziert wird falls die Datei schon geöffnet ist. Ich habe im Netz herausgefunden, das dafür überprüft werden muss ob die Datei schon geöffnet ist und sie dann nur aktiviert werden muss. (http://www.vbarchiv.net/tipps/tipp_701-datei-oeffnen-in-excel-aber-richtig.html)
' Beispiel: C:\MAPPE2.XLS (richtig!) öffnen
Dim bExists As Boolean
Dim oWorkbook As Object
' Prüfen ob Datei bereits geöffnet ist
bExists = False
With Application
For Each oWorkbook In .Workbooks
If UCase$(oWorkbook.Name) = "MAPPE2.XLS" Then
' Jetzt aktivieren
Windows(oWorkbook.Name).Activate
bExists = True
Exit For
End If
Next
End With
' Mappe neu laden!
If Not bExists Then
On Error Resume Next
Workbooks.Open Filename:="C:\MAPPE2.XLS", ReadOnly:=False
On Error GoTo 0
End If
Könnte mir jemand dabei behilflich sein, diese Überprüfung, ob die Datei geöffnet ist in mein vorhandenes Makro einzubauen?
Viele Grüße
Kai

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Excel Datei in Makro öffnen aber richtig
18.04.2012 10:16:20
Sheldon
Hallo Kai,
ich hab da mal was in den Code reingebastelt. Versuchs mal:
Sub ImportJanuar()
Dim strDatName As Variant
Dim wbA As Workbook, wbB As Workbook
Dim wsA As Worksheet, wsB As Worksheet
Dim iZeile As Long, letzteZeile As Long
Dim Suchnummer, varSuch2, boolTreffer As Boolean
Dim rngB As Range, rngFinden As Range, sErsteZelle As String
Dim bExists As Boolean
Dim oWorkbook As Object
' Dateinnamen definieren
strDatName = Application.GetOpenFilename("ExcelFiles (*.XLS), *.xls")
If strDatName  False Then
With Application
For Each oWorkbook In .Workbooks
If oWorkbook.Path & "\" & oWorkbook.Name = strDatName Then
bExists = True
Set wbB = oWorkbook
Exit For
End If
Next
End With
If Not bExists Then
Set wbB = Workbooks.Open(strDatName)
End If
Set wbA = ThisWorkbook
Else
Exit Sub
End If
Worksheets("Jan.").Unprotect Password:=""
'getMoreSpeed True
' Tabellennamen definieren
Set wsA = wbA.Worksheets(2)
Set wsB = wbB.Worksheets(2)
letzteZeile = wsB.Range("A65536").End(xlUp).Row
With wsB
'zu durchsuchender Bereich in Blatt B fur Suchnummer
Set rngB = .Range(.Cells(5, 1), .Cells(letzteZeile, 1))
End With
' Suche
For iZeile = 5 To wsA.Range("A65536").End(xlUp).Row
Suchnummer = wsA.Cells(iZeile, 1)
varSuch2 = wsA.Cells(iZeile, 6).Value
'Suchnummer in B suchen
Set rngFinden = rngB.Find(What:=Suchnummer, LookIn:=xlValues, lookat:=xlWhole)
boolTreffer = False
If Not rngFinden Is Nothing Then
'Zelladresse der 1. Fundstelle merken
sErsteZelle = rngFinden.Address
Do
'Wert in Spalte F mit 2. Suchwert vergleichen
If wsB.Cells(rngFinden.Row, 6).Value = varSuch2 Then
boolTreffer = True
Exit Do
End If
'Suche in Spalte A wiederholen
Set rngFinden = rngB.FindNext(After:=rngFinden)
Loop Until rngFinden.Address = sErsteZelle
End If
If boolTreffer = True Then
wsA.Cells(iZeile, 7) = wsB.Cells(rngFinden.Row, 7)
wsA.Cells(iZeile, 8) = wsB.Cells(rngFinden.Row, 8)
wsA.Cells(iZeile, 9) = wsB.Cells(rngFinden.Row, 9)
End If
Next iZeile
' Datei B schliessen
wbB.Close False
'getMoreSpeed False
Worksheets("Jan.").Protect Password:=""
MsgBox ("Daten Januar importiert")
End Sub
Gruß
Sheldon
Anzeige
AW: Excel Datei in Makro öffnen aber richtig
18.04.2012 10:43:09
Kai
Hallo Sheldon,
danke für deine Hilfe, aber das war leider noch nicht die Lösung, der Fehler tritt immernoch auf und im schlimmsten Fall landet der Nutzer in der VBA Oberfläche.
Gruß Kai
AW: Excel Datei in Makro öffnen aber richtig
18.04.2012 10:48:45
Kai
Stop Kommando zurück, der Fehler tritt nicht mehr auf (mein Fehler), allerdings hängt sich nun Excel auf.
AW: Excel Datei in Makro öffnen aber richtig
18.04.2012 10:52:34
Kai
Danke Sheldon jetzt klappt alles, habe nícht gesehn, das mein getMoreSpeed True
und getMoreSpeed False auskommentiert war.
Danke für deine Hilfe, das war die Lösung!!!!
Gruß Kai
AW: Excel Datei in Makro öffnen aber richtig
18.04.2012 11:37:39
Sheldon
Ah, super,
das hatte ich auch vergessen zu erwähnen. Zum Testen auf meinem Rechner musste ich das natürlich auskommentieren, weil ich die Routine ja nicht habe.
Schönen Tag noch! Und: Danke für die Rückmeldung!
Gruß
Sheldon
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige