none
XL 97 - VBA: Kommetar übertragen ohne Zwischenablage RRS feed

  • Frage

  • Hallo!

    Mit der Zwischenablage sind es 2 Zeilen Code:

    Cells(A, B).Copy
    Cells(X, Y).PasteSpecial Paste:=xlPasteComments
    Ich ›will‹ aber in allen Fällen bei denen ich mit VBA arbeite die Zwischenablage nicht verändern (Fälle in denen ich sie explizit anspreche ausgenommen).

    Wie bekommen ich - und das ist die spezielle Crux - die Formatierungen des Kommentartextes mit übertragen? Klartext über .Text ist simpel, aber die Infos im Kommentar durch z.B. Fett oder Farbe müssen unbedingt mit übernommen werden (in die Ablage-Zone des Blattes).

    Was ist zu tun?

     


    Eric March • »Kenne die Vergangenheit! In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
    Montag, 16. August 2010 17:22

Alle Antworten

  • Hallo Eric,

    mit Range.Copy(Destination) werden auch die Formatierungen übertragen.

    Worksheets("Tabelle 1").Range("A1:D4").Copy destination:=Worksheets("Tabelle 2").Range("E5")

    Allerdings: auch bei Range.Copy mit Zielangabe ist es anschließend nicht mehr möglich, mit "Einfügen" oder "Inhalte einfügen..." zu arbeiten. Unter XL2002 steht der vorherige Inhalt der Zwischenablage aber immer noch über "Office-Zwischenablage" zur Verfügung. XL97 hat noch keine Office-Zwischenablage. Da müssest Du wohl die Windows-Zwischenablage retten und restaurieren.

    Hang loose, Hartwig

    Mittwoch, 18. August 2010 07:55
  • Hallo!

    Die ClipBrd.Exe fernsteuern? Das scheint mir etwas schwierig. Sieht so aus als hätte ich da nur die Wahl zwischen Pest & Cholera…

    Man müsste prompt prüfen inwiefern tatsächlich o.g. Syntax die WIN-ZA in Ruhe lässt; ich erlebe es oft genug, dass in XL selbst Kopiertes beim AutoSave verschwindet [äußerst lästig!!], dafür aber außerhalb kopiertes bei dieser Aktion immer noch zur Verfügung steht. .COPY scheint aber tatsächlich die ZA anzusprechen.

    Eric

     

     

     


    Eric March • »Kenne die Vergangenheit! In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
    Mittwoch, 18. August 2010 09:15
  • Die ClipBrd.Exe fernsteuern? Das scheint mir etwas schwierig. Sieht so aus als hätte ich da nur die Wahl zwischen Pest & Cholera…

    Hallo Eric,

    da ist ja auch noch die große weite API-Welt und user32 hat ne Menge Clipboardfunktionen. Vielleicht liefert Tante Guckel zu dem Stichwort "OpenClipboard" passende Informationen.

    Hang loose, Hartwig

    Mittwoch, 18. August 2010 10:22
  • Danke für den Hinweis.

    Da ich das aber auch für einen ›begrenzteren Rahmen‹ brauche (also Laien an nicht mit so aufgerüsteten/ausgerüsteten Rechner wie meiner) dürfte das leider zu weit weg führen…

    Die Kröte mit der ZA muss ich also schlucken… Schade. Wie so oft kann VBA alles Unmögliche, beim Möglichen versagt es kläglich.

    Eric


    Eric March • »Kenne die Vergangenheit! In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
    Donnerstag, 19. August 2010 06:14
  • Hallo Eric
     
    Wie wär's mit einfachen API Aufrufen, statt mit ClibBrd.Exe fernsteuerung?
    Wie's geht steht in der KB von MS:
     
    Text aus Zwischenablage auslesen:
    http://support.microsoft.com/?kbid=210213
     
    Text in Zwischenablage schreiben:
    http://support.microsoft.com/?kbid=210216
     
    Du kannst also zuerst mal den Inhalt der Zwischenablage sichern, dann die
    Zwischenablage (miss-)brauchen und schliesslich die Zwischenablage wieder
    mit dem Originaltext versorgen.
     
    Bezieht sich auf Access, läuft aber auch für Excel VBA identisch.
     
    Gruss
    Henry
     
    "Eric March" <=?utf-8?B?RXJpYyBNYXJjaA==?=> wrote in message
    news:43223c2c-eb37-469c-ac75-f3f59978b32a...
    Die ClipBrd.Exe fernsteuern? Das scheint mir etwas schwierig. Sieht so aus
    als hätte ich da nur die Wahl zwischen Pest & Cholera…
     
     

    [MVP Office Access]
    Donnerstag, 19. August 2010 08:04
  • Hallo!

    Würde es sich um…

    «Text aus Zwischenablage auslesen:»

    …handeln hätte ich das schon in der Schublade. Ich muss nur leider damit rechnen, dass in der ZA so ziemlich alles drin sein kann.

    Eine Zielvariable Typ Variant und ein Aufruf im Stil von …).Content oder …).Value wäre ja die Rettung, ich habe aber (effektiv) nur …).Text zur Verfügung.

    Sub ZwischenablageReinRaus()
    Dim Inhalt As String
     Set Ablage = New DataObject
     'ZA in String
      Ablage.GetFromClipboard
      Inhalt = Ablage.GetText(1)
      'String in ZA
      Ablage.SetText Inhalt
      Ablage.PutInClipboard
    End Sub

    Wenns was anderes denn ….GetText(1) gäbe - hurra. Und die Dumme Frage nebenher - wenn Inhalt denn Typ Variant wäre, was könnte ich aus Ablage. noch hervorzaubern?

    Gruß, Eric

     


    Eric March • »Kenne die Vergangenheit! In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
    Freitag, 20. August 2010 06:37