Lesezugriff auf eine externe Tabelle per VBA

Diskutiere und helfe bei Lesezugriff auf eine externe Tabelle per VBA im Bereich Microsoft Office im Windows Info bei einer Lösung; Hallo zusammen, ich bräuchte bitte noch mal eure Hilfe. Es geht um den u.g. Code, den Claus in... Dieses Thema im Forum "Microsoft Office" wurde erstellt von Philipp.Müller, 29. März 2019.

  1. Lesezugriff auf eine externe Tabelle per VBA


    Hallo zusammen,


    ich bräuchte bitte noch mal eure Hilfe. Es geht um den u.g. Code, den Claus in https://answers.microsoft.com/de-de...rt-einer/f3e3f9a4-5667-4dec-8a4c-02921adbd8ce entwickelt hat.

    Eine kleine Änderung soll die rot markierte Zeile betreffen, wo auf das zweite Sheet der aktiven Tabelle zugegriffen wird, um Daten auszulesen.

    Der Inhalt dieses Sheets soll nun in eine separate Datei ausgelagert werden, also z.B. in [Pfad:\]Test.xlsx mit dem Sheet 'Quelle'

    Ideal wäre, wenn die Datei nur ausgelesen und nicht sichtbar geöffnet würde.

    Alle Versuche, das hinzukriegen, sind leider (knapp) gescheitert.


    Danke, Philipp


    Sub Ersetzen()
    Dim LRow1 As Long, LRow2 As Long
    Dim i As Long
    Dim varCheck As Variant
    Dim c As Range
    Dim FirstAddress As String



    'Hier den Bereich und den Blattnamen
    'für die Tabelle mit den Zuordnungen anpassen
    With Sheets("Tabelle2")
    LRow2 = .Cells(.Rows.Count, "A").End(xlUp).Row
    varCheck = .Range("A2:C" & LRow2)
    End With
    'Hier den Bereich und den Blattnamen
    'für die Haupttabelle anpassen
    With Sheets("Tabelle1")
    LRow1 = .Cells(.Rows.Count, "C").End(xlUp).Row
    For i = LBound(varCheck) To UBound(varCheck)
    Set c = .Range("C1:C" & LRow1).Find(varCheck(i, 3), LookIn:=xlValues, _
    lookat:=xlPart, MatchCase:=True)
    If Not c Is Nothing Then
    Do
    c = varCheck(i, 1) & " " & varCheck(i, 2)
    Set c = .Range("C1:C" & LRow1).FindNext(c)
    Loop While Not c Is Nothing
    End If
    Next
    End With
    End Sub
     
  2. Philipp.Müller Win User

    Lesezugriff auf eine externe Tabelle per VBA

    Hallo Andreas,

    super erklärt und jetzt klappt es wie gewünscht!

    Danke und Grüße,

    Philipp
  3. Andreas Killer Win User

    Lesezugriff auf eine externe Tabelle per VBA

    Sobald die Quelle geöffnet ist, scheint der ursprüngliche Befehl "With ActiveSheet" alle folgenden Aktionen dort ausführen zu wollen.
    ActiveSheet bedeutet ja "das Blatt das gerade aktive ist", in diesem also das von der Datei die Du gerade per Code geöffnet hast. Logisch?

    (Ich will Dich jetzt nicht verwirren wie man über das Workbook-Objekt auf die aktive Tabellen in verschiedenen Dateien zugreift und warum ActiveSheet eigentlich ActiveWorkbook.ActiveSheet bedeutet...)

    Die einfachste Lösung: Wenn Du einen Button in verschiedenen Tabellen hast die den gleichen Code aufrufen, dann bilde die Referenz direkt am Anfang des Makros:

    Dim ThisSheet As Worksheet

    Set ThisSheet = ActiveSheet

    Und erst dann öffnest Du die Datei. Was jetzt aktiv wird kann dir egal sein, wenn Du

    With ThisWorkbook.Sheets("Tabelle1")

    durch

    With ThisSheet

    ersetzt. Das Objekt "weiß" wohin es gehört.

    BTW, Du hast eine Referenz zu der Datei (zu dem Objekt der Datei, sprich Workbook-Objekt) gebildet die Du mit

    Set Wb = Workbooks.Open("C:\Whatever\Datei.xlsx")

    geöffnet hast. Dann nimm auch das Objekt beim Schließen. Also ersetzte

    Workbooks("Datei.xlsx").Close False

    durch

    Wb.Close False

    So funktioniert das mit den Objekten, erzeuge eine Referenz auf eines und dann kannst Du später immer auf das Ding zugreifen, wo auch immer Du bist, bzw. was gerade stattfindet.

    Alles klar?

    Andreas.
  4. Philipp.Müller Win User

    Lesezugriff auf eine externe Tabelle per VBA

    Hallo Andreas,

    urlaubsbedingt konnte ich erst jetzt Deine Vorschläge ausprobieren. Vielen Dank, grundsätzlich funktioniert das so! Ich habe meine Änderungen und Ergänzungen hier mal fett dargestellt:

    Sub Ersetzen()
    
    Dim LRow1 As Long, LRow2 As Long
    
    Dim i As Long
    
    Dim varCheck As Variant
    
    Dim c As Range
    
    Dim FirstAddress As String'Hier den Bereich und den Blattnamen für die Tabelle mit den Zuordnungen anpassen
    
    [b]Application.ScreenUpdating = False
    
    [/b][b]Dim Wb As Workbook
    
    [/b][b]  Set Wb = Workbooks.Open("C:\Whatever\Datei.xlsx")
    
    [/b][b]  With Wb.Sheets("Tabelle2")[/b]   LRow2 = .Cells(.Rows.Count, "A").End(xlUp).Row
    
       varCheck = .Range("A2:C" & LRow2)
    End With
    
    'Hier den Bereich und den Blattnamen für die Haupttabelle anpassen[b]With ThisWorkbook.Sheets("Tabelle1")[/b]
    
       LRow1 = .Cells(.Rows.Count, "C").End(xlUp).Row
    
       For i = LBound(varCheck) To UBound(varCheck)
    
          Set c = .Range("C1:C" & LRow1).Find(varCheck(i, 3), LookIn:=xlValues, _
    
             lookat:=xlPart, MatchCase:=True)
    
          If Not c Is Nothing Then
    
             Do
    
                c = varCheck(i, 1) & " " & varCheck(i, 2)
    
                Set c = .Range("C1:C" & LRow1).FindNext(c)
    
             Loop While Not c Is Nothing
    
          End If
    
       Next
    
    End With[b]Workbooks("[/b]Datei.xlsx[b]").Close False[/b]
    
    [b]Application.ScreenUpdating = True[/b]End Sub
    Ohne Deinen Zusatz "With ThisWorkbook.Sheets("Tabelle1")" geht es wohl nicht, obwohl es weder Dateien noch Blätter mit id. Namen gibt. Sobald die Quelle geöffnet ist, scheint der ursprüngliche Befehl "With ActiveSheet" alle folgenden Aktionen
    dort ausführen zu wollen.

    Problem ist jetzt nur, dass "Tabelle1" in "With ThisWorkbook.Sheets("Tabelle1")" nicht statisch ist! Sowohl die Datei wie auch ihre Blätter können beliebige Namen haben. Zur Ausführung klicke ich ja eine Befehlsschaltfläche auf den Blatt, wo die Aktion ausgeführt
    werden soll. Wie kann ich im Code in allgemeiner Form festlegen, dass nur dieses Blatt gemeint ist?

    Grüße, Philipp
  5. Andreas Killer Win User

    Lesezugriff auf eine externe Tabelle per VBA

    Der Inhalt dieses Sheets soll nun in eine separate Datei ausgelagert werden, also z.B. in [Pfad:\]Test.xlsx mit dem Sheet 'Quelle'
    Ideal wäre, wenn die Datei nur ausgelesen und nicht sichtbar geöffnet würde.
    Keine Chance, die Datei muss vorher geöffnet werden.

    Dann kannst Du die Referenz mittels der Workbooks collection erweitern:

    with Workbooks("Datei.xlsx").Sheets("Tabelle2")

    bzw. wenn das Öffnen mit VBA passieren soll:

    Dim Wb As Workbook

    Set Wb = Workbooks.Open("C:\Whatever\Datei.xlsx")

    with Wb.Sheets("Tabelle2")

    Wenn 2 Dateien geöffnet sind können beide Blätter enthalten die gleiche Namen haben, daher referenziere auch

    With ThisWorkbook.Sheets("Tabelle1")

    um sicherzustellen das die Daten auch da landen wo sie sollen.

    Wenn das alles funktioniert, dann kannst Du zum Schluß via Application.ScreenUpdating = False den Bildschirm ausschalten, dann läuft das ganze "unsichtbar".

    Andreas.
  6. markus888 Win User

    Access - Import Mails samt Adressen aus Outlook

    "Die verknüpfte Tabelle liefert eben nur einen Teil der möglichen Informationen."

    Egal, welche Tabelle ich zum Auswesen wähle: Ich bekomme immer die gleichen Informationen. (Ich kann auch nicht wie sonst bei externen Datein wählen, welche Spalten importiert werden sollen und welche nicht.)

    Stell es dir einfach so vor:

    Wenn Outlook die Mails abholt, wird für jedes Mail ein Teil der Informationen in eine Tabelle geschrieben.

    Diese Informationen kannst du abrufen.

    Wenn du aber alle Infos willst dann musst du sie per VBA von Outlook abholen, so wie in den Beispielen die du gesehen hast.

    Diese Beispiele findet man zur Genügen in Outlook Foren.

    LG Markus
  7. User Advert


    Hi,

    willkommen im Windows Forum!
Thema:

Lesezugriff auf eine externe Tabelle per VBA - Microsoft Office

Die Seite wird geladen...

Lesezugriff auf eine externe Tabelle per VBA - Similar Threads - Lesezugriff externe Tabelle

Forum Datum

Diagramme per VBA Formatieren

Diagramme per VBA Formatieren: Moin,Ich würde gern die Diagramme "Result" automatisch entsprechend der vorgegebenen Farbe einfärben. Die Diagramme sollen dabei aber vollständig auf den arrays basieren und sich vollkommen...
Microsoft Office 29. November 2023

Ordnereigenschaften per VBA aktivieren

Ordnereigenschaften per VBA aktivieren: Hallo,Kann mir mal jemand helfen bitte, leider in der Suche nichts gefunden.Ich möchte gern in Konten die Eigenschaften der Ordner in Bezug darauf, wie die Anzahl der Mails darin angezeigt werden...
Microsoft Office 29. August 2021

Datensätze per VBA löschen

Datensätze per VBA löschen: Ich möchte, dass ältere Datensätze in meiner Datenbank automatisch beim öffnen gelöscht werden. In der Datenbank gibt es die Tabelle Service und darin ein Feld Woche mit einem Datum. Alle...
Microsoft Office 4. Dezember 2020

Outlookvorlage per VBA öffnen und wieder als Outlookvorlage per VBA speichern

Outlookvorlage per VBA öffnen und wieder als Outlookvorlage per VBA speichern: Hallo, ich möchte folgende Problemstellung per VBA lösen: Aus Excel (hier: Excel 2016) heraus möchte ich eine Outlookvorlagendatei öffnen, dann bestimmte Daten aus Excel in die Outlookvorlage...
Microsoft Office 27. Juni 2018

Kopieren Einfügen per VBA

Kopieren Einfügen per VBA: Hallo Habe eine Rechnung mit Excel erstellt mit fortlaufender Rechnungsnummer und einer Dropdownliste für die zur Verfügung stehenden Artikel. Ich möchte nun mit einem Klick auf dem Button,...
Microsoft Office 15. Februar 2018

Tabellenauszug per VBA via Pivot-Tabelle

Tabellenauszug per VBA via Pivot-Tabelle: Hallo, ich brauche aus einer großen Tabelle verschiedene Teilmengen, d. h. Überschrift + einige Zeilen (alle Spalten). Das lässt sich händisch super realisieren, indem man eine simple...
Microsoft Office 18. Dezember 2017

VBA: Auftragserfassung per Userform?

VBA: Auftragserfassung per Userform?: Hallo zusammen, nach längerer Abwesenheit bin ich endlich wieder im Bereich VBA unterwegs und habe mich gleich in ein Projekt gestürzt :-) Ich habe aktuell eine einfache Excel Tabelle, welche...
Microsoft Office 24. Oktober 2017
Lesezugriff auf eine externe Tabelle per VBA solved
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.