Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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

ANsprechen offener Mappe

ANsprechen offener Mappe
11.12.2019 10:16:31
Maximilian
Liebe Community,
Ich habe ein vermutlich recht banales Problem, konnte mir bisher jedoch keine passende Hilfe holen.
Ich möchte Daten von einer Excel-Datei in eine andere übertragen.
Dazu öffne ich zunächst die Datei, aus der ich die Daten holen möchte, indem ich sie mit ihrem Namen (benannt nach Datum) suche. Das funktioniert auch.
Allerdings gelingt es mir nicht, beim Kopieren und Einfügen der Werte zwischen den Dateinen hin und her zu springen; der Code sucht derzeit immer nur in der Datei, über die er gestartet wird. Diese Datei heißt "Trend der Kennzahlenentwicklung" und enthält einen CommandButton, über den der Code gestartet wird.
Anbei mein derzeitiger Code
Private Sub CommandButton1_Click()
'Neue Spalte für aktuelle Werte ganz links in Tabelle einfügen
Columns("G:G").Insert Shift:=xlToRight
Range("C2").Select
Selection.Copy
Range("G2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Quelldatei (aktuelles JF-Protokoll) suchen und öffnen
Dim StrPfad As String
Dim StrDateiname As String
StrPfad = "F:\DATA\Kennzahlensystem\Jour Fixe Protokolle\"
StrDateiname = StrPfad & "\" & Range("C2").Value & ".xlsx"
Workbooks.Open (StrDateiname)
Workbooks(StrDateiname).Activate
Range("C12").Copy
Windows("Trend der Kennzahlenentwicklung.xlsm").Activate
Range("G4").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub

Die Stelle, die den Fehler verursacht, ist Workbooks.Open (StrDateiname)
Für die Lösung des Problems wäre ich sehr dankbar!
Viele Grüße

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ANsprechen offener Mappe
11.12.2019 10:45:13
Daniel
HI
1. wenn man einen Befehl allein in der Programmzeile verwendet, werden die Parameter nicht in Klammern gesetzt. Erst wenn der Befehl in Kombination mit anderen Befehlen oder Anweisungen vorkommt (z.B beim Zusweisen an eine Variable) dann müssen die Parameter in Klammern gesetzt werden:
Workbooks.Open StrDateiname

bzw
dim wb as Workbook
set wb = Workbooks.Open(StrDateiname)
2. wenn sich der Code in einem Tabellenblattmodul befindet, dann referenzieren Zellbezüge wie Range und Cells ohne Tabellenblattangabe davor IMMER auf das Tabellenblatt des Moduls und nicht auf das gerade aktive Tabellenblatt.
dh wenn man hier ein anderes Workbook oder Tabellenblatt ansprechen will, muss man entweder vollständig referenzieren (dh mit Angabe von Workbkook, Worksheet und Zellbezug) oder man muss explizit angeben, dass man das aktive Tabellenblatt meint:
also entweder:
Workbooks(StrDateiname).Sheets("Bitte Sheetnamen ergänzen").Range("C12").Copy

oder
Workbooks.Open (StrDateiname)
Workbooks(StrDateiname).Activate
ActiveSheet.Range("C12").Copy
wobei direkt nach dem Worbook.Open die geöffnete Datei die automatisch die aktive sein sollte.
wenn die Mappe aber mehrere Tabellenblätter enthalten kann, solltest du besser die erste Methode verwenden, dann bist du sicher dass du das richtige Blatt verwendest.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige