Clipboard Excel

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von DaWo.

    Clipboard Excel

    Guten Tag,

    ich möchte gern aus dem Clipboard ein Formatierten Text (RTF) in Excel einfügen mit Strg + V
    leider wird nichts eingefügt, in Word hingegen wird es eingefügt und die Formatierung übernommen.

    Hab es jetzt einmal so versucht:

    VB.NET-Quellcode

    1. Dim CopyExcel As String = RichTextBox1.Rtf
    2. Clipboard.SetText(CopyExcel, TextDataFormat.Rtf)


    und so:

    VB.NET-Quellcode

    1. Dim data_object As New DataObject
    2. Clipboard.Clear()
    3. data_object.SetData(DataFormats.Rtf, RichTextBox1.Rtf) 'RTB ist eine RichTextBox
    4. Clipboard.SetDataObject(data_object)

    Pixxxas schrieb:

    leider wird nichts eingefügt
    Excel weiß im Gegensatz zu Word nix von RichText.
    Mach die Gegenprobe:
    Formatiere in einer Excel-Zelle einen Text, kopiere ihn und füge ihn im WordPad oder Deiner Programm-eigenen RichTextBox ein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Pixxxas schrieb:

    Gibt es dafür eine Lösung?
    Du musst ein gemeinsames Format finden.
    Wie sieht denn Deine Formatierung aus?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. ​ RichTextBox1.SelectAll()
    2. RichTextBox1.SelectionColor = Color.Red
    3. For Each match As Match In Regex.Matches(RichTextBox1.Text, TextBox1.Text)
    4. RichTextBox1.Select(match.Index, match.Length)
    5. RichTextBox1.SelectionColor = Color.Black
    6. Next
    7. Dim CopyExcel As String = RichTextBox1.Rtf
    8. Clipboard.SetText(CopyExcel, TextDataFormat.Rtf)


    Das Resultat möchte ich gerne in Excel mittels Strg+V einfügen.
    @Pixxxas Frag mal Frau Google nach net richtext in excel einfügen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Pixxxas schrieb:

    oder soll ich erst den Text in eine neue Tabelle einfügen und daraus ins Clipboard lesen?
    Soll der text sowohl in Excel als auch im ClipBoard vorhanden sein?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Pixxxas schrieb:

    oder
    Diese Frage musst Du für Dich und Dein Problem beantworten.
    Ich habe dieses Problem nicht, ich kann Dich da nur zu Fragen der Implementierung beraten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi. @Pixxxas

    Das Clipboardformat sollte beachtet werden. ( bspw: My.Computer.Clipboard.SetData("specialFormat", dataChunk) )

    Zudem kann der Inhalt der Zwischenablage ja vor dem Einfügen geändert werden.

    Ich würde erstmal manuell die Daten einfügen (Paste) und dann das Excel-Resultat nochmals auswählen, dann (abermals aus Excel den Bereich) kopieren.

    Dann im Programm den Clipboard-Inhalt analysieren, und schauen, wie Excel das so umsetzt.

    Dann diese nachprogrammieren und dann die Zielformatierungen und (geänderte) Daten ins Clipboard.

    Paste (Einfügen) nicht vergessen... Ist halt so bei mir. Habe im Copy-Paste-Kurs nur die erste Hälfte mitbekommen. ;)

    Viel Erfolg.

    c.u. Joshi
    Spannend ist, wenn ich in Excel so eine Zelle kopiere, dann liegt die im Clipboard in 22 Formaten gleichzeitig vor:
    - EnhancedMetafile [NOTHING]
    - MetaFilePict [NOTHING]
    - System.Drawing.Bitmap
    - Bitmap
    - Biff12
    - Biff8
    - Biff5
    - SymbolicLink
    - DataInterchangeFormat
    - XML Spreadsheet
    - HTML Format
    - System.String
    - UnicodeText
    - Text
    - CSV
    - Rich Text Format
    - Embed Source
    - Object Descriptor
    - Link Source
    - Link Source Descriptor
    - Link
    - Format129

    Die beiden ersten Formate haben keinen Inhalt bei einer normalen Zelle, die man kopiert.
    Jetzt müsste man schauen, welches Format Excel bevorzugt importiert, wenn es im Paste-Vorgang eingefügt wird und wie das Format dann genau aufgebaut werden muss um ein verlustfreies Ergebnis zu bekommen. Das Richtextformat und HTML-Format könnte man sicherlich noch lesbar verstehen, aber die anderen Formate sind erstmal als Object formatiert und beinhalten einen MemoryStream.

    Wenn ich z.B. in einer eine Zelle "123" schreibe, dann kommt da im HTML der Zwischenablege folgendes raus:

    HTML-Quellcode

    1. Version:1.0
    2. StartHTML:0000000105
    3. EndHTML:0000001924
    4. StartFragment:0000001766
    5. EndFragment:0000001864
    6. <html xmlns:v="urn:schemas-microsoft-com:vml"
    7. xmlns:o="urn:schemas-microsoft-com:office:office"
    8. xmlns:x="urn:schemas-microsoft-com:office:excel"
    9. xmlns="http://www.w3.org/TR/REC-html40">
    10. <head>
    11. <meta http-equiv=Content-Type content="text/html; charset=utf-8">
    12. <meta name=ProgId content=Excel.Sheet>
    13. <meta name=Generator content="Microsoft Excel 15">
    14. <link id=Main-File rel=Main-File
    15. href="file:///C:/Users/danielw/AppData/Local/Temp/msohtmlclip1/01/clip.htm">
    16. <link rel=File-List
    17. href="file:///C:/Users/danielw/AppData/Local/Temp/msohtmlclip1/01/clip_filelist.xml">
    18. <style>
    19. <!--table
    20. {mso-displayed-decimal-separator:"\,";
    21. mso-displayed-thousand-separator:"\.";}
    22. @page
    23. {margin:.79in .7in .79in .7in;
    24. mso-header-margin:.3in;
    25. mso-footer-margin:.3in;}
    26. tr
    27. {mso-height-source:auto;}
    28. col
    29. {mso-width-source:auto;}
    30. br
    31. {mso-data-placement:same-cell;}
    32. td
    33. {padding-top:1px;
    34. padding-right:1px;
    35. padding-left:1px;
    36. mso-ignore:padding;
    37. color:black;
    38. font-size:11.0pt;
    39. font-weight:400;
    40. font-style:normal;
    41. text-decoration:none;
    42. font-family:Calibri, sans-serif;
    43. mso-font-charset:0;
    44. mso-number-format:General;
    45. text-align:general;
    46. vertical-align:bottom;
    47. border:none;
    48. mso-background-source:auto;
    49. mso-pattern:auto;
    50. mso-protection:locked visible;
    51. white-space:nowrap;
    52. mso-rotate:0;}
    53. .xl65
    54. {color:red;
    55. font-size:14.0pt;
    56. font-weight:700;}
    57. -->
    58. </style>
    59. </head>
    60. <body link="#0563C1" vlink="#954F72">
    61. <table border=0 cellpadding=0 cellspacing=0 width=80 style='border-collapse:
    62. collapse;width:60pt'>
    63. <col width=80 style='width:60pt'>
    64. <tr height=25 style='height:18.75pt'>
    65. <!--StartFragment-->
    66. <td height=25 class=xl65 align=right width=80 style='height:18.75pt;
    67. width:60pt'>123</td>
    68. <!--EndFragment-->
    69. </tr>
    70. </table>
    71. </body>
    72. </html>

    im Richtext ist dann da

    Quellcode

    1. {\rtf1\ansi \ansicpg1252
    2. {\fonttbl{\f0\fnil Calibri;}{\f1\fnil Calibri;}{\f2\fnil Calibri;}{\f3\fnil Calibri;}{\f4\fnil Calibri;}{\f5\fnil Calibri;}{\f6\fnil Calibri Light;}{\f7\fnil Calibri;}{\f8\fnil Calibri;}{\f9\fnil Calibri;}{\f10\fnil Calibri;}{\f11\fnil Calibri;}{\f12\fnil Calibri;}{\f13\fnil Calibri;}{\f14\fnil Calibri;}{\f15\fnil Calibri;}{\f16\fnil Calibri;}{\f17\fnil Calibri;}{\f18\fnil Calibri;}{\f19\fnil Calibri;}{\f20\fnil Calibri;}{\f21\fnil Calibri;}{\f22\fnil Segoe UI;}{\f23\fnil Calibri;}{\f24\fnil Calibri;}{\f25\fnil Calibri;}{\f26\fnil Calibri;}{\f27\fnil Calibri;}}
    3. {\info{\id220}}\plain {\colortbl\red0\green0\blue0;\red255\green255\blue255;\red255\green0\blue0;\red0\green255\blue0;\red0\green0\blue255;\red255\green255\blue0;\red255\green0\blue255;\red0\green255\blue255;\red0\green0\blue0;\red255\green255\blue255;\red255\green0\blue0;\red0\green255\blue0;\red0\green0\blue255;\red255\green255\blue0;\red255\green0\blue255;\red0\green255\blue255;\red128\green0\blue0;\red0\green128\blue0;\red0\green0\blue128;\red128\green128\blue0;\red128\green0\blue128;\red0\green128\blue128;\red192\green192\blue192;\red128\green128\blue128;\red153\green153\blue255;\red153\green51\blue102;\red255\green255\blue204;\red204\green255\blue255;\red102\green0\blue102;\red255\green128\blue128;\red0\green102\blue204;\red204\green204\blue255;\red0\green0\blue128;\red255\green0\blue255;\red255\green255\blue0;\red0\green255\blue255;\red128\green0\blue128;\red128\green0\blue0;\red0\green128\blue128;\red0\green0\blue255;\red0\green204\blue255;\red204\green255\blue255;\red204\green255\blue204;\red255\green255\blue153;\red153\green204\blue255;\red255\green153\blue204;\red204\green153\blue255;\red255\green204\blue153;\red51\green102\blue255;\red51\green204\blue204;\red153\green204\blue0;\red255\green204\blue0;\red255\green153\blue0;\red255\green102\blue0;\red102\green102\blue153;\red150\green150\blue150;\red0\green51\blue102;\red51\green153\blue102;\red0\green51\blue0;\red51\green51\blue0;\red153\green51\blue0;\red153\green51\blue102;\red51\green51\blue153;\red51\green51\blue51;;\red255\green255\blue255;\red100\green100\blue100;\red240\green240\blue240;\red0\green0\blue0;\red255\green255\blue255;\red160\green160\blue160;\red0\green120\blue215;\red0\green0\blue0;\red200\green200\blue200;\red55\green55\blue55;\red255\green255\blue255;\red100\green100\blue100;\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue0;\red255\green255\blue225;\red0\green0\blue0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\red192\green192\blue192;\red150\green150\blue150;\red128\green128\blue128;\red102\green102\blue102;\red51\green51\blue51;\red50\green106\blue199;\red192\green53\blue62;\red129\green87\blue183;\red0\green124\blue32;\red176\green62\blue132;\red182\green73\blue0;\red38\green115\blue146;\red51\green102\blue153;\red128\green0\blue0;\red0\green128\blue0;\red0\green0\blue128;\red128\green128\blue0;\red128\green0\blue128;\red0\green128\blue128;\red0\green0\blue208;\red212\green212\blue212;\red50\green106\blue199;\red0\green120\blue212;\red136\green23\blue152;\red227\green0\blue140;\red0\green78\blue140;\red209\green52\blue56;\red202\green80\blue16;\red3\green131\blue135;\red152\green111\blue11;\red164\green38\blue44;\red194\green57\blue179;\red57\green57\blue57;\red79\green107\blue237;\red117\green11\blue28;\red135\green100\blue184;\red122\green117\blue116;\red0\green91\blue112;\red92\green46\blue145;\red105\green121\blue126;\red142\green86\blue46;\red170\green170\blue170;}
    4. \f25\fs28 \b \cf10 123}


    die Farbe Rot ist der Moderation vorbehalten und wurde ersetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()