Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

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, 8219 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 ...

Microsoft Office
gelöst Excel VBA Datein auslesen (8)

Frage von schwalbepilot zum Thema Microsoft Office ...

Microsoft Office
VBA Code zum Kopieren von einzelnen Zellen in Excel (3)

Frage von SebastianL zum Thema Microsoft Office ...

VB for Applications
VBA - Welchen Inhalt hat eine Zelle die mit der Taste Enft geleert wird? (3)

Frage von Juckie zum Thema VB for Applications ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Windows Installation
Windows 10 neu installieren (9)

Frage von imebro zum Thema Windows Installation ...