Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Verschiedene Spalten mittels VBA in neuer Reihenfolge in neues Excel Importieren

Frage Microsoft Microsoft Office

Mitglied: onthetop79

onthetop79 (Level 1) - Jetzt verbinden

21.04.2012 um 01:18 Uhr, 8890 Aufrufe, 2 Kommentare

Hallo Zusammen

Ich bräuchte mal wieder Eure Hilfe. Ich muss auch hier zu Beginn gleich offen gestehen, dass ich mit VBA bis anhin nichts am Hut hatte. Jedoch keinen Weg sehe der für solche Problemstellungen daran vorbei führt.

Ich habe folgendes Problem:

Ich bekomme von verschiedenen Lieferanten Preislisten und Preisaktualisierungen als Excel. Da ich diese letztendlich in ein und der selben Formatierung und Reihenfolge haben muss und die Fehler Quelle bei händischen Copy/Paste Übungen relativ gross sind, möchte ich über VBA diese Daten zusammen ziehen können.

Als Vorlage habe ich ein Master aus welchem ich gerne die Quelldatei auswählen und anschliessend die Spaltenzuordnung bestimmen würde. Beim Import soll die Spalten Überschrift der Quelldatei weggelassen werden und die darunterstehenden Daten in der Masterdatei in die vorgewählte Spalte abgefüllt werden. Nach dem Import sollten die Daten in der Master Datei als neue Datei in einem definierten Pfad abgespeichert werden können.

Da die Spalten Reihenfolge in den Quelldatei immer unterschiedlich ist, müssen diese pro Importauftrag gewählt werden können. Die Masterdatei bleibt immer gleich.

Da diese Arbeiten immer öfters d.h z.Z Monatlich für ca. 10 verschiedenen Lieferantenpreislisten durchgeführt werden müssen, möchte ich so die Möglichkeit schaffen, diese Arbeiten intern delegieren zu können. Dies ist nur möglich wenn ich dies "Deppensicher" automatisieren kann.

Hat jemand von Euch schon solch ein VBA Script geschrieben oder könnte mir da jemand zur Hand gehen.
Mitglied: mak-xxl
21.04.2012 um 09:47 Uhr
Moin ganzoben79,

Zitat von onthetop79:
... Da die Spalten Reihenfolge in den Quelldatei immer unterschiedlich ist, müssen diese pro Importauftrag gewählt werden können. ...

Aber pro Lieferant haben die Tabellen immer die gleiche Struktur?

Da diese Arbeiten immer öfters d.h z.Z Monatlich für ca. 10 verschiedenen Lieferantenpreislisten durchgeführt
werden müssen, möchte ich so die Möglichkeit schaffen, diese Arbeiten intern delegieren zu können. Dies ist
nur möglich wenn ich dies "Deppensicher" automatisieren kann.

Wenn Du das per fester Verknüpfung (siehe Frage oben) realisieren kannst, reduziert sich das Ganze auf ein Öffnen der Mastertabelle -> Daten werden automatisch aktualisiert (Vorliegen aktueller Lieferantendateien vorausgesetzt) -> Makro an Schaltfläche für 'Speichern einer Kopie unter' ...

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: bastla
21.04.2012 um 16:24 Uhr
Hallo onthetop79!

Eine Umsetzung Deiner Vorstellungen in VBA würde etwa so aussehen:
01.
Sub Import() 
02.
Set Ziel = ThisWorkbook 
03.
ZielDatei = Ziel.FullName 
04.
ZielStartSpalte = 1 'Eintrag in Mastertabelle ab Spalte A 
05.
ZielStartZeile = 2 'Eintrag in Mastertabelle ab Zeile 2 
06.
QuellStartZeile = 2 'Daten aus Quelltabelle lesen ab Zeile 2 
07.
QuellEndZeile = 2000 'Daten aus Quelltabelle lesen bis Zeile 2000 
08.
 
09.
For Each WB In Workbooks 'alle offenen Mappen durchgehen 
10.
    If WB.Name <> Ziel.Name Then 'Mastertabelle nicht verarbeiten 
11.
        'anhand der Vorgaben Import-Routine aufrufen 
12.
        Importieren WB.Worksheets(1), QuellStartZeile, QuellEndZeile, Ziel.Worksheets(1), ZielStartSpalte, ZielStartZeile 
13.
        WB.Close False 'Mappe schließen, ohne zu speichern 
14.
        Exit For 'nur erste Mappe verarbeiten 
15.
    End If 
16.
Next 
17.
Dateiname = "Import" 
18.
Eingabe = InputBox("Bitte den Namen für das Speichern der übernommenen Daten angeben!", "Speichern ...", Dateiname) 
19.
If Eingabe <> "" Then Dateiname = Eingabe 
20.
Ziel.SaveAs Dateiname, xlNormal 
21.
Workbooks.Open ZielDatei 
22.
'Ziel.Close 'falls die neue Datei automatisch geschlossen werden soll, ersten Apostroph entfernen 
23.
End Sub 
24.
 
25.
Sub Importieren(ByVal QT As Worksheet, ByVal QSZ As Long, ByVal QEZ As Long, ByVal ZT As Worksheet, ByVal ZS As Long, ByVal ZZ As Long) 
26.
i = 1 'mit der als 1. zu importierenden Spalte beginnen 
27.
With QT 
28.
    Do 
29.
        Set c = .Rows(QSZ - 1).Find(i, , xlValues, xlWhole) 'nach Spalte mit Überschrift 1 suchen 
30.
        If c Is Nothing Then Exit Do 'wenn Spaltennummer nicht gefunden wurde, ist der Import abgeschlossen 
31.
        'Zellen aus der gefundenen Spalte von Zeile "QuellStartZeile" bis Zeile "QuellEndZeile" in die Mastertabelle kopieren 
32.
        .Range(.Cells(QSZ, c.Column), .Cells(QEZ, c.Column)).Copy ZT.Cells(ZZ, ZS + i - 1) 'Zellen aus der gefundenen Spalte von Zeile 
33.
        i = i + 1 'Nummer für Importspalte hochzählen 
34.
    Loop 
35.
End With 
36.
End Sub
Dieses Makro zunächst in die Masterdatei einfügen und diese speichern (Dateityp ab Excel 2007: "Excel-Arbeitsmappe mit Makros").

Danach kann die Importdatei einfach geöffnet und bearbeitet werden. Angenommen habe ich, dass die Daten ab Zeile 2 beginnen (in Zeile 1 stehen die Spaltenüberschriften / Feldnamen) - falls nicht, Zeile 6 des Makros anpassen. In der Zeile über der ersten Datenzeile (also defaultmäßig Zeile 1) kannst Du dann ganz einfach die gewünschte Spaltenreihenfolge festlegen, indem Du die Überschriften durch die Zahlen 1, 2, 3 .. ersetzt. Spalten, die nicht übernommen werden sollen, behalten die bisherige Spaltenüberschrift.

Wenn Du dann das Makro ausführst, werden die Spalten in dieser vorgegebenen Reihenfolge in die Masterdatei (ab der in den Zeilen 4 und 5 des Makros angegebenen Position) übernommen. Danach wird nach dem neuen Dateinamen gefragt und unter diesem Namen gespeichert. Die neue Dateie (auf Wunsch - siehe Zeile 22) und die Importdatei werden geschlossen sowie die "Original"-Masterdatei wieder geöffnet.

Verarbeitet wird übrigens immer die erste gefundene offene Arbeitsmappe (aber natürlich nicht die Masterdatei) - es sollten daher nur die Masterdatei und die Importdatei beim Start des Makros geöffnet sein.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
CSV-Datei nach Excel importieren (5)

Frage von mrvfbnummer2 zum Thema Batch & Shell ...

Microsoft Office
gelöst Txt Dateien in Excel importieren (9)

Frage von Serbitar zum Thema Microsoft Office ...

Outlook & Mail
Importieren von excel daten in outlook vba - Teil 2 (5)

Frage von Bgervais zum Thema Outlook & Mail ...

Microsoft Office
gelöst Importieren von excel daten in outlook vba (10)

Frage von Bgervais zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...