Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VBA: mehrere Zellen aus anderer Datei auslesen (ohne diese zu öffnen)

Frage Microsoft Microsoft Office

Mitglied: BerndVorwerk

BerndVorwerk (Level 1) - Jetzt verbinden

22.08.2014 um 14:49 Uhr, 7231 Aufrufe, 1 Kommentar

Hallo an alle,
ich muss mich mal wieder mit einer Frage an alle Excel Experten wenden.
Ich möchte per Makro mehrere Zellen einer anderen Exceldatei, die im selben Ordner abgelegt ist, auslesen.
Mit folgendem Makro funktioniert das für eine Zelle einwandfrei.

  • Private Sub Worksheet_activate()
    • Range("A10") = GetValue([a1], [a2], [a3], [a4])
  • End Sub

  • Private Function GetValue(path As String, file As String, sheet As String, ref As String) As String
    • Dim arg As String

    • path = ActiveWorkbook.path
    • file = "test1.xls"
    • sheet = "Tabelle1"
    • ref = "B1"

  • arg = "'" & path & "\[" & file & "]" & sheet & "'!" & _
      • Range(ref).Range("A1").Address(, , xlR1C1)

  • GetValue = ExecuteExcel4Macro(arg)
  • End Function

Ich muss leider gestehen, dass ich den Code im Detail nicht verstehe (ist nur kopiert ) So verstehe ich die [a1], [a2], ... hinter GetValue nicht, ebenso erzeugt die Zeile
      • Range(ref).Range("A1").Address(, , xlR1C1)
      Fragezeichen auf meiner Stirn.

      Wie muss ich den Code ändern, wenn ich nicht nur eine Zelle auslesen/einfügen möchte, sondern mehrere. (ausgelesen wird aus Datei "test1", eingefügt wird in Datei "Ziel")
      Im Detail:
      Quelle (Tabellenblatt)Quelle (Zelle)Ziel (Tabellenblatt)Ziel (Zelle)
      Tabelle1A1Tabelle1A10
      Tabelle3D5Tabelle1E2
      Tabelle4F2Tabelle2B3

      Die Zellen aus denen kopiert wird und eingefügt werden soll sind also vollkommen unabhängig voneinander. Daher vermute ich, dass man die ganze Prozedur mehrmals hintereinander ausführen muss. Es sollen aber alle Zellen automatisch bei Aktivierung des Tabellenlattes 1 (WorksheetActivate) gefüllt werden.
      Vielleicht könnt ihr mir helfen.
      Freundicher Gruß,
      Bernd
Mitglied: colinardo
22.08.2014, aktualisiert um 19:44 Uhr
Hallo Bernd,
wenn du es damit machen willst sähe das für deinen Fall so aus:
01.
Private Sub Worksheet_Activate() 
02.
    Dim strPath As String, strFile As String 
03.
    strPath = "C:\Quellpfad" 
04.
    strFile = "Quellesheet.xlsx" 
05.
    Worksheets(1).Range("A10").Value = GetValue(strPath, strFile, "Tabelle1", "A1") 
06.
    Worksheets(1).Range("E2").Value = GetValue(strPath, strFile, "Tabelle3", "D5") 
07.
    Worksheets(2).Range("B3").Value = GetValue(strPath, strFile, "Tabelle4", "F2") 
08.
End Sub 
09.
 
10.
Private Function GetValue(ByVal path As String, ByVal file As String, ByVal sheet As String, ByVal ref As String) As String 
11.
    Dim arg As String 
12.
    arg = "'" & path & "\[" & file & "]" & sheet & "'!" & Range(ref).Address(, , xlR1C1) 
13.
    GetValue = ExecuteExcel4Macro(arg) 
14.
End Function
Du kannst die Zellen natürlich auch direkt via Formel miteinander verknüpfen, das Makro macht auch nichts anderes als das es diese Formel erst auswertet und dann nur den jeweiligen Wert in die Zelle ohne Formel einträgt.

Eine Verknüpfung zu einer Zelle in einem anderen Sheet via Formel sieht ja immer so aus:
='C:\Pfad\zur\[Quelle.xlsx]Tabelle1'!$A$1
Range(ref).Address(, , xlR1C1)
das hier macht nichts anderes als einen Zellbezug in die R1C1 Zellbezugsschreibsweise von Excel umzuwandeln. Diese beschreibt die Position einer Zelle anhand von Zeilen und Spaltenpositionen. Beispiel: Eine Zelle B3 würde in R1C1-Schreibweise so aussehen R3C2 (Row 3 Column 2 )

Grüße Uwe

p.s. Bitte nutze in Zukunft Code-Tags für deinen Quellcode: <code> Quellcode </code>. Merci.
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

VB for Applications
gelöst Mit VBA im Monatskalender Datum suchen - aus anderer Datei einfügen (6)

Frage von Otto1699 zum Thema VB for Applications ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

LAN, WAN, Wireless
IP Sec Client legt Netzwerkkarte lahm (12)

Frage von mario87 zum Thema LAN, WAN, Wireless ...