Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Excel-Tabelle in Excel-Tabelle (tab to tab) | Herbers Excel-Forum


Betrifft: Excel-Tabelle in Excel-Tabelle (tab to tab) von: Markus
Geschrieben am: 17.02.2012 16:28:28

Hallo,

aus der Tabelle d:\daten.xls, Tabelle:AdressStamm möchte ich alle Daten in die Tabelle d:\firma.xls, Tabelle: AdressenZiel auf die Position B1 und folgende übernehmen.
Der Aufruf des Makro soll aus der Tabelle Firma erfolgen.
Wenn es funktioniert, mache ich daraus ein "Workbook-Open-Makro", damit die Adressen immer TopAktuel sind.
Markus

  

Betrifft: AW: Excel-Tabelle in Excel-Tabelle (tab to tab) von: Hajo_Zi
Geschrieben am: 17.02.2012 16:33:05

Hallo Markus,

warum Makro, mache Verknüpfung.

GrußformelHomepage


  

Betrifft: AW: Excel-Tabelle in Excel-Tabelle (tab to tab) von: Markus
Geschrieben am: 17.02.2012 16:41:43

Hallo Hajo,

ganz einfach, weil ich etwa 20 Firmen-Excels habe, in denen ich diese Tabelle (Adress-Daten) benötige.
Zudem muss ich diese Tabellen an meine Chefs verschicken und möchte darum keine Verknüpfungen dabei haben.
Markus


  

Betrifft: ...und außerdem ist das viel sicherer als die ... von: Luc:-?
Geschrieben am: 17.02.2012 17:10:58

…unsicheren Fernbezüge wie wir hier schon des Öfteren erfahren konnten, denn Server-Laufwerke können umbenannt, Ordner verschoben wdn → Chaos! Was dann? Aber das muss man ja als AWer nicht unbedingt berücksichtigen, das Problem hat ja dann der Andere, nicht wahr… :->>
Tipp an Markus: 1x aufzeichnen, dann anpassen (lassen).
Gruß Luc :-?


  

Betrifft: Kompromiss: Allerdings gibt's ja da noch ... von: Luc:-?
Geschrieben am: 17.02.2012 17:15:17

Kopieren und Speichern als Werte… ;-)
Luc :-?


  

Betrifft: AW: Kompromiss: Allerdings gibt's ja da noch ... von: Markus
Geschrieben am: 17.02.2012 17:23:11

Hallo,
Kopieren und Einfügen das machte ich bisher schon.
Nein, ich suche ein VBA und nichts anderes.
Wenn ich eine Datei mitnehme zur Sitzung, dann fehlen mir die Verknüpfungen.
Und jeden Tag ( oder mindestens jeden 2. Tag) das Ganze von Hand.
Ich bin kein Super-Hirsch in VBA schreiben und Aufzeichnen funktioniert nicht,
vor nicht das Anschliessende Wieder-Schliessen der Quell-Tabelle.
Markus


  

Betrifft: Ich will dir deine Verknüpfungen ja nicht ... von: Luc:-?
Geschrieben am: 17.02.2012 17:42:57

…wegnehmen, Markus,
nur Weitergeben sollst du die Tabellen eben so. Das kann auch bedeuten, dass ein Makro ausreichen würde, das den ganzen UsedRange einer Kopie der Originaltabelle kopiert und als Wert wieder an die selbe Stelle oder meinethalben in eine neue Tabelle speichert. Das wirst du doch wohl hinbekommen?!
Gruß Luc :-?


  

Betrifft: AW: Kompromiss: Allerdings gibt's ja da noch ... von: Markus
Geschrieben am: 17.02.2012 18:51:44

Hallo Luc,
ja das wollte ich auch.
Aber sobald ich beim Aufzeichnen auf die Quell-Tabelle springe,
bricht meine Makro-Aufzeichnung ab.
Darum dachte ich, die Daten aus der geschlossenen Quell-Tabelle holen,
kopieren einfügen und fertig,
ohne dass die Quelle geöffnet werden muss.
Wenn ich das ganze ohne Makro mache, also Öffnen, kopieren, Ziel anwählen, ZielZelle anklicken und einfügen dann gehts.
Bei der Aktualisierung von ca. 5-10 Tabellen pro Tag, wäre darum ein Makro bedeutend rationioneller.
Markus


  

Betrifft: AW: Kompromiss: Allerdings gibt's ja da noch ... von: robert
Geschrieben am: 17.02.2012 19:21:51

Hi,

das sollte doch im Archiv zu finden sein-ist ja nicht das 1. Mal ein Problem ;-)

Gruß
robert

"Daten aus der geschlossenen Quell-Tabelle holen"


  

Betrifft: als ob ich diese Idee nicht auch schon hatte von: Markus
Geschrieben am: 17.02.2012 19:26:09

Danke für den Tipp.
Abor wo nix ist!?


  

Betrifft: ich hab das aus dem Forum... von: robert
Geschrieben am: 17.02.2012 19:33:11

Public Function GetDataClosedWB(SourcePath As String, _
    SourceFile As String, sourceSheet As String, _
        SourceRange As String, TargetRange As Range) As Boolean
    'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
    'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
    '© t.ramel@mvps.org
    ' wird durch die HoleDaten aufgerufen
    Dim strQuelle       As String
    Dim Zeilen          As Long
    Dim Spalten         As Byte
    On Error GoTo InvalidInput
    strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
    Zeilen = Range(SourceRange).Rows.Count
    Spalten = Range(SourceRange).Columns.Count
    With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
        .Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
        .Value = .Value
    End With
    GetDataClosedWB = True
    Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from  _
closed Workbook"
    GetDataClosedWB = False
End Function

Public Sub HoleDaten()
    ' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
    Dim Pfad            As String
    Dim Dateiname       As String
    Dim Blatt           As String
    Dim Bereich         As String
    Dim Ziel            As Range
    Pfad = "C:\Dein Pfad\"  'Pfad anpassen
    Dateiname = "Deine Datei.xls" ' aus welcher Datei soll er holen?
    Blatt = "Tabellexxx"  ' von welcher Tabelle soll er holen?
    Bereich = "G1:M1000"   ' aus welchem Bereich soll er holen?
    Set Ziel = ActiveSheet.Range("A1")  ' in welchen Bereich soll er kopieren? Genauer gesagt:  _
_
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
    If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
        MsgBox "Daten importiert"
    End If
End Sub
Gruß
robert


  

Betrifft: Das fand ich auch, aber das funktioniert nicht von: Markus
Geschrieben am: 17.02.2012 20:06:21

mit diesem Makro passiert nix.
Zudem so ein Profi bin ich nicht um das zu verstehen.


  

Betrifft: dann machst Du was falsch... von: robert
Geschrieben am: 17.02.2012 20:14:38

Hi,

1. dieses Makro habe ich bei mir im Einsatz - funktioniert...
2. verstehen muss man nicht gleich alles-irgendwann wird's schon ;-)

die kommentierten Zeilen hast Du befolgt ?

Gruß
robert


  

Betrifft: Excel-Tabelle in Excel-Tabelle (tab to tab) von: Barbara
Geschrieben am: 17.02.2012 17:31:17

Hallo Markus und alle "Helfer",



etwas Ähnliches könnte ich auch brauchen, machte es immer über Kopieren und Einfügen,

was aber mühsam ist.

Wäre Super wenn jemand dafür einen Makro hätten.

Barbara


  

Betrifft: @Barbara: Wie ist's mit dir, kommst du ... von: Luc:-?
Geschrieben am: 17.02.2012 20:45:27

…mit den von Robert empfohlenen Makros klar?
Gruß Luc :-?


  

Betrifft: AW: @Barbara: Wie ist's mit dir, kommst du ... von: Barbara
Geschrieben am: 17.02.2012 21:48:53

Hallo,
am Code ist etwas falsch.
Wenn ich diesen in ein Modul kopiere, erscheinen einige Zeilen rot.


  

Betrifft: Jein, Barbara, das ist die Forumssoftware, ... von: Luc:-?
Geschrieben am: 17.02.2012 22:18:29

…die ohne Rücksicht auf Text oder Code einfach nur Zeichen zählt und dann Trenn(unter)striche reinknallt. Nimm einfach mal alle _ inkl nachfolgendem Zeilenwechsel raus, die einen Text "…" unterbrechen, raus; zB bei MsgBox im 1.Pgm und die _-Dopplung im 2.
Luc :-?


  

Betrifft: Beispiel mit ADODB.Connection von: Tino
Geschrieben am: 17.02.2012 22:51:30

Hallo,
habe hier mal ein Beispiel mit ADODB.Connection aufgebaut,
beachte unter Extras Verweise ist der Verweis auf Microsoft ActiveX Data Objects ... eingebunden.
Code ist in der Datei firma.xls eingebaut.

https://www.herber.de/bbs/user/78975.zip

Gruß Tino


  

Betrifft: AW: Beispiel mit ADODB.Connection von: Karel
Geschrieben am: 18.02.2012 18:34:12

Hallo Tino,

Kann man auch mehrere bereichen gleichzeitig deklarieren, stat SQL_Bereich$ = "AdressStamm$B1:H65000"
z. B. ("B1:C65000"). ("E1:E65000") etc.


Sub Lese_Daten()
Dim SQL_Bereich$, sFullPath$, varValue

'Datenbereich in Datenbank
SQL_Bereich$ = "AdressStamm$B1:H65000"

'Pfad zu daten.xls anpassen!
sFullPath = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sFullPath = sFullPath & "daten.xls" 'Dateiname hinzufügen

varValue = oExAbfrage(sFullPath, SQL_Bereich, True)
If IsArray(varValue) Then
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        
        With Sheets("AdressenZiel")
            .Range("B1:H1").EntireColumn.ClearContents
            With .Range("B1").Resize(UBound(varValue), UBound(varValue, 2))
                .Value = varValue
                .Rows(1).Font.Bold = True
            End With
        End With
    
        .EnableEvents = True
        .ScreenUpdating = True
    End With
Else
    MsgBox "Fehler bei der Abfrage!", vbCritical
End If
End Sub

Viele Grüße und Schönes Wochende,

Karel


  

Betrifft: AW: Beispiel mit ADODB.Connection von: Tino
Geschrieben am: 18.02.2012 19:11:22

Hallo,
kann man so machen.

Vereinfachtes Beispiel:
https://www.herber.de/bbs/user/78985.zip

Gruß Tino


  

Betrifft: AW: Beispiel mit ADODB.Connection von: Karel
Geschrieben am: 18.02.2012 19:19:01

Hallo Tino,

Suppi, funktioniert und kann es nachvolziehen.

Grüße

Karel


Beiträge aus den Excel-Beispielen zum Thema "Excel-Tabelle in Excel-Tabelle (tab to tab)"