das ist wirklich der Hammer. Das mit der Summe funktioniert, ergal wie viele Zeilen ich einfüge die Summe wird richtig übertragen. Danke für dein Hilfe. Mir ist es schon unangenem zu Fragen aber ist es auch möglich die übertragung der Positionen OP unabhängig zu machen von den Text OP in der Spalte B in der Excel? Wenn ich den Text OP ändere in OP A dann funktioniert leider die Übertragung der Zahlen nicht mehr richtig. Kann man das so Programmieren, wenn in Spalte P keine Zahl steht, dann wird die Zahl in Spalte E genommen wenn dort eine Zahl drin steht?
Ich muss leider noch etwas Fragen: Mir ist aufgefallen, das sich ja die Positionenbennenung (Spalte B) mit der in der Excel und der in Word immer gleich sind. Ist es auch noch möglich das man die Items von oben nach unten übertragen kann von der Spalte B in der Excel zu den Marken in Word? Ich habe in der Word-Datei die Positionsnummer auch Marken vergeben. In Word steht ja der Text der Position immer zuerst und dann kommt die Zahl und dann wieder der Text und die Zahl. Somit wäre die Regel, dass die Marken von oben nach unten ausgefült werden sollen noch richtig. Das Programm müsste nur immer von Spalte B dann auf Spalte P und dann wieder Spalte B und dann wieder Spalte P springen bzw. wenn nicht in Spalte P steht dann zu Spalte E. Es ist auch noch wichtig, dass die Makro erst von Zeile 11 an den Text in Spalte B bzw. in Spalte P anfängt die Daten zu übertragen, alles was darüber steht soll nicht übertragen werden. Kann man da was machen?
Ich hoffe ich nerve dich nicht.
Das sind dann auch wirklich meinen letzten Fragen.
ja da hast du recht das geht leider nicht. Ich hätte aber eine andre Idee. Zu den Punkt OP: Ich würde in Spalte A ein x Eintragen wenn ich die Position OP habe. Die Makro müsste dann in Spalte A das x abfragen und dann den Wert in Spalte E nehmen, wenn nichts in Spalte P steht. Ich denke das ist so besser weil in der Spalte A sonst nichts eingetragen wird. In der Makro habe ich das so angepasst(Änderung in Rot):
If Mid(.Cells(i, 2), 1, 4) = "Item" Or .Cells(i, 1) = "x" Then
Ist das richtig?
Ich habe gestern Abend auch nochmal ausprobiert, ob die Makro in meiner Grund Excel-Datei auch funktioniert (siehe Anhang).
Es ist so das bei Aktivierung, sich das Suchfenster öffnet und ich dann die Word-Datei auswählen kann. Das funktioniert super. Doch leider überträgt er die Daten in die Word-Datei (siehe Anhang) nicht richtig. Ich denke das liegt daran, dass man der Makro noch sagen muss das er die Daten erst ab Zeile 45 übernehmen soll in seinen Speicher. Ich habe deine Zeilen so eingefügt in der Makro (Änderungen in Rot und Blau): Sub ÜbertragungvonDateninWord() Dim Pfad$, lz&, i&, j&, arrWerte(), arrTM(), arrItem(), Sum As Variant Dim WdApp As Object, wdDok As Object, objBkm As Object, rngBkm As Object With Tabelle1 For i = 45 To lz + 20 If Mid(.Cells(i, 2), 1, 4) <> "" Then j = j + 1 ReDim Preserve arrItem(1 To j) arrItem(j) = i End If Next i lz = .Cells(Rows.Count, 2).End(xlUp).Row For i = 1 To lz + 20 If Mid(.Cells(i, 2), 1, 4) = "Item" Or .Cells(i, 1) = "x" Then j = j + 1 ReDim Preserve arrItem(1 To j) arrItem(j) = i End If Next i usw.
Leider übernimmt er die Daten in die Word-Datei immer noch nicht richtig. Weist du was ich falsch gemacht habe oder falsch verstanden habe?
Zudem wollte ich noch Fragen ob es noch möglich ist die die Positionen mit zu übernehmen in die Word-Datei (in Marker Text)? Diese befinden sich in der Spalte B in der Excel-Datei und diese sind immer in der gleichen Zeile wie die Zahlen in Spalte P die übertragen werden sollen bzw. in Spalte E, wenn ein x sich in Spalte A befindet.
16.08.2024, 10:32 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2024, 10:33 von Egon12.)
Hallo ,
das muss so sein:
Code:
For i = 12 To lz + 20 ' du hattest 45 to drin stehen? If Mid(.Cells(i, 2), 1, 4) = "Item" Or .Cells(i, 1) = "x" Then j = j + 1 ReDim Preserve arrItem(1 To j) arrItem(j) = i End If Next i
das mit OP funktioniert jetzt. Er sucht nach den x in Spalte A.
Doch leider übernimmt er nicht in der richtigen reinfolge die Zahlen von Excel in Word.(siehe Anhang) Wenn ich die Daten übertragen lasse, zeigt mir die Excel an -> Index außerhalb des gültigen Bereichs Und in Word steht an den ersten Marker 4000 und nicht 2000. An der zweiten Position steht 2000 drin, soll aber 3000 sein. Position OP steht 14000 drin soll aber 4000 sein. Die Summe überträgt er leider auch nicht.
ja logisch, dass es nicht korrekt ist. Du hast statt Item1 Item2 ... nun 1 2 oder gar nichts in Spalte B drinstehen.
Die Zeile:
Code:
If Mid(.Cells(i, 2), 1, 4) = "Item" Or .Cells(i, 1) = "x" Then
sucht in Spalte B ob die ersten 4 Zeichen in der jeweiligen Zelle "Item" lauten.
Ich habe dir eigentlich gezeigt wie man so was nach deinen Vorgaben flexibel gelöst bekommt. Entweder markierst du in Spalte A alle Änfänge mit X also auch die Anfänge wo vorher Item1 in Spalte B drin standen oder du schreibst wieder die Item in Spalte B rein. Dann wird es normal sein Werk verrichten.
ja natürlich Sorry das ich es jetzt erst verstanden habe. Jetzt funktioniert es wieder perfekt.
Kannst du mir noch zeigen welche Zeile ich bei der Makro noch einfügen muss, damit auch die Items in der Spalte B in die Word-Datei zu den Markern von oben nach unten implementiert werden?
16.08.2024, 13:16 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2024, 13:16 von Egon12.)
Hallo Robert,
was meinst du mit implementiert?
Du hast im Word Dokument bereits Marker für die Item drin. Sollen diese mit dem Werten in Spalte B überschrieben werden?
Oder sollen neue Marker an bestimmten Stellen gesetzt werden. Das ist in Word nicht wirklich zu empfehlen, da dies sehr störanfällig ist und bleibt. Ich gehe mal davon aus, dass die Maker Text1 bis ... mit den Items und OP's in Spalte B überschrieben werden sollen.