Kommentare in Zellentext umwandeln?

Guten Morgen, Wissende,

ich möchte Daten aus einer Excel-Tabelle in eine Datenbank importieren; die Kommentare, die sich teilweise in den Zellen befinden, hätte ich gern in einer Extra-Spalte, um sie nicht alle einzeln kopieren und einfügen zu müssen.

Gibt es da einen Weg? Ich bin für jede Vereinfachung dankbar!

Danke schon mal,

Verena

Hi Verena

Gibt es da einen Weg? Ich bin für jede Vereinfachung dankbar!
Danke schon mal,

ja, gibt es - allerdings nur über Makro Programmierung…

mit dem Befehl
Range(„A1“).Comment.Text
wird der Kommentar aus Zelle A1 angesprochen und kann so ausgelesen werden.
Das Problem ist, dass man eine Fehlermeldung erhält, wenn es keinen Kommentar gibt…

Man müsste also ein-zwei Makros schreiben, die die Fehler auffangen und die Kommentare nacheinander in die Zielspalte schreiben…

Um welche Menge an Kommentaren geht es denn?

Hi Verena

Hallo,
danke erst mal für die schnelle Antwort!

ja, gibt es - allerdings nur über Makro Programmierung…

Oh je, damit kenn ich mich gar nicht aus - die einzigen Makros, die ich je erstellt habe, habe ich über die Record-Funktion gemacht. Sagst Du mir bitte noch gleich, wie und wo man das hinschreibt, bitte?

mit dem Befehl
Range(„A1“).Comment.Text
wird der Kommentar aus Zelle A1 angesprochen und kann so
ausgelesen werden.
Das Problem ist, dass man eine Fehlermeldung erhält, wenn es
keinen Kommentar gibt…
Man müsste also ein-zwei Makros schreiben, die die Fehler
auffangen und die Kommentare nacheinander in die Zielspalte
schreiben…
Um welche Menge an Kommentaren geht es denn?

Ich fürchte, um Hunderte … zumindest mindestens 100. Es geht um eine Datei mit ca. 4.500 Einträgen, und die Kommentare sind dummerweise auch noch auf mehrere Zellen verteilt. Ich habe die Kommentare zwar schon in Extra-Spalten kopiert und anzeigen lassen, aber so richtig hilft mir das auch nicht weiter.
Aber wenn es dafür keine einfache Lösung gibt, kann ich dem Kollegen auch sagen, er darf seine Kommentare selbst übertragen :smile:)
Gruß Verena

danke erst mal für die schnelle Antwort!

kein Problem :wink:

ja, gibt es - allerdings nur über Makro Programmierung…

Oh je, damit kenn ich mich gar nicht aus - die einzigen
Makros, die ich je erstellt habe, habe ich über die
Record-Funktion gemacht. Sagst Du mir bitte noch gleich, wie
und wo man das hinschreibt, bitte?

Wenn Du Alt+F11 drückst kommst Du in den Visual Basic Editor.
Einfacher ist es aber ein „dummy“ Makro aufzunehmen, dann Alt+F8 drücken, das Makro anwählen und auf bearbeiten zu gehen…
Ansonsten könntest Du schnell in einer Ansicht landen, wo die Makros nur in einem Tabellenblatt funktionieren…

Ich fürchte, um Hunderte … zumindest mindestens 100. Es geht
um eine Datei mit ca. 4.500 Einträgen, und die Kommentare sind
dummerweise auch noch auf mehrere Zellen verteilt.

Und was wäre, wenn 2 Kommentare drin stehen? einer in A1 und einer in C1?

Ich habe
die Kommentare zwar schon in Extra-Spalten kopiert und
anzeigen lassen, aber so richtig hilft mir das auch nicht
weiter.
Aber wenn es dafür keine einfache Lösung gibt, kann ich dem
Kollegen auch sagen, er darf seine Kommentare selbst
übertragen :smile:)
Gruß Verena

naja… man kann dafür schon ein Makro schreiben…
fragt sich halt, ob Du das dann reinbasteln kannst…
Was zahlt Dein Kollege? *sfg*
wenn die Daten nicht vertraulich sind kannst Du mir die Datei ja mal schicken und ich schaus mir an…

Grüße
Munich

ich möchte Daten aus einer Excel-Tabelle in eine Datenbank
importieren; die Kommentare, die sich teilweise in den Zellen
befinden, hätte ich gern in einer Extra-Spalte, um sie nicht
alle einzeln kopieren und einfügen zu müssen.

Moin Verena,

Alt+F11, Einfügen–Modul, Code reinkopieren, ggfs. die Ausgabespalte anpassen, Editor schließen.

Start des Makros in Excel: Extras–Makro–Makro… Komm ausführen

Das Makro listet im gerade aktiven Tabellenblatt alle Kommentare einer Zeile in den Zellen ab Spalte J auf.
Im Code ist dokumentiert was du ändern mußt um J abzuändern.

Option Explicit
'
Sub Komm()
Dim rngKomm As Range, rngK As Range, Spa As Long
On Error Resume Next
Set rngKomm = ActiveSheet.UsedRange.SpecialCells(xlCellTypeComments)
If rngKomm.Cells.Count 

Gruß
Reinhard

Hi München :wink:

Wenn Du Alt+F11 drückst kommst Du in den Visual Basic Editor.
Einfacher ist es aber ein „dummy“ Makro aufzunehmen, dann
Alt+F8 drücken, das Makro anwählen und auf bearbeiten zu
gehen…
Ansonsten könntest Du schnell in einer Ansicht landen, wo die
Makros nur in einem Tabellenblatt funktionieren…

Danke sehr!

Und was wäre, wenn 2 Kommentare drin stehen? einer in A1 und
einer in C1?

Eigentlich vermute ich, dass immer nur entweder da oder dort was drinsteht. Aber wenn es so sein sollte, dann würde einer reichen, den andern kann man ja immer noch manuell eintragen.

naja… man kann dafür schon ein Makro schreiben…
fragt sich halt, ob Du das dann reinbasteln kannst…
Was zahlt Dein Kollege? *sfg*

Gar nix, und eigentlich mag ich ihn nicht mal besonders … bei näherer Betrachtung lass ich ihn doch lieber selber ackern *breitgrins*.

wenn die Daten nicht vertraulich sind kannst Du mir die Datei
ja mal schicken und ich schaus mir an…

Nee, sorry, da hat er sich etwas zickig. Aber ich probier Deinen Vorschlag gern mal aus, nur für mich allein, zur Fortbildung. Brauchst Dir nicht die Mühe zu machen, noch ein Extra-Makro zu schreiben - außer, Du bist ganz scharf drauf -, ich nehm den guten Willen für die Tat. Ich hatte ja gehofft, es gäbe einen Befehl, so was in der Richtung ZEILE(), nur eben für Kommentar. Aber wenn das so arbeitsaufwändig ist … lohnt sich vielleicht doch nicht für irgendjemanden.
Danke, thanks, merci, grazie, teşekkürler …
LG, Verena

Hi München :wink:

hehe

Danke sehr!

keine Ursache

Eigentlich vermute ich, dass immer nur entweder da oder dort
was drinsteht. Aber wenn es so sein sollte, dann würde einer
reichen, den andern kann man ja immer noch manuell eintragen.

naja - Reinhard’s Lösung scheint doch zu taugen für sowas, oder? :wink:

Gar nix, und eigentlich mag ich ihn nicht mal besonders …
bei näherer Betrachtung lass ich ihn doch lieber selber ackern
*breitgrins*.

*schmunzel* klingt fast so als wäre es Dein Chef ^^

Nee, sorry, da hat er sich etwas zickig. Aber ich probier
Deinen Vorschlag gern mal aus, nur für mich allein, zur
Fortbildung. Brauchst Dir nicht die Mühe zu machen, noch ein
Extra-Makro zu schreiben - außer, Du bist ganz scharf drauf -,
ich nehm den guten Willen für die Tat. Ich hatte ja gehofft,
es gäbe einen Befehl, so was in der Richtung ZEILE(), nur eben
für Kommentar. Aber wenn das so arbeitsaufwändig ist … lohnt
sich vielleicht doch nicht für irgendjemanden.

Falls Du das Makro von Reinhard nicht hinkriegst hab ich auch noch eins geschrieben - rein aus Lust und Laune und weil ich sehen wollte ob ich das hinkriege - war eigentlich garnicht so schwer…
Man müsste es halt ggf. noch auf Deine Bedürfnisse anpassen…
Meld Dich einfach bis ca 16 Uhr noch, wenn ich den code hier posten soll… :wink:

Danke, thanks, merci, grazie, teşekkürler …
LG, Verena

tesewas??

LG
Munich

Alt+F11, Einfügen–Modul, Code reinkopieren, ggfs. die
Ausgabespalte anpassen, Editor schließen.

Das versteh ich nun wieder gar nicht :frowning:(
Aber ich glaub, ab Spalte J würde reichen.
Oder meinst Du, J ist die Ausgabespalte? Dann müsste ich die ändern … ja, scheint so.
Seh ich das richtig, dass alles, was vor Spalte 10 = J steht, ausgelesen wird und in J ausgegeben? Dann komm ich klar.

Gruß
Reinhard

Vielen Dank, ich werde das ausprobieren.
LG, Verena

naja - Reinhard’s Lösung scheint doch zu taugen für sowas,
oder? :wink:

Sieht für mich als Laien so aus.

Gar nix, und eigentlich mag ich ihn nicht mal besonders …
bei näherer Betrachtung lass ich ihn doch lieber selber ackern
*breitgrins*.

*schmunzel* klingt fast so als wäre es Dein Chef ^^

Nein, nur ein etwas undankbar scheinender Gleichgestellter von einem anderen Standort.

Falls Du das Makro von Reinhard nicht hinkriegst hab ich auch
noch eins geschrieben - rein aus Lust und Laune und weil ich
sehen wollte ob ich das hinkriege - war eigentlich garnicht so
schwer…
Man müsste es halt ggf. noch auf Deine Bedürfnisse anpassen…
Meld Dich einfach bis ca 16 Uhr noch, wenn ich den code hier
posten soll… :wink:

Ich denke und hoffe, ich krieg es hin … aber jetzt hab ich Blut gerochen *g* und will - bzw. würde gern - auch noch den Rest von Dir haben. Au ja! Bitte poste ihn, ich bin schon ganz gespannt!

tesewas??

Teşekkürler heißt auf türkisch danke.
Und kiitos auf finnisch. Ich hab das nämlich mal gesammelt.
LG, Verena

Hallo Verena,

Oder meinst Du, J ist die Ausgabespalte? Dann müsste ich die
ändern … ja, scheint so.
Seh ich das richtig, dass alles, was vor Spalte 10 = J steht,
ausgelesen wird und in J ausgegeben? Dann komm ich klar.

jain, aber sehr sehr nah dran, sind aber Codedetails die für dich nicht wichtig sind, also siehst du es so gesehen richtig)

(jain = der Code sucht alle Zellen im gesamten Blatt ab nach Kommentaren, also auch Spalten die rechts von J stehen)

Ich habe den Code für A1-Schreibweisen-Benutzer (ich auch *gg*) umgeschrieben, du kannst jetzt den Spaltenbuchstaben oben im Code anpassen bei Bedarf.

Wenn du den ersten Code ausprobiert hast, hast du ja schon ein Modul mit Namen"Modul1" im Vb-Editor.
Jetzt also nur noch Alt+F11, Doppelklick auf „Modul1“, die dort vorhandene prozedur „Komm“ umbenennen in „Komm2“, dann den neuen Code untendran reinkopieren, ggfs. „J“ abändern, Editor schließen.

Sub Komm()
Dim rngKomm As Range, rngK As Range, Spa As Long, A As Long
Const Ausgabespalte As String = "J" ' Hier Ausgabespalte anpassen
On Error Resume Next
Set rngKomm = ActiveSheet.UsedRange.SpecialCells(xlCellTypeComments)
If rngKomm.Cells.Count 

Gruß
Reinhard

Nachsatz: Hat geklappt, es waren genau 697 Kommentare … und sie wurden sogar, wenn mehrere in einer Zeile waren, nebeneinander eingetragen. Super, danke Reinhard! Und Sternchen.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Nachsatz: Hat geklappt, es waren genau 697 Kommentare … und
sie wurden sogar, wenn mehrere in einer Zeile waren,
nebeneinander eingetragen. Super, danke Reinhard! Und
Sternchen.

Danke dir,

und zu deinem „bösen“ Kollegen, soll ich das Makro umschreiben daß es nur bei dir funktioniert, andernfalls kommt eine Fehlermeldung „Fehlbedienung, Excel wird heruntergefahren, nicht gespeicherte daten sind verloren“? *gg*

Gruß
Reinhard

*schmunzel* klingt fast so als wäre es Dein Chef ^^

Nein, nur ein etwas undankbar scheinender Gleichgestellter von
einem anderen Standort.

solche gibts ja leider überall *seufz*

Falls Du das Makro von Reinhard nicht hinkriegst hab ich auch
noch eins geschrieben - rein aus Lust und Laune und weil ich
sehen wollte ob ich das hinkriege - war eigentlich garnicht so
schwer…
Man müsste es halt ggf. noch auf Deine Bedürfnisse anpassen…
Meld Dich einfach bis ca 16 Uhr noch, wenn ich den code hier
posten soll… :wink:

Ich denke und hoffe, ich krieg es hin … aber jetzt hab ich
Blut gerochen *g* und will - bzw. würde gern - auch noch den
Rest von Dir haben. Au ja! Bitte poste ihn, ich bin schon ganz
gespannt!

Kein Problem :smile:
ist vermutlich leichter nachzuvollziehen als Reinhards Code - aber nicht so elegant :wink:
x und y sind die jeweiligen „Koordinaten“ bis wohin es gemacht werden soll…
also wäre y bei Dir etwa 4500 und x = 9 bedeutet, dass er von Spalte A 9 Schritte nach rechts geht und bis dahin die Kommentare sucht.
Im zweiten Makro wird die Zielspalte angegeben (Range(„J“ & mypos))
Da steht im Moment Spalte J drin…
Man könnte auch leicht ein
Range(„J“ & mypos).Value = Range(„J“ & mypos).Value & com
draus machen - das würde dann die Kommentare „addieren“ - also in der gleichen Zelle hintereinander schreiben…
Hier nun der code:

Sub kommentarekopieren()

x = 9
y = 10

Application.ScreenUpdating = False

For i = 0 To y Step 1
 For j = 0 To x Step 1
 Range("A1").Offset(i, j).Select
 Application.Run "copycomment"
 Next j
Next i
Application.ScreenUpdating = True

End Sub

Private Sub copycomment()

On Error GoTo fehler:
 com = Selection.Comment.Text
 mypos = Selection.Row
 Range("J" & mypos).Value = com
fehler:
End Sub

tesewas??

Teşekkürler heißt auf türkisch danke.
Und kiitos auf finnisch. Ich hab das nämlich mal gesammelt.

cool :smile:
und das merkst Du Dir alles? :wink:
ich bin ja schon froh, dass ich das auf deutsch kann ^^
Von daher:
graag gedaan :smiley:

Munich

1 Like

Sub kommentarekopieren()

x = 9
y = 10

Application.ScreenUpdating = False

For i = 0 To y Step 1
For j = 0 To x Step 1
Range(„A1“).Offset(i, j).Select
Application.Run „copycomment“
Next j
Next i
Application.ScreenUpdating = True

End Sub

Private Sub copycomment()

On Error GoTo fehler:
com = Selection.Comment.Text
mypos = Selection.Row
Range(„J“ & mypos).Value = com
fehler:
End Sub

Klasse, danke! Auch für die Erläuterung. Aber der Dummy in mir fragt noch, ob das nun jetzt ein Makro ist (sprich zusammen da reinkopiert wird)?

tesewas??

Teşekkürler heißt auf türkisch danke.
Und kiitos auf finnisch. Ich hab das nämlich mal gesammelt.

cool :smile:
und das merkst Du Dir alles? :wink:

Naja, türkisch (und das finnische Wort) hab ich erst vor ein paar Jahren etwas gelernt. Soo lange merk ich mir das denn auch nicht.

Von daher:
graag gedaan :smiley:

Und was heißt das jetzt? Gut gemacht auf flämisch?

Munich

LG, Verena

Sub kommentarekopieren()
Private Sub copycomment()

Klasse, danke! Auch für die Erläuterung. Aber der Dummy in mir
fragt noch, ob das nun jetzt ein Makro ist
(sprich zusammen da reinkopiert wird)?

jein…
es sind 2 Makros - wobei das erste das zweite aufruft.
Das PRIVATE vor dem zweiten Makro bedeutet nur, dass es vor dem Dialog im Alt+F8 Bildschirm ausgeblendet wird (so dass man es nicht aus versehen aufrufen kann).
Einfügen muss man es als ganzes in das Modul - die trennung der beiden erfolgt rein durch den code :smile:

Von daher:
graag gedaan :smiley:

Und was heißt das jetzt? Gut gemacht auf flämisch?

so ähnlich :wink:
das bedeutet soviel wie „gern geschehen“ und ist die antwort auf ein „dank je“ bzw „bedankt“ :smile:
Dürfte Niederländisch sein - also nur verwandt mit dem Flämischen…

Einfügen muss man es als ganzes in das Modul - die trennung
der beiden erfolgt rein durch den code :smile:

Jo, danke - hatte es schon so, wie es war (mit den Änderungen des Bereichs und der Ausgabespalte, also beim zweiten Versuch *lach*) reinkopiert.
Hat super geklappt! Und diese Lösung ist sogar die (für mich) elegantere - sorry, Reinhard -, weil sie gleich alles in eine Zelle schreibt, das spart mir noch einen Weg.

Von daher:
graag gedaan :smiley:

Und was heißt das jetzt? Gut gemacht auf flämisch?

so ähnlich :wink:
das bedeutet soviel wie „gern geschehen“ und ist die antwort
auf ein „dank je“ bzw „bedankt“ :smile:
Dürfte Niederländisch sein - also nur verwandt mit dem
Flämischen…

Danke, wieder was dazugelernt. Ein Bekannter von mir meinte nämlich mal, das, was in Belgien und den Niederlanden gesprochen wird, sei flämisch, evtl. nur verschiedene Dialekte. Aber egal, ich sag jedenfalls zu Deinem Makro noch eins der anderen 2 - 3 niederländischen Wörter, die ich kenne: Gefeliciteerd!
Danke an alle,
Verena

Jo, danke - hatte es schon so, wie es war (mit den Änderungen
des Bereichs und der Ausgabespalte, also beim zweiten Versuch
*lach*) reinkopiert.
Hat super geklappt! Und diese Lösung ist sogar die (für mich)
elegantere - sorry, Reinhard -, weil sie gleich alles in eine
Zelle schreibt, das spart mir noch einen Weg.

na wunderbar :smile:
Und Du bist wahrscheinlich jetzt begeistert von der Möglichkeit von Makros und damit ein neuer VBA-Fan? :wink:

Von daher:
graag gedaan :smiley:

Und was heißt das jetzt? Gut gemacht auf flämisch?

so ähnlich :wink:
das bedeutet soviel wie „gern geschehen“ und ist die antwort
auf ein „dank je“ bzw „bedankt“ :smile:
Dürfte Niederländisch sein - also nur verwandt mit dem
Flämischen…

Danke, wieder was dazugelernt. Ein Bekannter von mir meinte
nämlich mal, das, was in Belgien und den Niederlanden
gesprochen wird, sei flämisch, evtl. nur verschiedene
Dialekte. Aber egal, ich sag jedenfalls zu Deinem Makro noch
eins der anderen 2 - 3 niederländischen Wörter, die ich kenne:
Gefeliciteerd!

hihi danke ^^
Naja - es gibt denke ich mehrere Sprachstile in den BeNeLux Staaten.
Das Flämische ist wohl eher dem deutschen ähnlich…
Ähnlich wie in der Schweiz wird eben dann mehr französisch, Deutsch oder Italienisch gesprochen bzw beigemischt.
Mehr Informationen dazu gibts wie immer bei Wikipedia:
http://de.wikipedia.org/wiki/Fl%C3%A4mische_Dialekte

LG
Munich

PS
Danke für meinen 800. und 801. Stern *smile*

OT niederländische Eingabe
Hallo Verena,

Hat super geklappt! Und diese Lösung ist sogar die (für mich)
elegantere - sorry, Reinhard -, weil sie gleich alles in eine
Zelle schreibt, das spart mir noch einen Weg.

*seufz* Aber deine Entscheideidung und ich gönne dir deine Arbeitspause wenn du den Cod emal mit y = 65536 laufen läßt oder mal in Excel2007 über 1 Million Zeilen :smile:)

Wobei ich mich immer noch frage wer soviele Zeilen wirklich braucht und warum der dann nicht Access o.ä. nimmt…

Dürfte Niederländisch sein - also nur verwandt mit dem
Flämischen…

Danke, wieder was dazugelernt. Ein Bekannter von mir meinte
nämlich mal, das, was in Belgien und den Niederlanden

Kennst du einen der in den Niederlanden dortiges Excel hat?
Dann schua mal hier oben in der Beitragsliste, da sucht Rolf das niederländische Wort für EINGABE.

Gruß
Reinhard

*seufz* Aber deine Entscheideidung und ich gönne dir deine
Arbeitspause wenn du den Cod emal mit y = 65536 laufen läßt
oder mal in Excel2007 über 1 Million Zeilen :smile:)

*schmunzel*
ach was… Rechner müssen rechnen" :smile:

Wobei ich mich immer noch frage wer soviele Zeilen wirklich
braucht und warum der dann nicht Access o.ä. nimmt…

Access ist in manchen belangen doof und störrisch…
Versuch mal in Access auf den Zelleninhalt des Vorgängers zuzugreifen oder ähnliches… dazu muss man sich kreuz und quer verrenken um zu einem halbwegs zufriedenstellendem Ergebnis zu kommen…
Ich benutze wesentlich lieber Excel und nehme da lieber lange Wartezeiten in kauf - aber immer geht das nunmal nicht :frowning:
(Haben hier noch kein Office 2007)

Kennst du einen der in den Niederlanden dortiges Excel hat?
Dann schua mal hier oben in der Beitragsliste, da sucht Rolf
das niederländische Wort für EINGABE.

hab ihm mal geantwortet - vielleicht hilft das ja schon…