Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
512to516
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
512to516
512to516
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro zum einlesen von Werten

Makro zum einlesen von Werten
09.11.2004 09:19:17
Werten
Hallo liebe Leute,
ich habe folgendes Problem: Ich möchte aus einer externen Exceldatei einen Wert aus einer festen Zelle auslesen.
Dafür möchte ich ein Makro starten. Das Makro müsste nach dem Pfad und dem Namen der Datei fragen (da Pfad und Datei variabel sind), den Zahlenwert aus einer festen Zelle der externen Datei auslesen und in eine bestimmte Zelle in der aktiven Datei reinkopieren. Beim nächsten Start des Makros (den Wert in der Zelle möchte ich ab und zu aktualisieren) wäre es schön wenn der Pfad und die Datei bereits voreingestellt wäre und nur noch mit OK bestätigt werden muss.
Ich beschäftige mich gerne mit VBA, bin aber leider noch lange nicht so weit mir selber so ein Makro zu basteln - ich denke ich kriege eine Anpassung des Makros hin, wenn mir einer ein gutes Grundgerüst senden könnte. Ich würde mich sehr freuen wenn mir einer von den VBA-Spezialisten helfen würde und ein Makro zur Verfügung stellt.
Schon mal Danke für Hilfe ...
Gruß von Basti

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Teilantwort
WernerB.
Hallo Basti,
um den Wert einer Zelle aus einer geschlossenen Datei auszulesen, kannst Du nach entsprechender Anpassung das nachstehende Makro mit der dazugehörigen benutzerdefinierten Funktion verwenden.
Die Bezeichnung "R3C2" am Ende von strSource bedeutet Row/Zeile 3, Column/Spalte 2; dies entspricht der Zelladresse "B2".
Vielleicht hilft Dir ja noch ein anderer Forumsteilnehmer bei der Zusammenstellung von strSource per vorbelegten InputBoxen o.ä.

Sub Basti()
Dim strSource As String
strSource = "'C:\TEMP\TRALALA\[Datei.xls]Blattname'!R3C2"
Range("B9").Value = xl4Value(strSource)
End Sub


Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Makro zum einlesen von Werten
Werten
Hi Basti,
ungetestet:
Dim Datei As String
Dim Pfad As String

Sub Basti()
Dim PF As String, DA As String, strSource As String
PF = InputBox("Bitte Pfad eingeben", "PfadEingabe", Pfad)
If PF = "" Then Exit Sub
DA = InputBox("Bitte Dateinamen eingeben", "DateiEingabe", Datei)
If DA = "" Then Exit Sub
Pfad = PF
Datei = DA
strSource = "'" & Pfad & "\[" & Datei & ".xls]Tabelle1'!R3C2"
Range("B9").Value = ExecuteExcel4Macro(strSource)
End Sub

Gruß
Reinhard
AW: Makro zum einlesen von Werten
09.11.2004 12:11:52
Werten
Hallo, erst mal vielen Dank an WernerB und Reinhard für die Hilfe mit den beiden Makros.
Das Makro von WernerB ließt den Wert korrekt ein (nochmals danke).
Das Makro von Reinhard passt besser zu meiner Aufgabe, da es den Pfad- und die Dateieingabe durch die Input-Box erleichtert. Leider lautet der ausgegebene Wert „#BEZUG!“. Der Wert wird nicht übertragen (in der externen Datei steht aber ein Wert?). Woran kann das liegen? Kann mir dabei auch noch geholfen werden? Wäre toll ...
Gruß, Basti.
Anzeige
AW: Makro zum einlesen von Werten
Werten
Hallo Basti,
die Ursache könnte von Deinen Eingaben in die Inputboxen herrühren.
Bei Pfad ist diese Syntax einzuhalten:
C:\TEMP\TRALALA
Der Dateinamen muss ohne Endung ".xls" eingegeben werden.
Gruß
WernerB.
AW: Makro zum einlesen von Werten
Werten
Hi Basti,
bei mir kam kein Fehler, Werner hat ja schon die Syntax korrekt beschrieben bei der Eingabe, wenn das nichts half, probier mal diesen Code und schreibe was in B8 steht.

Option Explicit
Sub Basti()
Dim PF As String, DA As String, strSource As String
Static Datei As String
Static Pfad As String
PF = InputBox("Bitte Pfad eingeben", "PfadEingabe", Pfad)
If PF = "" Then Exit Sub
DA = InputBox("Bitte Dateinamen eingeben", "DateiEingabe", Datei)
If DA = "" Then Exit Sub
Pfad = PF
Datei = DA
strSource = "'" & Pfad & "\[" & Datei & ".xls]Tabelle1'!R3C2"
Range("B8").Value = strSource
Range("B9").Value = ExecuteExcel4Macro(strSource)
End Sub

Gruß
Reinhard
Anzeige
AW: Makro zum einlesen von Werten
09.11.2004 15:04:01
Werten
Lieber Reinhard, lieber Werner
in Feld B8 steht jetzt
'G:\DAT\User\SK\Dateien\[9002.xls]Tabelle1'!R3C2
leider immer noch nicht der Wert aus Datei 9002.xls. Was kann man da machen?
Gruß, Bastian
Keinen Plan mehr
Reinhard
Hi Bastian,
bei mir läuft das problemlos.
Erzeuge neue datei , nenne sie t2.xls und speicher sie in c:\test ab.
Was passiert dann bei den nachfolgenden Makros?

Sub t1()
strSource = "'G:\DAT\User\SK\Dateien\[9002.xls]Tabelle1'!R3C2"
Range("B8").Value = strSource
Range("B9").Value = ExecuteExcel4Macro(strSource)
End Sub


Sub t2()
strSource = "'c:\test\[t2.xls]Tabelle1'!R1C1"
Range("B8").Value = strSource
Range("B9").Value = ExecuteExcel4Macro(strSource)
End Sub

Wie im Betref gennannt habe ich keine weiteren Ideen mehr, deshalb Frage auf wieder offen gestellt.
Gruß
Reinhard
Anzeige
AW: Makro zum einlesen von Werten
Werten
Hallo Basti,
kopiere Dein bisheriges Makro doch mal unverändert in einen Forumsbeitrag und mache dazu bitte noch zusätzlich präzise Angaben zu Deiner auszulesenden geschlossenen Original-Quelldatei:
Pfad: (z.B.: G:\DAT\User\SK\Dateien)
Dateiname: (z.B.: 9002.xls)
Blattbezeichnung: (z.B.: Tabelle1)
Zelladresse: (z.B.: B3)
Vielleicht kommen wir dadurch der Ursache auf die Sprünge; es liegt sicher nur an einer winzigen Kleinigkeit , dass das Makro nicht funktioniert.
Gruß
WernerB.
AW: Makro zum einlesen von Werten
10.11.2004 09:12:25
Werten
Hallo Werner, hallo Reinhard, hallo auch an alle anderen,
Das Makro von Werner läuft ja und könnte vielleicht etwas anders verwendet werden. Hier ist es noch mal:

Sub Basti()
Dim strSource As String
strSource = "'G:\DAT\User\SK\Dateien\[9002.xls]Tabelle1'!R3C2"
Range("B9").Value = xl4Value(strSource)
End Sub


Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function

Ich hatte ja gemeint, dass der Nachteil das fehlende Eingabefeld ist. Nun habe ich gelernt, das die Daten aus dem Eingabefeld nach dem Schließen der Datei im Speicher ohnehin gelöscht werden und bei der nächsten Sitzung nicht mehr zur Verfügung stehen. Ist es möglich die Pfadangabe im Makro von Werner aus einer Zelle im Tabellenblatt in das Makro einzulesen? Dann könnte der Bearbeiter einmal Pfad und Dateiname in eine Zelle im Arbeitsblatte eingeben, das Makro liest von dort Pfad und Dateiname aus und übergibt dann den Wert aus der externen Datei in das geöffnete Tabellenblatt.
Ich danke Euch für Eure ausdauernde Hilfe.
Gruß, Basti
Anzeige
AW: Makro zum einlesen von Werten
Werten
Hallo Basti,
bitte sehr:
Schreibe in das aktive Blatt in die Zelle "A1" diesen Text (Pfad):
G:\DAT\User\SK\Dateien
Schreibe in das aktive Blatt in die Zelle "A2" diesen Text (Dateinamen ohne Endung ".xls"):
9002
Bei mir funktionieren dann sowohl Reinhards abgewandelte als auch meine Variante; d.h., dass aus der geschlossenen Datei "9002.xls", aus dem Blatt "Tabelle1" der Wert der Zelle "B3" (=R3C2) ausgelesen und in der aktiven Datei im aktiven Blatt in die Zelle "B9" eingetragen wird.
'----------------------------------------------------------------------
'Reinhard:

Sub BastiR()
Dim strSource As String, Pfad As String, Datei As String
Pfad = Range("A1").Text
Datei = Range("A2").Text
strSource = "'" & Pfad & "\[" & Datei & ".xls]Tabelle1'!R3C2"
Range("B9").Value = ExecuteExcel4Macro(strSource)
End Sub

'----------------------------------------------------------------------
'Werner:

Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function


Sub BastiW()
Dim strSource As String, Pfad As String, Datei As String
Pfad = Range("A1").Text
Datei = Range("A2").Text
strSource = "'" & Pfad & "\[" & Datei & ".xls]Tabelle1'!R3C2"
Range("B9").Value = xl4Value(strSource)
End Sub

'----------------------------------------------------------------------
Viel Erfolg wünscht
WernerB.
Anzeige
AW: Makro zum einlesen von Werten
10.11.2004 11:03:24
Werten
Lieber Werner, lieber Reinhard,
nun läuft alles prima. Ich danke Euch für die tolle, ausdauernde und schnelle Hilfe und wünsche Euch alles Gute,
Gruß, Bastian

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige