Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2 Zeilen werden gesucht

2 Zeilen werden gesucht
Jean
Hallo,
2 Zeilen fehlen, damit ich weiter komme:
Option Explicit
Sub Zugriff_auf_eine_andere_Mappe()
Dim Pfad, Dateiname, Tabellenname, Zelladresse As String
Pfad = InputBox("Bitte den Pfad eingeben (zB c:\Temp1): ")
Dateiname = InputBox("Bitte den Dateiname eingeben (zB Kunden): ")
Tabellenname = InputBox("Bitte den Tabellenname eingeben (zB 2008): ")
Zelladresse = InputBox("Bitte die Zelladresse eingeben (zB B10): ")
' Nun soll die Datei geöffnet werden und der Wert aus B10 der betreffenden Tabelle
' in die Zelle C5 der aufrufenden Datei, die das Makro enthält, übertragen werden
End Sub
Wie lauten die fehlenden Zeilen?
Gruß
Jean

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: 2 Zeilen werden gesucht
07.11.2009 18:56:41
Josef
Hallo Jean,
hie eine Variante ohne die Datei zu Öffnen.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Zugriff_auf_eine_andere_Mappe()
  'Variablendeklaration muss für jede Variable separat erfolgen!
  Dim Pfad As String, Dateiname As String, Tabellenname As String, Zelladresse As String
  
  Pfad = InputBox("Bitte den Pfad eingeben (zB c:\Temp1): ")
  Dateiname = InputBox("Bitte den Dateiname eingeben (zB Kunden.xls): ")
  Tabellenname = InputBox("Bitte den Tabellenname eingeben (zB 2008): ")
  Zelladresse = InputBox("Bitte die Zelladresse eingeben (zB B10): ")
  
  ' Nun soll die Datei geöffnet werden und der Wert aus B10 der betreffenden Tabelle
  ' in die Zelle C5 der aufrufenden Datei, die das Makro enthält, übertragen werden
  
  'Tabellenname anpassen!
  ThisWorkbook.Sheets("Tabelle3").Range("C5") = GetValue(Pfad, Dateiname, Tabellenname, Zelladresse)
  
  
End Sub

Private Function GetValue(path As String, file As String, _
    sheet As String, ref As String)

  ' Retrieves a value from a closed workbook
  Dim arg As String
  ' Make sure the file exists
  If Right(path, 1) <> "\" Then path = path & "\"
  
  If Dir(path & file) = "" Then
    GetValue = "File Not Found"
    Exit Function
  End If
  
  ' Create the argument
  arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
    Range(ref).Range("A1").Address(, , xlR1C1)
  
  ' Execute an XLM macro
  GetValue = ExecuteExcel4Macro(arg)
End Function

Gruß Sepp

Anzeige
AW: Weitere Fragen
07.11.2009 20:42:53
Jean
Hallo Sepp,
vielen Dank für Deine Lösung ohne die Mappe öffnen zu müssen.
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
Der 2. Teil obiger Zeile ab Range(ref) ist mir nicht klar. Was wird damit erreicht?
GetValue = ExecuteExcel4Macro(arg)
wird mit dieser Excel4 Makrofunktion ein Öffnen überflüssig oder welchen Sinn hat sonst diese
Übertragung?
Dank im voraus.
Gruß
Jean
AW: Weitere Fragen
07.11.2009 21:38:02
Josef
Hallo Jean,

Range(ref).Range("A1").Address(, , xlR1C1)

gibt die Adresse des Zellbezuges in R1C1-Schreibweise zurück.
Zur zweiten Frage: Das xl4Macro holt den Wert aus der geschlossenen Mappe.
Gruß Sepp

Anzeige
AW: Danke
08.11.2009 11:40:23
Jean
Hallo Sepp,
vielen Dank für Deine Erklärungen.
Gruß
Jean
AW: Einfacher über Formel mit ext. Zellbezug
07.11.2009 21:16:58
Daniel
Hi
Sepp bringt mich da auf folgende Idee, manchmal denkt man ja viel zu kompliziert.
das was du da machen willst, geht ja auch einfach mit Formeln, die einen externen Zellbezug haben:
Sub Zugriff_auf_eine_andere_Mappe()
'Variablendeklaration muss für jede Variable separat erfolgen!
Dim Pfad As String, Dateiname As String, Tabellenname As String, Zelladresse As String
Pfad = InputBox("Bitte den Pfad eingeben (zB c:\Temp1): ")
Dateiname = InputBox("Bitte den Dateiname eingeben (zB Kunden.xls): ")
Tabellenname = InputBox("Bitte den Tabellenname eingeben (zB 2008): ")
Zelladresse = InputBox("Bitte die Zelladresse eingeben (zB B10): ")
With  ThisWorkbook.Sheets("Tabelle3").Range("C5")
.Formula = "='" & Pfad & "\[" & Dateiname & "]" & Tabellenname & "'!" & Zelladdresse
.Formula = .Value
End With
End Sub
gruß, Daniel
Anzeige
AW: Danke
08.11.2009 11:42:52
Jean
Hallo Daniel,
vielen Dank für Deine Formellösung. Die Aufgabe ist gelöst.
Gruß
Jean
AW: 2 Zeilen werden gesucht
07.11.2009 19:00:20
Daniel
Hi

Workbooks.Open Pfad & "\" & Dateiname
Thisworkbook.Sheets(?).Range("C5").Value = Activeworkbook.Sheets(Tabellenname).Range( _
Zelladdresse).Value
ActiveWorkbook.Close

das wären die fehlenden Zeilen, allerdings ohne irgendewelche Sicherheitsprüfungen auf richtige Dateinamen.
Außerdem müsste der Tabellenblattname der der Aufnehmenden Tabelle noch bekannt sein.
Anstelle der Inputboxen für den Pfad- und Dateinamen kannst du auch die Funktion GETOPENFILENAME verwenden, dann kann der Anwender wie beim Dateiöffnen von Hand die Datei auswählen und anklicken.
das schließt Tippfehler an dieser Stelle schon mal mit grosser Wahrscheinlichkeit aus.
Gruß, Daniel
Anzeige
AW: Danke
07.11.2009 20:44:58
Jean
Hallo Daniel,
vielen Dank für Deinen Beitrag, mit dem die Aufgabe gelöst wird.
Gruß
Jean

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige