Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel - Zellen aus anderen Exceldateien auslesen

Frage Microsoft Microsoft Office

Mitglied: Cubic83

Cubic83 (Level 2) - Jetzt verbinden

05.01.2015 um 18:54 Uhr, 3881 Aufrufe, 10 Kommentare

Hallo,

ich stecke mal wieder bei einem Excel Problem fest und hoffe ihr könnt mir helfen.

Ich habe in einem Ordner C:\Test einen Haufen Excel Dateien:
C:\Test\file1.xlsx
C:\Test\file2.xlsx
....

In jeder dieser Dateien steht in der Zeile A1 ein Zahlenwert.

Nun habe ich eine weitere Excel-Datei wo ich diese Zellen gerne auslesen möchte. Diese Datei hat in etwa die Struktur:

01.
 
02.
	A	B	C	D 
03.
 
04.
1	file1	100 
05.
 
06.
2	file2   200 
07.
 
08.
3	file3	300 
09.
 
10.
4	file4	400 
11.
 
In Spalte A steht der Dateiname und in Spalte B soll der Wert aus Zelle A der jeweiligen Datei kommen. Mit dem Befehl

01.
 
02.
='C:\Test\[file1.xlsx]Sheet1'!A1 
03.
 
klappt das genauso wie ich das Möchte. Ändere ich aber die Formel um in etwa:

01.
 
02.
='C:\Test\[$A1.xlsx]Sheet1'!A1 
03.
 
ist das nicht mehr möglich. Ich habe inzwischen alle Version von Gänsefüschen etc durch, aber ich bekomme das einfach nicht hin.

Gibts da eine Möglichkeit?

Vielen Dank und mit freundlichen Grüssen,
Cubic83
Mitglied: 119478
05.01.2015, aktualisiert um 19:42 Uhr
Wenn ich mich richtig erinnere kann man solche Sachen mit der INDIRECT()-Funktion loesen. Schau mal obe es ueberhaupt notwendig ist.

Welche Form des Dateinamens waehlst Du denn in A! ? Ist das ein Datum oder aehnliches ? Darueber hinaus weiss Excel nicht das $A1.xlsx nicht der Dateiname sein soll.
Du musst also vorher mit TEXT(.......) eine Konvertierung des "Zellenwertes" aus $A1 vornehmen. Sowas wie :

='C:\Test\['TEXT(...................)'.xlsx] oder so aehnlich. Kann es momentan nicht ueberpruefen.

Hoffe es ist wenigstens ein Ansatz.

VG
Bitte warten ..
Mitglied: Cubic83
05.01.2015, aktualisiert um 19:46 Uhr
Hallo und danke für dein Feedback.

Also INDIRECT funktionniert nur wenn die Datei geöffnet ist. Das ist bei mehreren hundert Dateien nicht wirklich eine Lösung.

Der Dateiname ist aufgebaut nach dem Prinzip:

benutzername.xlsx - Also den Benutzernamen bei uns im Netzwerk.

Mit freundlichen Grüßen


PS: Du hast dein Post noch verändert, ich war zu schnell ;)

Ich habe tatsächlich schon mit Text probiert. Er ersetzt die Variablen auch richtig (zeigt mir also an, wie die Zeile aussieht), führt den Befehl dann aber nicht mehr aus sprich: Er schreibt nur in die Zeile hinein =C:\Test\file1.xlsx, etc...
Bitte warten ..
Mitglied: 114757
LÖSUNG 05.01.2015, aktualisiert 06.01.2015
Moin,
"indirekt" kann wie gesagt nur mit geöffneten Arbeitsmappen umgehen, am besten man macht das über eine Makrofunktion
01.
Function getValue(rngName as Range)  
02.
    strParam = "'C:\Test\[" & rngName.Value & "]Sheet1'!R1C1" 
03.
    getValue = ExecuteExcel4Macro(strParam) 
04.
End Function  
Dann schreibt man in die Zelle B1 folgendes
01.
=getValue(A1)
und kopiert die Formel nach unten, feddich.

Gruß jodel32

p.s. siehe auch folgenden Thread in dem das schon diskutiert wurde
http://www.administrator.de/forum/vba-mehrere-zellen-aus-anderer-datei- ...
Bitte warten ..
Mitglied: MarxMoritz
05.01.2015 um 22:08 Uhr
Hallo,
probier das einmal! Das funktioniert!

Sub zellen_auslesen()
Dim strDatei As String, strPfad As String, strTyp As String
Dim wbX As Workbook, wksX As Worksheet, wksN As Worksheet
Dim lngCount As Long

Application.ScreenUpdating = False
strPfad = "C:\test" 'Pfad anpassen
strTyp = "xls" 'Dateityp anpassen
Set wksN = ThisWorkbook.Sheets(1) 'Zieltabelle
lngCount = 3 'Startzeile in der Zieltabelle
wksN.Range(wksN.Rows(lngCount), wksN.Rows(wksN.UsedRange.Rows.Count + lngCount)).Delete

strDatei = Dir(strPfad & "\*." & strTyp)
Do Until strDatei = ""
Set wbX = Workbooks.Open(strPfad & "\" & strDatei)
Set wksX = wbX.Sheets(1)
strDatei = Left(strDatei, Len(strDatei) - 4)
wksN.Cells(lngCount, 1) = strDatei
wksN.Cells(lngCount, 2) = wksX.Cells(1, 1)
lngCount = lngCount + 1
wbX.Close False
strDatei = Dir
Loop
Application.ScreenUpdating = True

End Sub


Grüße
Bitte warten ..
Mitglied: Cubic83
06.01.2015 um 09:38 Uhr
Hallo,

funktionniert leider nicht. Bekomme nur den Fehler #VALUE.

Mit MsgBox strParam bekomme ich den korrekten String ('C:\Test\[file1.xlsx]Sheet1'!A1) angezeigt. Das Zusammenbauen klappt also.

Den Link aus dem Forum hier kannte ich nicht. Reduziert läuft es ja auch auf ein ExecuteExcel4Macro('C:\Test\[file1.xlsx]Sheet1'!A1) hinaus.

Komisch.
Bitte warten ..
Mitglied: 114757
06.01.2015, aktualisiert um 10:30 Uhr
funktionniert leider nicht. Bekomme nur den Fehler #VALUE.
Du musst die Zelle A1 in R1C1 Schreibweise schreiben, siehe korrigierten Code oben(hatte ich noch editiert), der läuft hier problemlos.

Gruß jodel32
Bitte warten ..
Mitglied: Cubic83
06.01.2015 um 10:36 Uhr
Hatte ich schon gemacht.

Hier nochmal meine ganze Funktion in der aktuellen Version

01.
 
02.
Function GetValue(rngName As Range) As Variant 
03.
    strParam = "'C:\test\[" & rngName.Value & "]Sheet1'!R1C1" 
04.
    'MsgBox strParam 
05.
    GetValue = ExecuteExcel4Macro(strParam) 
06.
End Function 
07.
 
Aufgerufen wird die Funktion mit =GetValue(A4). In A4 steht file1.xlsx.

Ich habe es inzwischen auf einem Office 2010 und 2013 probiert. Nicht dass es damit zu tun hat. Ist aber überall das gleiche.


"du musst die Zelle A1 in R1C1 Schreibweise schreiben, siehe korrigierten Code oben, der läuft hier einwandfrei."

Hast du das denn mit einer Funktion probiert oder nur in die Zelle eingetragen?
Bitte warten ..
Mitglied: Cubic83
06.01.2015 um 10:45 Uhr
Hallo,

das ist nicht ganz was is suche. Du geht das ganze Verzeichniss durch. Ich habe aber vordefinierte Dateien.

Ausserdem geht bei dieser Variante (wenn ich richtig verstehe) Excel immer auf.

Danke,
mfG
Bitte warten ..
Mitglied: colinardo
LÖSUNG 06.01.2015, aktualisiert um 11:27 Uhr
Hallo zusammen,
die Funktion ExecuteExcel4Macro funktioniert nur innerhalb von Makros, nicht innerhalb einer Funktion die einen Wert an das Sheet zurückgegeben soll!! Du musst also den Wert aus dem Makro in die Zellen schreiben, so wie es in dem obigen Link von mir gemacht wird.

Also Beispielsweise so:
01.
Function getValue(rngName As Range) As Variant 
02.
    strParam = "'C:\Test\[" & rngName.Value & "]Sheet1'!R1C1" 
03.
    getValue = ExecuteExcel4Macro(strParam) 
04.
End Function 
05.
 
06.
Sub WriteValuesToCells() 
07.
    For Each cell In ActiveSheet.Range("B1:B10") 
08.
        cell.Value = getValue(cell.Offset(0, -1)) 
09.
    Next 
10.
End Sub
Die Prozedur WriteValuesToCells() lässt sich ja dann z.B. nach belieben aus einem Event von Excel aufrufen (Workbook_Open / Worksheet_Change), je nachdem wie oft es aktualisiert werden soll.

Grüße Uwe
Bitte warten ..
Mitglied: Cubic83
06.01.2015 um 11:27 Uhr
Das wars! Funktionniert jetzt.

Vielen lieben Dank!
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Zellen aus anderer Excel-Mappe mit vba auslesen
gelöst Frage von speedy132VB for Applications3 Kommentare

Hallo zusammen, Ich habe eine Arbeitsmappe in der ich Werte aus einer anderen geschlossenen Arbeitsmappe auslesen möchte. Das ganze ...

Microsoft Office
Einzelne Zellen einer Exceldatei automatisch in eine andere kopieren
gelöst Frage von BerndVorwerkMicrosoft Office2 Kommentare

Hallo an alle, ich habe ein Problem, bei dem ihr mir hoffentlich helfen könnt. Es existiert bei uns eine ...

Microsoft Office
Excel: Einzelne Zeilen einer mehrzeiligen Zelle auslesen
gelöst Frage von Booster07Microsoft Office3 Kommentare

Hallo zusammen, ich habe folgendes Problem und hoffe auf Eure Hilfe. Vereinfachtes Beispiel: Zelle A1 ist zum mehrzeilig (Zeilenumbrüche ...

Microsoft Office
Excel - Werte bestimmter Zellen nach definierter Suche auslesen
gelöst Frage von Excel-StarterMicrosoft Office7 Kommentare

Hallo zusammen, ich bräuchte wieder einmal eure Hilfe für folgende Excelauswertung: Aus einer Lagerbestandsliste sollen jeweils für einen Artikel ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 4 StundenInternet3 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 11 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 22 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless16 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...