Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code funktioniert plötzlich nicht mehr!

Forumthread: VBA Code funktioniert plötzlich nicht mehr!

VBA Code funktioniert plötzlich nicht mehr!
10.09.2018 10:59:11
Micha
Hallo liebe Spezialisten.
den unten stehenden Code habe ich vor einigen Jahren hier im Forum gefunden um Zellinhalte in die Zwischenablage zu kopieren. Diese Inhalte werden später als Kommentar in eine andere Datei eingefügt.
Das hat jahrelang gut funktioniert, doch seit einigen Tagen funktioniert das nicht mehr. Beim Einfügen werden nur zwei "" eingefügt.
Würde mich riesig über Hilfe freuen.
VG, Micha
Sub Zwischenablage()
Dim clipAbLage As DataObject
Dim x As String
Dim i As Integer
Set clipAbLage = New DataObject
For i = 62 To 105
x = x & Cells(i, 38).Value & Chr(10)
Next i
clipAbLage.SetText x
clipAbLage.PutInClipboard
MsgBox ("Die Daten sind in der Zwischenablage!")
End Sub

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code funktioniert plötzlich nicht mehr!
10.09.2018 11:17:22
Luschi
Hallo Micha,
Du kannst nicht einfach einen Vba-Code hin&her kopieren, ohne die Rahmenbedingen zu beachten.
Hinweis: https://www.online-excel.de/excel/singsel_vba.php?f=28
Einfacher geht es so:
- im Vba-Editor ein Formular einfügen
- dieses Formular sofort wieder löschen
- damit ist der Verweis gesetzt
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA Code funktioniert plötzlich nicht mehr!
10.09.2018 11:19:38
Martin
Hallo Micha,
probiere mal, ob einer der beiden nachfolgenden Codes funktioniert:
Sub Zwischenablage()
Dim clipAbLage As MSForms.DataObject
Dim x As String
Dim i As Integer
Set clipAbLage = New MSForms.DataObject
For i = 62 To 105
x = x & Cells(i, 38).Value & Chr(10)
Next i
clipAbLage.SetText x
clipAbLage.PutInClipboard
MsgBox ("Die Daten sind in der Zwischenablage!")
End Sub
Sub Zwischenablage2()
Dim clipAbLage As Object
Dim x As String
Dim i As Integer
Set clipAbLage = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
For i = 62 To 105
x = x & Cells(i, 38).Value & Chr(10)
Next i
clipAbLage.SetText x
clipAbLage.PutInClipboard
MsgBox ("Die Daten sind in der Zwischenablage!")
End Sub
Viele Grüße
Martin
Anzeige
AW: VBA Code funktioniert plötzlich nicht mehr!
10.09.2018 11:46:51
Micha
@ Luschi: Danke, Microsoft Forms 2.0 Objektlibrary ist und war aktiviert.
Die Datei mit dem Code hat ja auch bereits einige Jahre funktioniert, nur jetzt plötzlich nicht mehr :-(
@Martin: Auch Dir vielen Dank, aber leider auch mit deinen Code das gleiche Problem.
Ich kann mir vorstellen das dies mit irgend einem Update zusammenhängt, da in der letzten Woche es plötzlich an dem Rechner eines Kollegen nicht mehr funktionierte, und erst heute an meinem Rechner auch nicht mehr.
An einem dritten Rechner eines weiteren Kollegen geht die Datei noch.
Habt Ihr noch eine Ideee?
Ist für mich extrem wichtig!
Danke
Micha
Anzeige
Habe das gleiche Problem...
10.09.2018 12:04:38
EtoPHG
Hallo Micha,
Ich glaube nicht das es an den Verweisen liegt (...hat jahrelang gut funktioniert!)
Ich habe das gleiche Problem, wobei der Fehler völlig erratisch ist, d.h. er ist nicht reproduzierbar, bzw. habe ich noch keine klare Fehlerursache dafür gefunden. Der Fehler tritt bei mir seit dem Win10 Creator Update sporadisch auf. Ein komplettes Schließen der XL-Instanzen und neu starten von XL bringt oft Abhilfe (aber leider auch nicht immer).
Gruess Hansueli
Anzeige
AW: Habe das gleiche Problem...
10.09.2018 12:08:59
Micha
Hallo Hansueli,
Wenn du eine Lösung findest wäre es toll wenn du die hier posten könntest.
Dank, Micha
Hat jemand eine Lösung?
13.09.2018 10:46:16
Micha
Hallo zusammen,
hat jemand noch eine Idee wie ich das Problem lösen kann?
Gibt es noch eine andere Möglichkeit den Zellinhalt mehrerer Zellen als txt in die Zwischenablage zu kopieren?
Das ist für mich sehr wichtig und ich würde mich riesig freuen wenn jemand noch eine Idee hat.
Viele Grüße, Micha
Anzeige
Warum Zwischenablage und nicht direkt? oT
13.09.2018 11:56:31
Anton
AW: Warum Zwischenablage und nicht direkt? oT
13.09.2018 12:25:56
Micha
Hallo Anton,
ich benötige die Inhalte in der Zwischablage weil diese später in einer anderen Datei, an vorher nicht zu bestimmender Stelle, als Kommentar wieder eingefügt werden.
VG, Micha
AW: Warum Zwischenablage und nicht direkt? oT
14.09.2018 21:49:11
Anton
Hallo Micha,
man könnte die Inhalte stat Zwischenablage in eine Textdatei
temporär schreiben und dann daraus lesen, etwa so:
Code in Zwischenablage:

Sub in_datei()
  Dim fso As Object, f As Object, x As String    
  x = "Zelle 1" & Chr(10) & "Zelle 2" & Chr(10) & "Zelle 3" & Chr(10) 'anpassen
  Set fso = CreateObject("Scripting.FileSystemObject")  
  Set f = fso.OpenTextFile(ThisWorkbook.Path & "\temp.txt", 2, True)  
  f.Write x
  f.Close
  Set fso = Nothing  
End Sub  
Sub aus_datei()
  Dim fso As Object, f As Object, x As String    
  Set fso = CreateObject("Scripting.FileSystemObject")  
  Set f = fso.OpenTextFile(ThisWorkbook.Path & "\temp.txt", 1, True)  
  x = f.readall
  f.Close
  MsgBox x
  Set fso = Nothing  
End Sub  


mfg Anton
Anzeige
Nach Update geht wieder alles wie gewohnt
18.09.2018 08:37:30
Micha
Hallo,
gestern gab es einige Microsoft Updates, seit dem funktioniert wieder alles wie gewohnt :-)
@Anton: Vielen Dank für Deine Lösung mit der Textdatei. Habe ich getestet. "Auch sehr gut"!!!
Besten Gruß, Micha
;
Anzeige

Infobox / Tutorial

VBA Code für Zwischenablage - Lösungen und Tipps


Schritt-für-Schritt-Anleitung

Um den VBA-Code für die Zwischenablage erfolgreich zu nutzen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsm)" > Einfügen > Modul.

  3. Kopiere den Code: Verwende den folgenden Code, um Zellinhalte in die Zwischenablage zu kopieren:

    Sub Zwischenablage()
       Dim clipAbLage As MSForms.DataObject
       Dim x As String
       Dim i As Integer
       Set clipAbLage = New MSForms.DataObject
       For i = 62 To 105
           x = x & Cells(i, 38).Value & Chr(10)
       Next i
       clipAbLage.SetText x
       clipAbLage.PutInClipboard
       MsgBox ("Die Daten sind in der Zwischenablage!")
    End Sub
  4. Teste den Code: Führe das Makro aus und überprüfe, ob die Daten in die Zwischenablage kopiert wurden.


Häufige Fehler und Lösungen

  • Problem: PutInClipboard not working oder nur leere Anführungszeichen werden eingefügt.

    • Lösung: Stelle sicher, dass die Microsoft Forms 2.0 Objektbibliothek aktiviert ist. Gehe zu Extras > Verweise im VBA-Editor und aktiviere es.
  • Problem: Der Code funktioniert sporadisch.

    • Lösung: Dies könnte an einem Windows-Update liegen. Versuche, Excel neu zu starten oder die Instanzen zu schließen.
  • Problem: vba putinclipboard not working nach einem Update.

    • Lösung: Überprüfe, ob dein Excel auf die neueste Version aktualisiert ist. Manchmal beheben Updates solche Probleme.

Alternative Methoden

Wenn der putinclipboard-Befehl nicht funktioniert, kannst du die Inhalte auch in eine Textdatei schreiben und dann wieder einlesen. Hier ist ein Beispiel:

Sub in_datei()
    Dim fso As Object, f As Object, x As String
    x = "Zelle 1" & Chr(10) & "Zelle 2" & Chr(10) & "Zelle 3" & Chr(10) 'anpassen
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(ThisWorkbook.Path & "\temp.txt", 2, True)
    f.Write x
    f.Close
    Set fso = Nothing
End Sub

Sub aus_datei()
    Dim fso As Object, f As Object, x As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(ThisWorkbook.Path & "\temp.txt", 1, True)
    x = f.readall
    f.Close
    MsgBox x
    Set fso = Nothing
End Sub

Praktische Beispiele

Hier sind einige Beispiele für die Verwendung des putinclipboard-Befehls:

  • Kopiere Daten aus einer spezifischen Zelle:

    Sub EinfacheKopie()
      Dim clipAbLage As MSForms.DataObject
      Set clipAbLage = New MSForms.DataObject
      clipAbLage.SetText Range("A1").Value
      clipAbLage.PutInClipboard
      MsgBox "Zelle A1 wurde in die Zwischenablage kopiert!"
    End Sub
  • Kopiere Daten aus mehreren Zellen:

    Sub MehrereZellenKopieren()
      Dim clipAbLage As MSForms.DataObject
      Dim zellenInhalt As String
      Dim i As Integer
      Set clipAbLage = New MSForms.DataObject
      For i = 1 To 10
          zellenInhalt = zellenInhalt & Cells(i, 1).Value & Chr(10)
      Next i
      clipAbLage.SetText zellenInhalt
      clipAbLage.PutInClipboard
      MsgBox "Daten aus den ersten 10 Zeilen wurden in die Zwischenablage kopiert!"
    End Sub

Tipps für Profis

  • Überprüfe die Verweise: Nach dem Kopieren von VBA-Code solltest du immer die Verweise überprüfen, um sicherzustellen, dass alles korrekt gesetzt ist.
  • Verwende Error-Handling: Implementiere Fehlerbehandlungsroutinen in deinem Code, um Probleme frühzeitig zu erkennen.
  • Experimentiere mit verschiedenen Datenquellen: Teste verschiedene Zellbereiche und Datenformate, um die Robustheit deines Codes zu gewährleisten.

FAQ: Häufige Fragen

1. Warum funktioniert mein VBA-Code plötzlich nicht mehr?
Es kann an einem Update oder fehlenden Verweisen liegen. Überprüfe die Verweise im VBA-Editor.

2. Wie kann ich den Inhalt mehrerer Zellen in die Zwischenablage kopieren?
Verwende eine Schleife, um die Inhalte der gewünschten Zellen zu concatenieren und dann mit SetText in die Zwischenablage zu setzen.

3. Was ist putinclipboard und wie funktioniert es?
putinclipboard ist eine VBA-Funktion, die es ermöglicht, Text in die Zwischenablage zu kopieren, sodass er in andere Anwendungen eingefügt werden kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige