Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: daten aus Arbeitsmappe einlesen

daten aus Arbeitsmappe einlesen
19.08.2008 13:25:00
Peter
Hallo,
kurze Fragestellung an die Experten. Habe mir einen Code zusammengebastelt, der in einer geöffneten Arbeitsmappe, bestimmte Daten aus einer anderen noch "unbestimmten" Arbeitsmappe importieren soll. Funktioniert auch, jedoch kommt mir der Code zu unübersichtlich und auch "unsauber" vor. Wäre für Anregungen dankbar, speziell für eine verschlankung des Codes (da sehr viele Daten aus der anderen AM für vergleichszahlen importiert werden müssen) und insbesondere für einen Import der Daten ohne die gewählte datei öffnen zu müssen.
hier der Code:

Sub Test ()
On Error GoTo Ende
Dim wkb As Workbook 'Arbeitsmappe def.
Set wkb = ActiveWorkbook 'Arbeitsmappe auf das aktive Workbook setzen
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Dialogs(xlDialogOpen).Show 'Nun ist das aktive Workbook das neu geöffnete
Worksheets("Tabelle1").Range("B5:H15").Copy
wkb.Worksheets("Tabelle2").Range("B5").PasteSpecial _
Paste:=xlPasteValues
Worksheets("Tabelle2").Range("B5:H15").Copy
wkb.Worksheets("Tabelle3").Range("B5").PasteSpecial _
Paste:=xlPasteValues
Worksheets("Tabelle3").Range("B5:H15").Copy
wkb.Worksheets("Tabelle4").Range("B5").PasteSpecial _
Paste:=xlPasteValues
Application.CutCopyMode = False
For Each wkb In Workbooks
If wkb.Name  ThisWorkbook.Name Then
wkb.Close savechanges:=False
End If
Next wkb
Ende:
Application.ScreenUpdating = True
Application.EnableEvents = True
Worksheets("Checkliste").Select
ActiveWorkbook.Save
End Sub


Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: daten aus Arbeitsmappe einlesen
19.08.2008 14:39:43
Daniel
Hi
im Prinzip ist der Code ok.
lediglich die Schleife zum Schließen würde ich durch ein:

ActiveWorkbook.Saved = True
ActiveWorkbook.Close


ersetzen, das müsste eigentlich ausreichen.
die Schleife würde ja auch u.U. gänzlich unbeteiligte Excel-Dateien schließen, die zufälligerweise auch noch geöffnet sind.
den Zweizeiler mache ich, da beim mir "Workbook.Close Savechanges = False" nicht immer zuverlässig funktioniert und ich trotzdem gefragt werde, ob ich speichern will. die o.g. Mehtode funktioniert besser.
wenn du immer nur Werte überträgst, dann könnte man den Copy-Paste-Zweizeiler noch so verkürzen:


wbk.Sheets("Tabelle2").Range("B5:H15").Value = sheets("Tabelle1").Range("B5:H15").Value


ob sich ansonsten noch durch Schleifen irgendwelche Vereinfachungen erreichen lassen, hängt von den zu kopierenden Zellbereichen und den Verwendeten Sheet-Namen ab, dazu müsste man die Dateien im Original kennen, für das obige Beispiel könnte man sowas verwenden:


for i = 1 to 3
wbk.sheets("Tabelle" & i+1).Range("B5:h15").Value = Sheets("Tabelle" & i).Range("B5:H15").value
next


das öffnen der Dateien würde ich beibehalten, der Zugriff auf geschlossene Excel-Dateien ist wesentlich aufwendiger zu programmieren und wahrscheinlich auch deutlich langsamer (das gilt zumindest für das Akutalisieren von Fernbezügen auf geschlossene Dateien in Formeln), so daß du hier keinen Vorteil hast.
das einzige Problem ist, daß wenn der Anwender im File-Open-Dialog auf abbrechen drückt, dann wird der Code die Daten innerhalb der gleichen Datei rumkopiern.
das könnt man aber so abfangen, wirkung ist:
1. es wird die gewählte datei geöffnet
2. es wird ein Wahrheitswert erzeugt: True beim Öffnen, False beim Abbrechen, dieser wird in der IF-Funktion verwendet


Sub Test ()
'... hier der este Teil des Codes
If Application.Dialogs(xlDialogOpen).Show Then
'... hier der Code zum Übertragen der Daten
Else
MsgBox "es wurde abgebrochen"
End If
End Sub


Gruß, Daniel

Anzeige
AW: daten aus Arbeitsmappe einlesen
19.08.2008 15:07:41
Peter
Danke für die schnelle und hilfreiche Unterstützung.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige