Excel VBA Schleife

Liste der Zellbereiche pink=copy-, grün=paste-Bereich - (Excel, makro, VBA) In die blauen Zellen soll gepastet werden - (Excel, makro, VBA)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ja, es müsste gehen, ich kann aus dem Stand aber nur die grobe Linie wiedergeben (und wieder mal nur unsauber mit activate bzw select:
sub BereicheTransferierenLautListen()
dim c, aus, Ziel
application.windows("Quelldatei.xls").activate
For each c in KopieBereicheliste ' die rosa hinterlegte mit den zu kopierenden Bereichen
aus = c.value
ziel = c.offset(0, 1). value
application.windows("Quelldatei.xls").activate
sheets("Quellblatt").select
activesheet.range(aus).copy
application.windows("Zieldatei.xls").activate
sheets("Zielblatt").select
activesheet.range(ziel).select
Activesheet.paste
application.windows("Quelldatei.xls").activate
next c
End sub

Kann es im Moment nicht weiter verfolgen, probiers mal aus. Die Grundbefehle müssten stimmen. Ich schau später nochmal rein. Hab gestern einen Tipp bekommen mit pastespecial xlpasteall und ohne activate/select, hab das aber in Kombination mit Datei- bzw Fensterwechsel noch nicht ausprobiert.

Ich blick übrigens nicht durch, was der zweite Screenshot beschreibt. ich hab ihn erst mal ignoriert.

die Zeile nach ziel=... :

application.windows("Quelldatei.xls").activate
gehört raus, wei vor der Schleife und am Ende der Schleife nochmals (und zwar dwshalb, damit zum auslesen von c sicherheitshalber die richtige Datei aktiviert ist. Vielleicht muss man sogar noch das Blatt mit der Liste selektieren, muttu ausprobieren.

0
@Iamiam

Hab die zweite Liste kapiert, ist überflüssig.
Nur heißt es anstatt ...offset(0, 1) anscheinend offset(0, 2)

0

Vielen Dank. Noch eins: aus = c.value wird beim debug markiert. Meldung: Object required Als was muss dim c gesetzt werden? Danke für die Mühe.

0
@rgoertz79

dim c ist ja. aber wahrscheinlich weiß xl nichts mit KopieBereicheliste anzufangen. Ich bin davon ausgegangen, dass das entweder als Bereichsname erstellt wird (dann heißt es im Makro:
For each c in range("KopieBereicheliste") '(oder eben ein anderer Name)
oder dass der Bereich im beim Makrostart aktiven Blatt der Quelldatei markiert ist, dann kann es heißen
For each c in Selection 'und die dritte Zeile: application.windows("Quelldatei.xls").activate ist ü'flüssig oder dass dieser Bereich mit Blattnamen und Bereichsadresse eingetragen wird, dann: For each c in application.windows("Quelldatei").worksheets("ListenBlattname").range("E15:E26") oder was immer sonst deine Namen und Bereiche sind

Wichtig ist, dass die Aktivierung der jeweils anderen Datei ein FENSTER-Befehl ist, was entsprechend der Windows-Konstruktion ja durchaus logisch ist. Und voe Fenster muss application.

0
@Iamiam

OK. Der Code sieht jetzt so aus:

Sub Loop1()

Dim c, aus, Ziel

Application.Windows("Testsource.xlsx").Activate

For Each c In

Application.Windows("Testsource.xlsx").Worksheets("CopySheet").Range("F2:H5") aus = c.Value

Ziel = c.Offset(0, 2).Value

Sheets("CopySheet").Select ActiveSheet.Range(aus).Copy Application.Windows("VBA Loop Example.xlsm").Activate Sheets("PasteSheet").Select ActiveSheet.Range(Ziel).Select ActiveSheet.Paste Application.Windows("Testsource.xlsx").Activate

Next c

End Sub

Lass ich das Macro laufen kommt dieser Fehler:

Run-time error 438: Object doesn`t support this property or method.

Ich stell mich wahrscheinlich blond an, aber so ein Code ist halt Neuland für mich. Vielen Dank für dein Mühe.

0
@rgoertz79

Es kann an den Umbrüchen liegen. Zur Beurteilung braucht man aber die Zeile, in der die Meldung erscheint!

Mach den Umbruch nach For each c in
raus (das angesprochene Sammelobjekt gehört in dieselbe Zeile)
und füge einen ein vor aus = c.value (war missverständlich formuliert, aus ist eine Variable, die mit c.value gefüllt wird.) drunter sind noch viele Umbrüche durcheinandergekommen, Du musst nach dem Einfügen in diesen Editor hier nach jeder Zeile 2 Leerzeichen einfügen und dann erst Enter. ich weiß, das ist gewöhnungsbedürftig, ausnahmsweise aber mal nicht der Fehler von xl.

0
@Iamiam

Die markierte Zeile ist diese hier:
For Each c In Application.Windows("Testsource.xlsx").Worksheets("CopySheet").Range("F2:H5")
Die Zeilenumbrüche waren nur hier zu sehen. Im Originalcode nicht.

0

ich versuche es mal zu verstehen (was vllt anderen auch weiterhilft^^)

du willst also spezielle abschnitte (variabel) in eine andere excel datei per makro einfügen wobei es dort nicht die selbe position ist (andere kordi)

also ich denke ein makro kann variablen nicht vorhersagen du müsstest also die positionen markieren und dann könntest du auch gleich copy-paste machen

Soweit richtig, aber es gibt ja eine Liste mit allen Zellbezügen sowohl in der Quelltabelle als auch in der Zieltabelle. Das muss doch gehen. Natürlich kann man Copy/Paste machen, aber das sind 34 Zeilen pro Monat und 12 Monate für einen kompletten Durchgang. Dadurch werden die VB Codes höllisch lang und das Dokument unnötig gross. Idee??

0
@rgoertz79

34 zeilen pro monat??

kopierst du etwa jedes einzelne feld(ohne markieren)? oder sind es mehrere felder(getrennt) in einer datei?

0
@googleFTW

ah mom du willst auch dass wenn die zahlen sich in der einen datei verändern dass die sich dann auch in anderen ändern?

0
@googleFTW

Ja, es sind 34 Zeilen pro Monat. Immer Spalte D:AH. Z.b. Zeile 6, Zeile 8, Zeile 12, Zeile 14 etc. aber immer D:AH. Zellbereich D6:AH6 wird in Dokument 1 kopiert und dann in z.B. in Feld D5 in Dokument 2 eingefügt. Danach Zellbereich D8:AH8 kopiert und in Feld D7 eingefügt usw. Das passiert 34 mal. Dann ist ein Monat durch. Die Zahlen sind fix, d.h. nach einmal kopieren und einfügen, müssen sie nicht mehr geändert werden. Diese Zellbereiche (D6:AH6 und D5 etc.) habe ich für das komplette Jahr aufgeschrieben - darauf könnte das Macro also zugreifen (mit einer Offset-Formel vllt, weil der nächste Werte jeweils 1 Zeile unter dem vorigen steht...).

0

Aus Adobe Reader kann ich nichts mehr kopieren?

Hallo,

seit ein paar Tagen habe ich ein Problem mit dem Adobe Reader. Früher konnte ich einfach einen Text aus dem PDF - Dokument rauskopieren und z. B. in eine Excel - Liste einfügen.

Leider habe ich nun seit ein paar Tagen das Problem, dass ich weder den Text kopieren kann, noch in ein anderes Dokument übertragen kann.

Woran liegt das?

Muß ich nun eine Premium - Mitgliedschaft abschließen um die Funktion zu nutzen? Was kann ich machen bzw. aktivieren um meine seit langen gewohnte Funktion zu nutzen? Gibt es ggf. eine Alternative zu Adobe Reader wo ich meinen Text aus dem PDF - Dokument rauskopieren und z. B. in einem Word-, bzw. Excel - Dokument einfügen kann?  

 Vielen Dank für eine nützliche Antwort.

...zur Frage

VBA - Neue Excel Datei erzeugen und diese mit Werten aus einer Collection füllen?

Hallo Leute,

ich habe in VBA eine Collection mit Member Objekten.

Nun habe ich mir eine Schleife gebaut, die durch alle Member Objekte durchläuft und eine neue Excel Datei erzeugt. Die Namen der jeweiligen Member Objekte sollen jetzt in die neue Excel Datei übertragen werden. Was mache ich falsch?

Dim member As auftrag
Dim number As Integer
number = 0
Set workbooks3 = Workbooks.Add
ActiveWindow.Caption = "Members"
Set sheet3 = workbooks3.Worksheets(1)




 For Each member In members




    If member.GetHours > 0 Then
    
  
      
    Cells(number, "A").Value = member.GetName
    number = number + 1



    End If
    
    
  
  
Next member
...zur Frage

Excel VBA Hyperlink setzten?

Hallo Gutefrage Users,

ich versuche schon seit einer weile was auf VBA von Excel 2016 laufen zu bekommen.

Also erstmal die aufstellung.

Ich habe eine Excel Datei, habe die Codes eingerpägt und natürlich Name Vorname sind drinnen.

Sobald ich sagen wir mal einen Azubi in die Datei mit selbst erstellten Fenster die Daten eingebe, entsprechend dann auf "Erstellen" anklicke, erstellt die Datei automatisch für mich ein "AzubiProfil" wo ich dann weiß wann die Prüfungen sind etc, gebe ich ja im selbst erstellen Fenster ein.

Doch, das einzige was ich nicht hinbekomme ist das automatische Hyperlink einzufügen per VBA. Ich habe eine Übersicht mit der Liste der Nachnamen, diese Nachnamen sollen zu den Tabellenblatt verbunden sein, das Tabellenblatt hat den gleichen Nachnamen.

Wie ist der Code dafür sodass die Hyperlink erstellung den Namen aussliest und natürlich entsprechend auch korrekt verlinkt ist?

...zur Frage

Mit VBA Excelliste automatisch aktualisieren?

Ich habe einen Ordner in dem ich meine Reparaturaufträge sammel. Nun habe ich ein weiteres Excel Dokument, eine Liste, in die ich wesentliche Informationen der Reparaturaufträge eintrage.

Meine Reparaturaufträge haben ja immer einen anderen Namen, z.B 052-AA-17, 052-AB-17, 052-AC-17, 052-AD-17 usw. in diesen Reparaturaufträgen sind folgende Informationen die ich in dieser Liste brauche: Kunde(A18), Abrufnummer(B19), Lieferadresse(A8), Bezeichnung der Baugruppe(A29) und das Einsendedatum(G16).

Nun sollen diese Daten in ein anderes Exceldokument übertragen werden ohne das ich per Hand ergänzen muss. (Die Liste dient der überprüfung)

Nun das neue Exceldokument heißt _GFT_Reparaturauftragsliste

Die Wert aus den Verschiedenen Reparaturaufträgen sollen nun in dieser Liste gesammelt werden, dass heißt also z.B:

In _GFT_Reparaturaufträge sollen jetzt also die Werte aus dem Dokument 052-AA-17 übertragen werden und zwar in folgende Zellen.

Abrufnummer Auftrag B19 nach Liste A2
Lieferadresse Auftrag A8 nach Liste B2
Bezeichnung der Baug. Auftrag A29 nach Liste C2
Kunde Auftrag A18 nach Liste D2
Einsendedatum G16 nach Liste E2

So und wenn nun in den Ordner der offenen Reparaturaufträge ein neues Dokument kommt, also 052-AB-17, sollen diese Werte in die nächste Zeile, A3, B3 usw übertragen werden.

Ich hoffe ich konnte erklären wie ich das meine.

...zur Frage

In Excel mit Visual Basic Zellen leeren

Hallo zusammen,

ich würde gerne über Visual Basic, wenn eine bestimmte if Bedingung erfüllt ist (bekomme ich hin), einen Zellbereich leeren (Formatirung soll erhalten bleiben, also nur Hintergrundfarbe und Inhalt löschen), z.B. 2B bis 6E. Kann mir jemand hierbei helfen? Ich weiß leider weder wie ich eine Aktion für einen Zellbereich ausführe (es werden mehrere Zellbereiche werden) noch weiß ich, wie ich über Visual Basic Zellen leeren kann.

Gruß

...zur Frage

[VBA] - Bestimmte Daten auslesen und vergleichen?

Servus Freunde, ich sitze zurzeit an einem Makro mit dem ich bestimmte Daten vergleichen will.

Also als Beispiel habe ich eine Excel Tabelle mit folgenden Daten:

  1. Erste Prüfung (Datum)
  2. Zeitraum bis neue Prüfung (Zahl z.B. 12 [Monate])
  3. Letzte Prüfung (Datum)

So nun möchte ich herausfinden ob, seit dem letztem öffnen der Excel Datei, eine neue Prüfung fällig ist.

Mein Pseudocode sieht aktuell so aus, jedoch habe ich keinen Schimmer wie ich das in VBA umsetzen kann:

Schleife die durch alle Zeilen läuft

Schleife für X Jahre

if Aktuelles Datum > Datum Erste Prüfung + X*(Zeitraum bis neue Prüfung) > Letzte Prüfung

Then Letzte Prüfung = Aktuelles Datum und MSGBox

Beispiel:

Aktuelles Datum: 25.03.2018
Erste Prüfung: 22.05.2014
Zeitraum: 12 Monate
Letzte Prüfung: 14.02.2017

-> Erste Prüfung + 3*12Jahre = 22.05.2017

Aktuelles Datum > 22.05.2017 > Letzte Prüfung

In diesem Fall müsste also eine neue Prüfung durchgeführt werden und das Datum der letzten Prüfung auf aktuelles Datum setzen.
Das Makro soll immer beim Öffnen der Excel Datei ausgeführt werden und dafür habe ich folgendes benutzt:

Private Sub Workbook_Open()
call "Automatic" 
End Sub

Automatic soll das Makro sein wo später die Datumsprüfung durchgeführt wird.

Allerdings bekomme ich zurzeit noch einen Syntax Fehler für das automatische Makro ausführen.

Ich hoffe ihr konntet mir irgendwie folgen. Bei Fragen stehe ich natürlich gern zur Verfügung.

...zur Frage

Was möchtest Du wissen?