Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Import Daten von externer Tabelle in Tabellenblatt
#1
Hallo an alle,

ich möchte per VBA Daten von einer bzw. zwei externen Tabellen in das Tabellenblatt einer bestehenden Tabelle hineinkopieren und die Daten sollten 1:1 übernommen werden.

Habe dazu bereits ein Ribbon gebastelt, IMPORT EXTERNE DATEN, mit 2 Optionen: Einlesen Daten Agentur und Einlesen Daten Profis. Die Ribbons scheinen zu funktionieren, aber:

-Jedes mal wenn ich die Datei öffen kommt die Meldung, dass das Makro onload fehlt
-Irgendwie klappen meine beiden Makros zum kopieren nicht, es löscht mir zwar die Zieltabelle aber fügt nichts ein

Anbei das Beispielfile und die beiden zu importierenden Datentabellen

Danke im voraus


Angehängte Dateien
.xlsm   Beispiel_import.xlsm (Größe: 118,65 KB / Downloads: 7)
.xlsx   export_profis.xlsx (Größe: 17,31 KB / Downloads: 4)
.csv   export_agentur.csv (Größe: 8,21 KB / Downloads: 6)
Antworten Top
#2
Hallo Hatsch

Ich weiß nicht ob dir das hilft.
Nach meinem schnellen drüber fliegen deiner Datei, fehlt bei dir was wichtiges das dein Ribbon funktioniert.
Code:
Sub OnLoad(ribbon As IRibbonUI)
'Hier fehlt nochwas
End Sub
Gruß
Ivan 16
Antworten Top
#3
Hallo Ivan,

hmmm...kommt deshalb die Fehlermeldung, dass OnLoad fehlt?

Ich hab das so gemacht, jeweils für beide Buttons:

Code:
Sub RcrawlAzienda(control As IRibbonControl)
   Call Agentur
End Sub

Sub RcrawlAzienda2(control As IRibbonControl)
   Call Profis
End Sub

In mod_toExcel Modul sind dann beide Funktionen, die werden aber auch ausgelöst, nur funktioniert das Kopieren nicht.

Grüsse

Edit: habe jetzt die Datei vereinfacht, anbei der ganze Code und die vereinfachte Datei, onload wird nicht benötigt, man muss nur die richtige ID ansprechen.

Auf jeden Fall funktionieren die beiden Makros nicht richtig:

Code:
Sub RcrawlAzienda(control As IRibbonControl)
   Call Agentur
End Sub

Sub RcrawlAzienda2(control As IRibbonControl)
   Call Profis
End Sub


Sub Agentur()
Dim WBZiel As Workbook, ExportDatei As String
Dim WBQuelle As Workbook
 
Set WBZiel = ThisWorkbook
 
'DateiÖffnen Dialog anbieten
ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die Datei zum Kopieren öffnen ...")
 
If Not CVar(ExportDatei) = False Then
  Application.DisplayAlerts = False
  ThisWorkbook.Sheets("Agentur").Delete
  Application.DisplayAlerts = True
   'öffnen der ausgewählten Datei
  Set WBQuelle = Workbooks.Open(ExportDatei)
  WBQuelle.Sheets("Agentur").Copy ThisWorkbook
  WBQuelle.Close False
End If
End Sub



Sub Profis()
Dim WBZiel As Workbook, ExportDatei As String
Dim WBQuelle As Workbook
 
Set WBZiel = ThisWorkbook
 
'DateiÖffnen Dialog anbieten
ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die Datei zum Kopieren öffnen ...")
 
If Not CVar(ExportDatei) = False Then
  Application.DisplayAlerts = False
  ThisWorkbook.Sheets("Profis").Delete
  Application.DisplayAlerts = True
   'öffnen der ausgewählten Datei
  Set WBQuelle = Workbooks.Open(ExportDatei)
  WBQuelle.Sheets("Profis").Copy ThisWorkbook
  WBQuelle.Close False
End If
End Sub


Angehängte Dateien
.xlsm   Beispiel_import.xlsm (Größe: 116,7 KB / Downloads: 3)
Antworten Top
#4
Hallo 

Dieser Code Teil fehlte , dafür die Fehlermeldung "Onload...."

Mit deinem anderen Problem kann ich dir leider nicht weiter helfen.
Gruß
Ivan 16
Antworten Top
#5
Was soll denn wo hin?
Wie verhalten sich die Bereiche in den Ausgangsdateien?
Ist der Bereich variabel oder immer Gleich groß?
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#6
Hallo Frogger,

also: die Daten von Tabellenblatt Foglio1 von export_profis.xlsx sollen 1:1 in die Tabelle Profis von Beispiel_import.xlsm kopiert werden, dasselbe gilt für das Tabellenblatt export_agentur von export_agentur.csv, welches 1:1 in die Tabelle Agentur von Beispiel_import.xlsm kopiert werden soll.

Die Bereiche der Ausgangsdateien sind variabel, auch der Name der zu importierenden Tabellen, das file Beispiel_import.xlsm und deren Tabellenblätter bleiben immer gleich.

Grüsse
Antworten Top
#7
EDIT:

Hab jetzt 2 andere Makros geschrieben, anbei in der neuen Beispieldatei und zwar so:



Code:
Public Sub onload(Ribbon As IRibbonUI)
   Set objRibbon = Ribbon
       objRibbon.ActivateTab "tabBil"
End Sub

Sub RcrawlAzienda(control As IRibbonControl)
   Agentur
End Sub

Sub RcrawlAzienda2(control As IRibbonControl)
   Profis
End Sub


Sub Agentur()
Dim WBZiel As Workbook, ExportDatei As String
Dim WBQuelle As Workbook
 
Set WBZiel = ThisWorkbook
 
'DateiÖffnen Dialog anbieten
ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.csv", , "Bitte die exportierte Datei von der Agentur zum Kopieren öffnen ...")
 
Workbooks.Open Filename:=ExportDatei, ReadOnly:=True
      ActiveWorkbook.Sheets("export_agentur").UsedRange.Copy
      ThisWorkbook.Sheets("Agentur").Cells(1, 1).PasteSpecial xlPasteValues
      ActiveWorkbook.Close
End Sub



Sub Profis()
Dim WBZiel As Workbook, ExportDatei As String
Dim WBQuelle As Workbook
 
Set WBZiel = ThisWorkbook
 
'DateiÖffnen Dialog anbieten
ExportDatei2 = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die exportierte Datei von der Agentur zum Kopieren öffnen ...")
 
Workbooks.Open Filename:=ExportDatei2, ReadOnly:=True
      ActiveWorkbook.Sheets("Foglio1").UsedRange.Copy
      ThisWorkbook.Sheets("Profis").Cells(1, 1).PasteSpecial xlPasteValues
      ActiveWorkbook.Close
End Sub

Folgende Probleme habe ich jetzt:

- beim Makro Agentur wird ein externes .csv File reinkopiert, jedoch werden die Daten komplett anders in der Zieltabelle reingeschrieben, also nicht identisch, wieso?
- Das .csv File hat nicht immer den gleichen sheetnamen, in meinem Makro ist er hardgecodet, kann man den variabel machen?
- beim Makro Profis funkt der Import perfekt, da das externe file ein xlsx file ist, jedoch wenn das Dialogfenster geöffnet wird und man auf abbrechen klickt, kommt Laufzeitfehler 1004 - wir konnten Falsch.xlsx nicht finden...kann ich den Fehler irgendwie abgreifen, es sollte einfach gar keine Meldung kommen

Danke schonmal


Angehängte Dateien
.xlsm   Beispiel_import_v2.xlsm (Größe: 117,38 KB / Downloads: 1)
Antworten Top
#8
Hallöchen,

Zitat:- beim Makro Agentur wird ein externes .csv File reinkopiert, jedoch werden die Daten komplett anders in der Zieltabelle reingeschrieben, also nicht identisch, wieso?

ja, das kann vom "einfachen" Öffnen kommen. Erste Abhilfe könnte , Local:=True schaffen.

Zitat:Das .csv File hat nicht immer den gleichen sheetnamen, in meinem Makro ist er hardgecodet, kann man den variabel machen?

ja, Du könntest z.B. mit einer Inputbox einen Namen abfragen

Zitat:edoch wenn das Dialogfenster geöffnet wird und man auf abbrechen klickt, kommt Laufzeitfehler 1004 - kann ich den Fehler irgendwie abgreifen, es sollte einfach gar keine Meldung kommen

ja, prüfe den Inhalt von "ExportDatei"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste