Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1256to1260
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeileninhalte mit Komma trennen (VBA)

Zeileninhalte mit Komma trennen (VBA)
Henner
Hallo zusammen,
ich habe in Tabelle1 Spalte H ganz viele E-Mail Adressen untereinander eingetragen, jeweils 1 pro Zelle. Nun möchte ich alle diese E-Mail Adressen in den Zwischenspeicher legen, um sie im Anschluss im E-Mail Programm einfügen zu können. Dazu müssen die Adressen nicht nur nacheinander, sondern auch durch ein Semikolon getrennt in den Zwischenspeicher gelegt werden.
Frage 1: Funktioniert das überhaupt? (Max. 255 Zeichen kopieren?)
Frage 2: Wenn nein, liessen sich alle diese E-Mail Adressen in eine Textdatei exportieren? (Bitte nur im Notfall)
Vielen Dank & einen schönen Ostermontag
Gruß
IE.ParentWindow.ClipboardData.SetData "text", vbNu
09.04.2012 15:06:02
ransi
Hallo
Versuch mal:
Tabelle1

 AB
1Email@Emfänger1 
2Email@Emfänger2 
3Email@Emfänger3 
4Email@Emfänger4 
5Email@Emfänger5 
6Email@Emfänger6 
7Email@Emfänger7 
8Email@Emfänger8 
9Email@Emfänger9 
10Email@Emfänger10 
11  


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Und jetzt diesen Code:
Option Explicit

Public Sub schreiben()
Dim IE As Object
Dim DerText As String
Dim arr As Variant
arr = WorksheetFunction.Transpose(Range("A1:A10").Value)
DerText = Join(arr, ";")
Set IE = CreateObject("HTMLfile")
IE.ParentWindow.ClipboardData.SetData "text", vbNullString & DerText
Set IE = Nothing
End Sub


ransi
Anzeige
AW: IE.ParentWindow.ClipboardData.SetData "text", vbNu
09.04.2012 15:20:44
Henner
Hallo Ransi,
vielen Dank für Deine Antwort. Im Gegensatz zur Lösung von Reinhard hat Deine den Nachteil, dass die Anzahl der Einträge noch definiert werden muss. Diese Funktion ist bei Reinhard schon dabei.
Trotzdem nochmals besten Dank!
Greets Henner
AW: IE.ParentWindow.ClipboardData.SetData "text", vbNu
09.04.2012 15:28:32
ransi
Hallo Henner
...dass die Anzahl der Einträge noch definiert werden muss.
Wenns mehr nicht ist....
Option Explicit

Public Sub schreiben()
    Dim IE As Object
    Dim DerText As String
    Dim arr As Variant
    Dim L As Long
    L = Cells(Rows.Count, 8).End(xlUp).Row
    arr = WorksheetFunction.Transpose(Range("H1:H" & L).Value)
    DerText = Join(arr, ";")
    Set IE = CreateObject("HTMLfile")
    IE.ParentWindow.ClipboardData.SetData "text", vbNullString & DerText
    Set IE = Nothing
End Sub



Der Code kommt ohne den Verweis auf die FM20.Dll aus.
ransi
Anzeige
AW: IE.ParentWindow.ClipboardData.SetData "text", vbNu
09.04.2012 15:35:24
Henner
Hi,
danke jetzt ist es perfekt :-) Mit dem Verweis auf die FM20.Dll meinst Du den von mir hinterfragten Verweis von Reinhard?
Gruß Henner
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 15:09:02
Reinhard
Hallo Henner, Option Explicit Sub tt() 'Verweis auf MS Forms 2.0 Onject Library setzen! Dim MyData As New DataObject, Zei As Long, Adr As String With Worksheets("Tabelle1") For Zei = 1 To .Cells(Rows.Count, 8).End(xlUp).Row If .Cells(Zei, 8).Value "" Then Adr = Adr & ";" & .Cells(Zei, 8).Value End If Next Zei End With If Len(Adr) > 0 Then MyData.SetText Mid(Adr, 2) MyData.PutInClipboard End If End Sub
Gruß
Reinhard
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 15:22:38
Henner
Hallo Reinhard,
perfekt - genau das habe ich gesucht. Funktioniert auch einwandfrei, aber was hat es mit dem Verweis auf MS Forms noch auf sich?
Greets + Danke
Henner
Anzeige
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 15:47:51
Reinhard
Hallo Henner,
ohne den Verweis kennt Vba kein "DataObject".
Und ja, richtig vermutet, der Verweis ist der Verweis auf die FM20.dll.
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 15:59:24
Henner
Hallo again :-)
Bei mir funktioniert das ganze offensichtlich ohne den Verweis. Muss ich das nun noch machen um sicherzustellen, dass die Funktion auch auf anderen PCs zuverlässig ausgeführt wird?
Wenn ja: Wie?
Danke + Greets Henner
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 16:14:45
Hajo_Zi
Hallo Henner,
die Verweise sind an die Datei geheftet, wenn Du die datein verschickst ist der Verweis gesetzt.
Warum nicht die freie Lösung von Ransi?

Anzeige
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 16:47:00
Henner
Sorry, dass ich nochmal nachfragen muss. Wo genau muss ich meine Tabelle bei Ransis Code noch einsetzen?
Danke & Gruß
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 16:49:35
Hajo_Zi
Hallo Henner,
ich verstehe nur Bahnhof. Ransi hat doch eine Tabelle gepostet und falls Deine nicht so aussieht musst Du den Code anpassen.
Gruß Hajo
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 17:14:42
Henner
Hallo Hajo,
ich finde das recht easy. Ich muss doch dem Code sagen aus welcher Tabelle er die Daten holen soll, sonst nimmt er die Tabelle, die im Moment geöffnet ist - oder? Ok, ich könnte jetzt Sheets("Tabelle1").Select vor den Code schreiben, das möchte ich aber nicht.
Gruß Henner
Anzeige
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 17:17:21
Hajo_Zi
Hallo Henner,
Select, Activate usw. ist in VBA zu 99,9% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
With Sheets("Tabelle1")
End With
und vor alle Range, Cells ein Punkt.
Gruß Hajo
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 17:23:59
Henner
Salut,
die Story mit dem Dackel kenne ich, daher wollte ich es ja vermeiden. Habe den Code von Ransi nun angepasst:

Sub Schaltfläche10_BeiKlick()
Dim IE As Object
Dim DerText As String
Dim arr As Variant
Dim L As Long
L = Cells(Rows.Count, 8).End(xlUp).Row
arr = WorksheetFunction.Transpose(Sheets("ACM_DB").Range("H1:H" & L).Value)
DerText = Join(arr, "; ")
Set IE = CreateObject("HTMLfile")
IE.ParentWindow.ClipboardData.SetData "text", vbNullString & DerText
Set IE = Nothing
End Sub
Ein weiterer Nachteil dieser Variante ist, dass der Code leere Zellen (die auch vorkommen) nicht ignoriert und auch für diese ein Semikolon setzt. Das macht Reinhards Code nicht, dieser überspringt leere Zellen einfach. Wie liesse sich das bei Ransis Code realisieren?
Danke & Gruß
Anzeige
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 17:29:24
Hajo_Zi
es fehlt ein Sheets() vor Cells.
Da ist Ransi gefragt.
vielleicht
DerText = Application.Substitute(DerText, "; ;", "; ")
Gruß Hajo
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 17:40:07
Reinhard
Hallo Henner,
ungetestet:
Sub Schaltfläche10_BeiKlick()
Dim IE As Object, DerText As String, arr As Variant, L As Long
With Sheets("ACM_DB")
L = .Cells(.Rows.Count, 8).End(xlUp).Row
arr = WorksheetFunction.Transpose _
(.Range("H1:H" & L).SpecialCells(xlCellTypeConstants).Value)
End With
DerText = Join(arr, "; ")
Set IE = CreateObject("HTMLfile")
IE.ParentWindow.ClipboardData.SetData "text", vbNullString & DerText
Set IE = Nothing
End Sub

Gruß
Reinhard
Anzeige
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 17:48:55
Henner
Hallo,
funktioniert leider nicht. Abhängig davon wieviele leere Zellen es dazwischen gibt bricht er entweder ab (Laufzeitfehler 13: Typen unverträglich, Markierung bei: DerText = Join(arr, "; ")) oder er macht nach den leeren Zellen einfach nicht weiter.
Bin für weitere Hilfe sehr dankbar!
Gruß Henner
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 17:56:33
Hajo_Zi
Hallo Henner,
mein Vorschlag führte nicht zum erfolg?
Gruß Hajo
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 18:25:27
Henner
Hallo Hajo,
leider postet Du immer nur Fetzen. Vorausgesetzt ich habe Deinen Vorschlag korrekt eingebaut: Antwortet lautet nein.
Gruß Henner
Anzeige
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 18:37:56
Hajo_Zi
Hallo JHenner,
dann mache es so.
Option Explicit
Public Sub schreiben()
Dim IE As Object
Dim DerText As String
Dim arr As Variant
Dim L As Long
L = Cells(Rows.Count, 8).End(xlUp).Row
arr = WorksheetFunction.Transpose(Range("H1:H" & L).Value)
DerText = Join(arr, ";")
Set IE = CreateObject("HTMLfile")
Do
DerText = Application.Substitute(DerText, ";;", ";")
Loop While InStr(DerText, ";;") > 0
IE.ParentWindow.ClipboardData.SetData "text", vbNullString & DerText
Set IE = Nothing
End Sub
Gruß Hajo
Anzeige
AW: Zeileninhalte mit Komma trennen (VBA) (-ERL-)
09.04.2012 18:48:14
Henner
Hallo Hajo,
die Variante von Reinhard funktioniert nun perfekt. Auch Dir vielen Dank für Deine Hilfe!
..und einen schönen restlichen Ostermontag
Greets Henner
AW: Zeileninhalte mit Komma trennen (VBA)
09.04.2012 18:07:59
Reinhard
Hallo Henner,
Sub Schaltfläche10_BeiKlick()
Dim IE As Object, DerText As String, arr As Variant, L As Long
With Sheets(1)
L = .Cells(.Rows.Count, 8).End(xlUp).Row
arr = WorksheetFunction.Transpose(.Range("H1:H" & L).Value)
End With
DerText = Replace(Application.Trim(Join(arr, " ")), " ", "; ")
Set IE = CreateObject("HTMLfile")
IE.ParentWindow.ClipboardData.SetData "text", vbNullString & DerText
Set IE = Nothing
End Sub

Gruß
Reinhard
Leider kein Erfolg
09.04.2012 18:22:58
Henner
Hallo Reinhard,
bringt immer Laufzeitfehler 13, Typen unverträglich.
Markierung: DerText = Replace(Application.Trim(Join(arr, " ")), " ", "; ")
Gruß
AW: Leider kein Erfolg
09.04.2012 18:35:24
Reinhard
Hallo henner,
verstehe ich nicht, bei mir kommt der Fehler nicht:
https://www.herber.de/bbs/user/79715.xls
Ich habe jetzt nur unten im Code die zwei zeilen eingefügt um in A1 das Ergebnis zu zeigen.
Sub Schaltfläche10_BeiKlick()
Dim IE As Object, DerText As String, arr As Variant, L As Long
With Sheets(1)
L = .Cells(.Rows.Count, 8).End(xlUp).Row
arr = WorksheetFunction.Transpose(.Range("H1:H" & L).Value)
End With
DerText = Replace(Application.Trim(Join(arr, " ")), " ", "; ")
Set IE = CreateObject("HTMLfile")
IE.ParentWindow.ClipboardData.SetData "text", vbNullString & DerText
Set IE = Nothing
Sheets(1).Range("A1").Select
Sheets(1).Paste
End Sub

Gruß
Reinhard
AW: Leider kein Erfolg (-ERL-)
09.04.2012 18:46:23
Henner
Hallo Reinhard,
DANKE! Das funktioniert, ich hatte das mit dem With / End With falsch übernommen. Die Definition habe ich noch von Index auf Name geändert (With Sheets("ACM_DB")), klappt einwandfrei.
Vielen vielen Dank für Deine Zeit + Mühe
Wünsche auch Dir noch einen schönen restlichen Ostermontag!
Gruß Henner
gesetzter Verweis in die Mappe eingebunden?
09.04.2012 17:27:25
Reinhard
Hallo Henner,
ich muß den Verweis setzen.
Aber ich habe kein XL 2003, getestet auf XL 2000.
Wie das mit Verweisen ist wenn du die Mappe an Fremdrechner schickst weiß ich nicht.
Hajo sagte ja daß Verweise an die datei geheftet sind.
Das kann ich nicht ausreichend genug deuten.
Nach Extras---Verweise siehst ja die Liste der Verweise die du anhaken kannst bzw. über
Durchsuchen noch neue dazu bringen kannst.
Markierst du einen Verweis so siehst du unten den Pfad/dateinamen
Beim Verweis Microsoft Forms 2.0 Object Library ist es bei mir
C:\windows\system32\fm20.dll
Jetzt weiß ich nicht ob der Inhalt der .dll an die Mappe "geheftet" ist oder die Mappe nur den
Text-Eintrag "C:\windows\system32\fm20.dll" hat.
Was im letzteren Fall natürlich kracht wenn die .dll einen anderen Pfad hat.
Deshalb habe ich den Betreff geändert und Frage auf noch offen gestellt.
FrOstern
Reinhard

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige