Top-Themen

Aktuelle Themen (A bis Z)

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, 9623 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 ..
Ähnliche Inhalte
Microsoft Office
Excel-VBA: Alle Werte einer Spalte in einer anderen Suchen
gelöst Frage von KevinPMicrosoft Office4 Kommentare

Hallo, ich hänge jetzt schon seit Tagen dran und komm nicht zu Rande. Ich versuche jeden Wert eines Tabellenblattes ...

Microsoft Office
Importieren von excel daten in outlook vba
gelöst Frage von BgervaisMicrosoft Office10 Kommentare

Hallo, mein Deutsch ist nicht so gut, aber ich versuche es trotzdem. (Excel und Outlook - Deutsch Sprache) ich ...

VB for Applications
Excel VBA gefilterte Spalten vergleichen
gelöst Frage von YotYotVB for Applications3 Kommentare

Aloha! Ich bin seit satten fünf Stunden auf der Suche nach einer funktionierenden Lösung und scheitere daran, dass ich ...

Datenbanken
Tabelle kennt neue Spalte nicht
gelöst Frage von it-froschDatenbanken5 Kommentare

Guten Abend, irgendwie stehe ich total auf dem Schlauch. Umgebung: MS SQL 2008 R2 Standard SQL Server Management Studio ...

Neue Wissensbeiträge
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 10 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 12 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...