Anzeige
Archiv - Navigation
1140to1144
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

Clipboard aus Autofilter

Clipboard aus Autofilter
mehmet
Guten Tag liebe Excel Gemeinde,
ich habe eine Tabelle mit AutoFilter (Zeile 4).
Wenn ich jetzt den Filter einsetzte und den Bereich kopiere (C5:C) wandert es in die Zwischenablage.
So weit so gut ...
Allerdings wünsche ich mir die Daten nicht untereinander, sondern nebeneinander und
getrennt mit Komma.
Nur ich krieg es nicht hin.
Könntet Ihr mir bitte hierbei weiter helfen.
Sinn und Zweck ist das ganze die Daten in eine Internetseite (Forumlar) einzufügen.
Anbei als Datei mein Versuch:
https://www.herber.de/bbs/user/68282.xls
Herzlichen Dank im Voraus und
Gruss
mehmet

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Warum diese Frage schon wieder....
28.02.2010 19:15:39
mehmet
Hallo Rainer,
ich lerne ja noch 8-)
Dein Code ist für mich teils Verständlich (bin ja Newbie).
Um ggf. später Änderungen vornehmen zu können, würde ich gern den Code verstehen.
1.Übung sollte für mich sein: Daten in die Zwischenablage legen
2.Übung: ein MsgBox einbauen mit der Frage "Trennung durch Komma oder Semikolon".
Ich habe viele Variante versucht aber ohne Erfolg und hänge noch mit meiner 1.Übung (peinlich).
Hier dein Code nochmal:

Sub Create_CSV()
Dim expStr As String
Dim myC As Range
Dim copyRng As Range
'Bereich "c" anpassen wo gefiltert wird
Set copyRng = Range("c4:c" & Rows.Count)
For Each myC In copyRng
If Rows(myC.Row).Hidden = False Then
expStr = expStr & myC.Text & ","
End If
If myC.Offset(1, 0) = "" Then Exit For
Next
expStr = Left(expStr, Len(expStr) - 1)
Open ThisWorkbook.Path & "\test01.txt" For Output As #1    'Textdatei einfügen
Print #1, expStr
Close #1
End Sub

Ich habe Versucht die Variable "expStr" in die Zwischenablage zu legen.
Nach langer suche bin ich auf folgende Parameter gestoßen:
.GetFromClipboard
.PutInClipboard
Könnte man mit die "expStr" Variable so verfahren?

expStr = Left(expStr, Len(expStr) - 1)
expStr.PutInClipboard   'hier mein Versuch
End Sub

So bekomme ich aber eine Fehlermeldung "Ungültiger Bezeichner"!
"expStr" wurde doch betreits definiert
Herzliche Grüße
Anzeige
AW: meine Zeit für paar Stunden um (
28.02.2010 19:24:34
mehmet
Hallo nochmal,
sorry, muss den Rechner an meine Kinder weiter reichen.
Aber heute Nacht schaue ich auf jeden Fall nochmal rein.
Viele Grüße
AW: meine Zeit für paar Stunden um (
28.02.2010 19:33:21
Ramses
Hallo
Wenigstens ist ein Ansatz sichtbar :-)
Sub Create_Commaseparatet_String()
    'by Ramses
    'Verweis auf MS_Forms 2.0 DLL muss gesetzt sein wegen DataObject
    '----------
    'Erstellt aus gefilterten oder ungefilterten Zellen in einem Bereich einen
    'fortlaufenden !!! Textstring
    'mit definierten Trennzeichen und packt diesen in die Zwischenablage
    Dim myDiv As String
    Dim CopyObj As DataObject, expStr As String
    Dim myC As Range, copyRng As Range
    Set CopyObj = New DataObject
    'Trennzeichen definieren
    myDiv = ","
    'Bereich "B" anpassen wo die Daten ausgelesen werden sollen
    Set copyRng = Range("B2:B" & Rows.count)
    For Each myC In copyRng
        If Rows(myC.Row).Hidden = False Then
            expStr = expStr & myC.Text & myDiv
        End If
        If myC.Offset(1, 0) = "" Then Exit For
    Next
    expStr = Left(expStr, Len(expStr) - 1)
    CopyObj.SetText expStr
    CopyObj.PutInClipboard
    Set CopyObj = Nothing
    'Der String ist jetzt in der Zwischenablage und kann mit "Ctrl"+"v" überall eingefügt werden
End Sub

Gruss Rainer
Anzeige
AW: meine Zeit für paar Stunden um (
01.03.2010 00:59:50
mehmet
Hallo Rainer,
nicht ganz elegant!
Zuviel Codes - aber es funktioniert 8)
Hier der Code:

Private Sub Create_Commaseparatet_String_Komma()
'by Ramses
'Verweis auf MS_Forms 2.0 DLL muss gesetzt sein wegen DataObject
'Erstellt aus gefilterten oder ungefilterten Zellen in einem Bereich einen
'fortlaufenden !!! Textstring
'mit definierten Trennzeichen und packt diesen in die Zwischenablage
Dim myDiv As String
Dim CopyObj As DataObject, expStr As String
Dim myC As Range, copyRng As Range
Set CopyObj = New DataObject
'Trennzeichen definieren
myDiv = ","
'Bereich "B" anpassen wo die Daten ausgelesen werden sollen
Set copyRng = Range("c5:c" & Rows.Count)
For Each myC In copyRng
If Rows(myC.Row).Hidden = False Then
expStr = expStr & myC.Text & myDiv
End If
If myC.Offset(1, 0) = "" Then Exit For
Next
expStr = Left(expStr, Len(expStr) - 1)
CopyObj.SetText expStr
CopyObj.PutInClipboard
Set CopyObj = Nothing
'Der String ist jetzt in der Zwischenablage und kann mit "Ctrl"+"v" überall eingefügt  _
werden
End Sub

'Verweis auf "FM20.dll" (Microsoft Forms 2.0 Object Library)
Sub CommandButton1_Click()
Nachricht = "-  JA  - mit Komma" & Chr(13) & _
"- Nein - mit Semikon " & Chr(13) & _
Chr(13)
Stil = vbYesNo
Titel = "Trennung in Zwischenspeicher"
Antwort = MsgBox(Nachricht, Stil, Titel)
If Antwort = vbYes Then
Call Create_Commaseparatet_String_Komma
Else
Call Create_Commaseparatet_String_Semi
Exit Sub
End If
End Sub

Private Sub Create_Commaseparatet_String_Semi()
'by Ramses
'Verweis auf MS_Forms 2.0 DLL muss gesetzt sein wegen DataObject
'Erstellt aus gefilterten oder ungefilterten Zellen in einem Bereich einen
'fortlaufenden !!! Textstring
'mit definierten Trennzeichen und packt diesen in die Zwischenablage
Dim myDiv As String
Dim CopyObj As DataObject, expStr As String
Dim myC As Range, copyRng As Range
Set CopyObj = New DataObject
'Trennzeichen definieren
myDiv = ";"
'Bereich "B" anpassen wo die Daten ausgelesen werden sollen
Set copyRng = Range("c5:c" & Rows.Count)
For Each myC In copyRng
If Rows(myC.Row).Hidden = False Then
expStr = expStr & myC.Text & myDiv
End If
If myC.Offset(1, 0) = "" Then Exit For
Next
expStr = Left(expStr, Len(expStr) - 1)
CopyObj.SetText expStr
CopyObj.PutInClipboard
Set CopyObj = Nothing
'Der String ist jetzt in der Zwischenablage und kann mit "Ctrl"+"v" überall eingefügt  _
werden
End Sub
Hier die Datei:
https://www.herber.de/bbs/user/68289.xls
Das geht bestimmt besser, was meinst Du ... 8)
Gruss
mehmet
Anzeige
AW: meine Zeit für paar Stunden um (
01.03.2010 08:57:39
Ramses
Hallo
Klar geht das eleganter :-)
Private Sub Create_Separated_String_for_Export()
'by Ramses
'Verweis auf MS_Forms 2.0 DLL muss gesetzt sein wegen DataObject
'Erstellt aus gefilterten oder ungefilterten Zellen in einem Bereich einen
'fortlaufenden !!! Textstring
'mit definierten Trennzeichen und packt diesen in die Zwischenablage
Dim myDiv As String
Dim CopyObj As DataObject, expStr As String
Dim myC As Range, copyRng As Range
Set CopyObj = New DataObject
'Trennzeichen definieren
myDiv = InputBox("Bitte zu verwendendes Trennzeichen angeben", "Trennzeichen für Export", "; _
")
Select Case myDiv
Case ";", ",", "#", "%"
Case Else
MsgBox """" & myDiv & """ ist kein erlaubtes Trennzeichen", vbCritical + vbOKOnly, " _
Fehler"
Exit Sub
End Select
'Bereich "B" anpassen wo die Daten ausgelesen werden sollen
Set copyRng = Range("c5:c" & Rows.Count)
For Each myC In copyRng
If Rows(myC.Row).Hidden = False Then
expStr = expStr & myC.Text & myDiv
End If
If myC.Offset(1, 0) = "" Then Exit For
Next
expStr = Left(expStr, Len(expStr) - 1)
CopyObj.SetText expStr
CopyObj.PutInClipboard
Set CopyObj = Nothing
'Der String ist jetzt in der Zwischenablage und kann mit "Ctrl"+"v" überall eingefügt _
werden
End Sub
Gruss Rainer
Anzeige
AW: perfect
01.03.2010 14:11:35
mehmet
Super, ich Danke Dir
Deine Lösung ist natürlich um weiteres Besser
Ein angenehmen Tag wünsch ich Dir
Gruss
mehmet
OT: Ist das Schweinglish oder Alemanglisch...
01.03.2010 02:26:04
Luc:-?
…Ramses… ;-)
Commaseparatet
Schöne Woche in CH, Luc :-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige