Registriert seit: 11.02.2015
Version(en): Office 2013
Hallo,
da ich nur Grundkenntnisse in Excel besitze, habe ich ein Problem und hoffe, dass mir jemand helfen kann: Und zwar möchte ich mehrere markierte Wörter, die durch Kommas getrennt sind, aus einem Dokument (meistens PDF) herauskopieren und anschließend in Excel hineinkopieren (so ca. 5 bis 15 Wörter). Diese Wörter sollen als Ziel alle in einer Zeile sein, wo jedes Wort in einer eigenen Zelle ist. Die Reihenfolge der Wörter sollte dabei eingehalten werden. Das Reinkopieren in Excel mit Kommatrennung ist kein Problem, jedes Wort ist also schon in einer eigenen Zelle. Leider passiert es (aufgrund der Formatierung des kopierten Textes) fast immer, dass z.B. 3 Wörter in der ersten Zeile sind, 4 Wörter in der zweiten Zeile und 2 Wörter in der dritten Zeile. Außerdem sind immer mal wieder überflüssige Leerzeichen in den Zellen. Es ist also eigentlich nie nur eine einzelne Zeile, was aber das Ziel wäre. Das alles per Hand zu ordnen wäre zu aufwändig, da ich das geschätzt einige hundert Male machen muss. Ich habe schon im Internet gesucht und nichts gefunden, was bei mir funktioniert. Wie kann ich dieses Problem in den Griff bekommen? Für jeden Tipp bin ich echt dankbar.
Gruß Eric
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi Eric,
füge deine kopierten Wörter in eine Zelle (z.B. A1) ein und gehe dann zu Daten==> Text in Spalten. Anklicken und "Getrennt" markieren. Mit "weiter" zur nächsten Maske schalten und als Trenner Komma und Leerzeichen anhaken. Dann "Fertigstelle" anklicken.
Nun hast du in jeder Zelle nur noch ein Wort.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 11.02.2015
Version(en): Office 2013
Hallo,
danke aber das hilft mir nicht, so habe ich das ja gleich am Anfang versucht. Denn wie ich im ersten Post erwähnte werden schon beim Einfügen in Excel nicht alle Wörter nur in eine Zelle kopiert, sondern in mehrere Zellen, wie z.B.: 3 Wörter in der ersten Zeile, 4 Wörter in der zweiten Zeile und 2 Wörter in der dritten Zeile. Den Textkonvertierungs-Assistent habe ich dafür schon genutzt, so dass die Wörter jeweils eine eigene Zelle haben, nur halt wie im oben genannten Beispiel 3 Zeilen und nicht eine. Ich hoffe, ich habe das verständlich genug beschrieben.
MFG
Registriert seit: 01.11.2014
Version(en): 2007, 2010
11.02.2015, 21:05
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2015, 21:06 von Max.)
Hi Eric,
kannst Du eine PDF aus der Du heraus kopierst zum Testen bereitstellen? Ich hätte da einen Ansatz würde das aber gerne vorher testen bevor ich Dich darauf los lasse.
Gruß Max
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
11.02.2015, 21:07
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2015, 21:07 von schauan.)
Hallo Eric, das wird wahrscheinlich nur mit einem Makro gehen. Hier ist mal ein erster Ansatz. Die Daten werden spaltenweise übertragen. Für eine festgelegte Reihenfolge müsste man das Makro noch ausbauen. DIe pdf-Daten ab Zeile 2 einfügen. Leerzeichenentfernung ist noch nicht dabei. Code: Option Explicit Sub EineZeile() 'Variablendeklarationen 'Bereich Dim txtCell As Range 'Long Dim iCnt& 'Schlife ueber alle Textzellen For Each txtCell In ActiveSheet.Cells.SpecialCells(xlTextValues) 'Zaehler hochsetzen iCnt = iCnt + 1 'naechste Zelle in Zeile 1 ausfuellen Cells(1, iCnt) = txtCell 'Ende Schlife ueber alle Textzellen Next End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Eric, ebenfalls eine Makrovariante. Der Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes. Code: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim oData As New DataObject, varW As Variant On Error Resume Next oData.GetFromClipboard varW = Split(Application.WorksheetFunction.Clean(oData.GetText), " ") Target.Resize(1, UBound(varW) + 1).Value = varW End Sub
Siehe dazu auch hier und beachte bitte den Hinweis mit der UserForm: http://www.online-excel.de/excel/singsel_vba.php?f=28Per Doppelklick auf eine Zelle wird der Textinhalt der Zwischenablage in die angeklickte Zelle und die rechts folgenden Zellen eingefügt. Du kopierst also Text in der PDF und fügst diesen per Doppelklick auf eine Excelzelle wieder ein. Gruß Uwe
Registriert seit: 11.02.2015
Version(en): Office 2013
Hallo,
erst einmal danke an alle für die schnellen Antworten :) Ich habe jetzt mal Uwes Code ausprobiert... nun bekomme ich eine Zeile, mit einem Wort pro Zelle. Nun ist mir aber aufgefallen, dass ich etliche Wörter eh noch bearbeiten muss. Ist es möglich, dass mir ein Makro den kopierten Inhalt als Spalte und nicht als Zeile widergibt (so wird es für mich übersichtlicher) und Kommas als Trennungszeichen erkennt und gleichzeitig alles nach einem Leerzeichen ignoriert (also das nicht in die Zelle mit einkopiert)?
Gruß Eric
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Eric, so kommt es untereinander: Code: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim oData As New DataObject, varW As Variant On Error Resume Next oData.GetFromClipboard varW = Split(Application.WorksheetFunction.Clean(oData.GetText), " ") Target.Resize(UBound(varW) + 1, 1).Value = Application.Transpose(varW) Target.EntireColumn.AutoFit End Sub
Zitat:Ist es möglich, dass mir ein Makro den kopierten Inhalt als Spalte und nicht als Zeile widergibt (so wird es für mich übersichtlicher) und Kommas als Trennungszeichen erkennt und gleichzeitig alles nach einem Leerzeichen ignoriert (also das nicht in die Zelle mit einkopiert)? Das erklärst Du besser mal mit einem Vorher-Nacher-Vergleich. Gruß Uwe
Registriert seit: 11.02.2015
Version(en): Office 2013
Hallo,
danke (das geht ja echt fix hier^^). Dann versuche ich mal eine Beschreibung: wenn ich fogendes kopiere: "Wort1, Wort2 (Text1), Wort3 (Text2), Wort4, Wort5 (Text3), Wort6"
soll idealerweise das dabei herauskommen (keine Kommas, keine Leerzeichen und nichts in Klammern, also wirklich nur das erste Wort vor dem Komma): Wort1 Wort2 Wort3 Wort4 Wort5 Wort6
falls es so aussieht ist es auch OK aber so habe ich halt viel per Hand zu ändern: Wort1 Wort2 (Text1) Wort3 (Text2) Wort4 Wort5 (Text3) Wort6
Ich hoffe das war verständlich :)
MFG
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Eric, Code: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Long, oData As New DataObject, varW As Variant On Error Resume Next oData.GetFromClipboard varW = Split(Application.WorksheetFunction.Clean(oData.GetText), ", ") For i = 1 To UBound(varW) varW(i) = Left(varW(i), InStr(1, varW(i), " ") - 1) Next i Target.Resize(UBound(varW) + 1, 1).Value = Application.Transpose(varW) Target.EntireColumn.AutoFit End Sub
Gruß Uwe
|