Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
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

VBA: Zwischenablage

VBA: Zwischenablage
13.09.2021 17:34:14
Felo
Hallo Leute!
Vielleicht hat jemand eine Idee bei meinem folgenden Problem und kann mir netterweise helfen:
Ich kopiere mit einem CommandButton den Inhalt verschiedener Zellen in die Zwischenablage ( Range("wx:yz").Copy ) und füge den Inhalt der Zwischenablage dann in die Benutzeroberfläche eines externen/anderen Programms ein. Das Problem ist, dass hierbei anscheinend regelhaft Anführungszeichen beim Einfügen in externe Programme gesetzt werden, wenn der aus Excel kopierte Inhalt Zeilenumbrüche, Tab-Sprünge u.a. "Spezial-Features" enthält.
Kann man Excel das "austreiben", indem man den Zelleninhalt zB als plain Text kopieren lässt?
Mein Code:

Private Sub CommandButton4_Click()
ActiveSheet.Unprotect
Sheets("Copy").Range("E10:E11").Value = Sheets("Calculator").Range("G48:G49").Value
If WorksheetFunction.CountBlank(Sheets("Copy").Range("E10:E11")) > 0 Then
Sheets("Copy").Range("E10:E11").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End If
ActiveSheet.Protect
If WorksheetFunction.CountBlank(Sheets("Copy").Range("E10")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("E11")) > 0 Then
Sheets("Copy").Range("E10").Copy
End If
If WorksheetFunction.CountBlank(Sheets("Copy").Range("E10")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("E11")) = 0 Then
Sheets("Copy").Range("E10:E11").Copy
End If
End Sub
Ich habe im Internet u.g. Code gefunden, der vielleicht helfen könnte, ich weiss aber nicht, wie ich meinen o.g. Code damit verbessern bzw. kombinieren könnte..

Public Sub Zwischenablage()
Dim oData As New DataObject
Dim sText As String
sText = "XYZ"
With oData
.SetText sText
.PutInClipboard
End With
End Sub
Vielen Dank im Vorraus für alle hilfreichen Ansätze!! :-)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Zwischenablage
15.09.2021 14:06:40
Felo
Hat keiner eine Idee? Wie Schade..
AW: VBA: Zwischenablage
15.09.2021 14:14:38
Daniel
HI
beispielsweise so:
statt

Sheets("Copy").Range("E10:E11").Copy
dann

sText = Sheets("Copy").Range("E10").value & Sheets("Copy").Range("E11").value
oData.SetText sText
oData.PutInClipboard
sonderzeichen wie Zeilenumbruch könntest du noch so eleminieren, falls erforderlich:

sText = Replace(SText, Chr(10), "")
Gruß Daniel
AW: VBA: Zwischenablage
15.09.2021 17:11:13
Felo
Hallo Daniel!
Vielen Dank für die Antwort, auf Dich ist Verlass.. ;-)
Ich habe versucht das zu kombinieren / einzubauen. Da ich aber VBA-Neuling bin funktioniert das leider nicht..
Weißt du was fehlt? Wie muss das aussehen?
Zeilenumbrüche kommen nicht vor, aber Tab-Sprünge im zu kopierenden Text. Diese Tab-Sprünge sollen aber auch so bleiben, aber eben nicht die dadurch verursachten Anführungszeichen..
Mein Code:

Private Sub CommandButton3_Click()
Dim oData As New DataObject
Dim sText As String
ActiveSheet.Unprotect
Sheets("Copy").Range("D10:D14").Value = Sheets("Calculator").Range("M41:M45").Value
If WorksheetFunction.CountBlank(Sheets("Copy").Range("D10:D14")) > 0 Then
Sheets("Copy").Range("D10:D14").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End If
ActiveSheet.Protect
If WorksheetFunction.CountBlank(Sheets("Copy").Range("D10")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D11")) > 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D12")) > 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D13")) > 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D14")) > 0 Then
sText = Sheets("Copy").Range("D10").Value
End If
If WorksheetFunction.CountBlank(Sheets("Copy").Range("D10")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D11")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D12")) > 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D13")) > 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D14")) > 0 Then
sText = Sheets("Copy").Range("D10").Value & Sheets("Copy").Range("D11").Value
End If
If WorksheetFunction.CountBlank(Sheets("Copy").Range("D10")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D11")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D12")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D13")) > 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D14")) > 0 Then
sText = Sheets("Copy").Range("D10").Value & Sheets("Copy").Range("D11").Value & Sheets("Copy").Range("D12").Value
End If
If WorksheetFunction.CountBlank(Sheets("Copy").Range("D10")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D11")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D12")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D13")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D14")) > 0 Then
sText = Sheets("Copy").Range("D10").Value & Sheets("Copy").Range("D11").Value & Sheets("Copy").Range("D12").Value & Sheets("Copy").Range("D13").Value
End If
If WorksheetFunction.CountBlank(Sheets("Copy").Range("D10")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D11")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D12")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D13")) = 0 And WorksheetFunction.CountBlank(Sheets("Copy").Range("D14")) = 0 Then
sText = Sheets("Copy").Range("D10").Value & Sheets("Copy").Range("D11").Value & Sheets("Copy").Range("D12").Value & Sheets("Copy").Range("D13").Value & Sheets("Copy").Range("D14").Value
End If
oData.SetText sText
oData.PutInClipboard
End Sub

Anzeige
AW: VBA: Zwischenablage
15.09.2021 17:44:50
Daniel
"Funktioniert nicht" als Fehlerbeschreibung ungefähr so sinnvoll/hilfreich wie "dann machs anders" als Hilfestellung.
Bedenke, dass ich deine Datei nicht habe und daher das ganze nicht ausprobieren kann.
von daher solltest du schon genauer beschreiben, wie sich das "funktioniert nicht" genauer darstellt.
hast du die Randbedingungen, die zu New DataObject gehören, auch beachtet? Ich meine, dass da ein bestimmter Verweis gesetzt werden muss, damit VBA das erkennt, oder man muss zumindest eine Userform erstellen (dann wird dieser Verweis automatisch gesetzt).
also wie du siehst, es gibt viele Einflussmöglichkeiten und Rahmenbedingungen, die hier die Ursache sein könnten, und das ist ohne das selber prüfen zu können, sehr schwer zu beurteilen.
Ist hier so wie beim Arzt, wenn du ne genaue Diagnose haben willst, du aber nur über Telefon mit dem Arzt verbunden bist.
Gruß Daniel
Anzeige
AW: VBA: Zwischenablage
15.09.2021 18:04:55
Felo
Entschuldige, da fehlte ein Satz, nämlich, dass als Ergbenis nicht mein Text rausgespuckt wird, sonder zwei Fragezeichen (also so: ?).
Hast natürlich völlig recht, dass eine "Ferndiagnose" so sehr schwer wird. Dann erklär ich meine Bauchschmerzen nochmal genauer:
- Ich habe - wie du gesehen hast - meinen Commandbutton mit dem Private Sub gestaltet.
- Die Bedingungen, die zu New DataObject gehören, kenne ich leider nicht, da ich damit noch nie gearbeitet habe
- Schon gar nicht weiss ich, wie man New DataObject und meinen Code kombiniert (ob das überhaupt geht, oder ich das völlig neu denken muss)
- Ich benutze keine Userform
Tja, sonst werde ich mich mit NewDataObject halt nochmal schlau-googlen müssen..
Echt zum verzweifeln..
Vielen Dank aber, Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige