Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1000to1004
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

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


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.

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige