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
03.07.2019, 12:40 (Dieser Beitrag wurde zuletzt bearbeitet: 03.07.2019, 12:49 von Hatsch.
Bearbeitungsgrund: Nachtrag
)
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
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.
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
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)