Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1368to1372
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
Daten in externe Datei einlesen
03.07.2014 08:31:23
Mia
Hallo,
ich habe selbst eine Datei (Vorlage für Diagramm) vom Excelforum für meine Bedürfnisse verwendet und wollte diese nun damit erweitern, dass ich Daten aus einer anderen (geschlossenen) Datei einlese undzwar in dem Reiter "Tabelle1" und mir diese dann als Diagramm anzeige.
Mein Problem ist es nun, dass sobald ich die Daten einlese, mir es die Formatierung zerhaut. Das äußert sich dann damit, dass die Überschrift "Datum" (E2) im Diagramm (Reiter Diagramm1) nur Werte enthält und die restlichen Zeilen - also das eigentliche Datum(ab E3) nicht anzeigt bzw. leer ist.
HIER DIE BEISPIEL DATEI: https://www.herber.de/bbs/user/91368.xlsm
Für den externen Bezug verwende ich folgenden Code:
(dieser Code ist nicht in der Beispielsdatei hinterlegt!)
Private Sub CommandButton3_Click()
Workbooks.Open Filename:="X:\X\Datei.xlsm"
Workbooks("Wertedatei.xlsm").Sheets("ReiterXY").Range("B122:F128").Cells.Copy
Workbooks("Datei.xlsm").Sheets("Tabelle1").Range("E2").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Workbooks("Wertedatei.xlsm").Close
End Sub
Manuelles eintragen klappt aber :-(
Woran liegt es?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in externe Datei einlesen
03.07.2014 09:53:38
UweD
Hallo
du schreibst : Manuelles eintragen klappt...
Dazu musst du aber doch die Datei "Wertedatei.xlsm" geöffnet haben..
Das kannst du dach per Makro auch machen..
Option Explicit
Private Sub CommandButton3_Click()
Dim TB1, TB2, WB1, WB2, Pfad1$, Pfad2$
Application.ScreenUpdating = False
Pfad1 = "X:\X\"
Pfad2 = "X:\X\"
Workbooks.Open FileName:=Pfad2 & "Wertedatei.xlsm" 'Ursprung
Set WB2 = ActiveWorkbook
Workbooks.Open FileName:=Pfad1 & "Datei.xlsm" 'Zieldatei
Set WB1 = ActiveWorkbook
Set TB1 = WB1.Sheets("Tabelle1")
Set TB2 = WB2.Sheets("ReiterXY")
TB2.Range("B122:F128").Copy
TB1.Range("E2").PasteSpecial xlPasteValues
Application.CutCopyMode = False
WB1.Close Savechanges:=True
WB2.Close Savechanges:=False
End Sub
Gruß UweD

Anzeige
AW: Daten in externe Datei einlesen
03.07.2014 11:16:55
Mia
Hallo Uwe,
nicht der externe Bezug funktioniert nicht, sondern die Formatierung des Datenbereichs der festlegt welche Daten im Diagramm für was stehen, zerhaut es mir :-)
LG!

AW: Daten in externe Datei einlesen
06.07.2014 11:33:52
Mia
hat jemand noch eine idee? :-(

vielleicht
07.07.2014 17:41:24
Michael
Hallo Mia,
mangels Wertedatei können wir nicht exakt nachvollziehen, was da passiert.
Aber: bist Du sicher, daß Du nach Range("E2") kopieren willst und nicht nach E*3*?
Schöne Grüße,
Michael

AW: vielleicht
07.07.2014 22:14:03
Mia
Hallo Michael,
Zur Frage zu Range ("E2"):
In meiner Datei, die mit Zahlen vollgestopft ist, habe ich zunächst eine "Überschrift" z.B "Gesamtanzahl von XY" - welches dann in der Datei zur Erstellung eines Diagrammes die Range E2 "Datum" ersetzt. Jetzt denke ich gerade, dass es mir vielleicht deswegen alles zerhaut?
Die Datei, aus der ich die Daten ziehe, hat sehr viele Zahlen :-) Je nachdem für welche Frage/welches Thema ich ein Diagramm will, möchte ich mit diesem Code mir die Daten ziehen. Das einzigste was sich verändern kann, ist, dass neue Spalten - im Beispiel der Datei "ReiheXY" hinzukommen.
Die Datei hat ja schon eine Formatierung, vorallem welcher Datenbereich für was im fertigen Diagramm steht. Wenn ich die Daten reinlade (was kein Problem ist) dann zerhaut es mir jedes mal die vordefinierten Datenbereiche und es kommt kein brauchbares Diagramm heraus.
Ich habe schon versucht Zellen zu sperren oder das gesamte Blatt zu schützen aber leider ändert das garnichts an meinem Problem :-(

Anzeige
AW: vielleicht
08.07.2014 17:18:09
Michael
Hallo Mia,
aha, E2 gehört zur Überschrift. Ich hab jetzt mal eine Testdatei erzeugt, so daß sie zu Deinem ganz oben eingefügten Codeschnipsel paßt, insbesondere zum Einfügen des Bereichs B122 bis F128. Das Importieren selbst funktioniert prinzipiell problemlos.
Was mir auffällt, ist die Herumrechnerei mit der Namensvergabe des Bereichs "Daten_Diagramm".
Es ist doch so, daß die Daten, die Du nach E2 kopierst, "kleiner" sind als die, die in Deiner Beispieldatei vorhanden sind. Man sollte meinen, daß Du vor dem Kopieren erst den kompletten Bereich löschen solltest, damit die Berechnung von lngRowLast funktioniert.
Beim weiteren Herumprobieren ist mir aufgefallen, daß Paste die Formatierung des Datums zerschießt (ich kann nicht nachvollziehen, warum, denn wenn man nur Werte kopiert, sollte die Formatierung erhalten bleiben), und dann sieht das Diagramm auch sch... aus.
Ich habe also eine Zeile eingefügt, in der AUCH die Formate übertragen werden, und siehe da, es tut:
Private Sub CommandButton3_Click()
Sheets("Tabelle1").Range("Daten_Diagramm").Clear
Workbooks.Open Filename:="Wertedatei.xlsm"
Workbooks("Wertedatei.xlsm").Sheets("ReiterXY").Range("B122:F128").Cells.Copy
Workbooks("91368-Diagramm.xlsm").Sheets("Tabelle1").Range("E2").PasteSpecial xlPasteValues
Workbooks("91368-Diagramm.xlsm").Sheets("Tabelle1").Range("E2").PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Workbooks("Wertedatei.xlsm").Close
End Sub

Wenn es tut, kann man ja zufrieden sein, trotzdem zwei Anmerkungen: direkt nach dem Kopieren ist der eingefügte Bereich selektiert: ich denke, man kann sich die ganze Rechnerei sparen, wenn man diesem Bereich einfach den Namen Daten_Diagramm zuweist.
In Deiner s*u*b Worksheet_BeforeDoubleClick kannst Du die ganze IF-Verschachtelung so ersetzen:
.Value = not .Value
Happy Exceling,
Michael
P.S.: Ich mag jetzt nicht drüber nachdenken, aber es könnte sein, daß die Berechnung des Datenbereichs nicht hinhaut, wenn Du einen größeren als den vorhandenen einfügst. Du suchst die letzte Zeile INNERHALB des vorhandenen Datenbereichs, oder? Abhilfe s.oben.
Es wäre vielleicht hilfreich, einen "großen" Bereich zusätzlich zum Löschen festzulegen, etwa von E2 bis AA 50 oder so, namens "Zu_Loeschen", und den vorab zu clearen.
Abgesehen davon: es wäre ein nettes Gimmick, die Auswahlliste bei importierten Bereichen mit weniger Spalten auf FALSE zu setzen.
Anzeige

228 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige