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

Zwieschenablage

Zwieschenablage
21.01.2020 14:58:13
DANIEL
Hallo Leute
Ich habe wieder einmal ein Problem
Ich rufe aus einem Accessfeld Excel aus um dort verschiedene Berechnungen zu machen. Beim schliessen von Excel kopiere ich das Resultet in die Zwieschenablage damit ich die Daten in Access verarbeiten kann.
Das funktioniert soweit ganz gut.
Beim Einfügen in Access erhalte ich aber eine Fehlermeldung, oder es wird der Wert des vorherigen Zwieschenablage inhaltes eingefügt.
Kann mir jemand sagen, was ich falsch mache?
Hier noch den Code, den ich in Access verwende:
Private Sub EndbestandEier_GotFocus()
FollowHyperlink "C:\Daten\Home\KRD\Eigene Daten\Hühnerhaltung\Berechnungen\Einzeleier.xlsm"
Call ZwischenAblage2String
End Sub
Function ZwischenAblage2String() As String
' Zwischenablage auf Variable ausgeben
' Ein Verweis auf Microsoft Forms 2.X Object Library
' muss gesetzt sein
Dim TestDaten As DataObject
Set TestDaten = New DataObject
Eiertotal = TestDaten.GetText(1)
Me!EndbestandEier = Eiertotal
End Function

Vielen Dank für Eure Hilfe
Gruss Dani

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwieschenablage
21.01.2020 15:17:51
volti
Hallo Dani,
am Code kann ich nichts falsches erkennen. Es gibt aber seit einiger Zeit wohl Probleme mit dem Datenobjekt (Stichwort: Nur zwei Zeichen beim Kopieren usw.). Möglicherweise auch hier ein Thema.
Ansonsten einfach die Window-API benutzen. Ist ein bisschen umfangreicher, klappt dafür aber auf jeden Fall:
Private Declare PtrSafe Function GlobalLock Lib "kernel32" (ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalSize Lib "kernel32" (ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalUnlock Lib "kernel32" (ByVal hMem As LongPtr) As Long
Private Declare PtrSafe Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _
        ByVal lpString2 As Any) As LongPtr
Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32" ( _
        ByVal wFormat As Long) As Long
Private Declare PtrSafe Function GetClipboardData Lib "user32" ( _
       ByVal wFormat As Long) As LongPtr
Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hWnd As LongPtr) As Long
Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
Function ZwischenAblage2String() As String
 Dim hMem As LongPtr, lpGMem As LongPtr, sCliptext As String
 If IsClipboardFormatAvailable(1) > 0 Then '1=CF_TEXT
  OpenClipboard 0&
  hMem = GetClipboardData(1)
  If hMem > 0 Then
   lpGMem = GlobalLock(hMem)
   sCliptext = Space(CLng(GlobalSize(hMem)))
   lstrcpy sCliptext, lpGMem
   GlobalUnlock hMem
   ZwischenAblage2String = Left$(sCliptext, InStr(sCliptext, vbNullChar) - 1)
  End If
  CloseClipboard
 End If
End Function
viele Grüße
Karl-Heinz

Anzeige
AW: Zwieschenablage
21.01.2020 16:15:11
DANIEL
Hallo Karl-Heinz
Herzlichen Dank für deinen Rat.
Kannst du mir noch sagen, wo ich diese verschiedenen Deklarationen am besten machen soll?
Gruss Dani
AW: Zwieschenablage
21.01.2020 17:00:49
volti
Hallo Dani,
Deklarationen immer zuerst im Modul, vor der ersten Sub/Function ansiedeln.
Bei umfangreichen Deklarationen, die ich mehrfach in verschiedenen Modulen nutze, packe ich sie immer in ein eigenes Modul. Dann müssen sie allerdings Public sein.
viele Grüße
Karl-Heinz
AW: Zwieschenablage
21.01.2020 17:04:25
DANIEL
Hallo Karl-Heinz
Das Resultat ist leider dasselbe. Wenn ich im Access Feld das Ergebnis manuell eintrage mit Ctrl+V ist es korrekt. aber mit VBA kommt immer noch das Resultat der letzten Berechnung Resp. Bei der ersten abfrage kommt gar nichts, oder eine Fehlermeldung vermutlich wenn dann noch ein Text in der Zwischenablage war).
gruss Dani
Anzeige
AW: Zwieschenablage
21.01.2020 17:57:45
volti
Hallo Dani,
das kommt mir aber sehr komisch vor.
"oder eine Fehlermeldung" ist natürlich nicht sehr hilfreich. Da müsste man schon wissen, welcher Fehler wo auftritt.
Dann ist die Übernahme aus der Zwischenablage via dem o.g. Tool, wie im Übrigen auch bei Deiner Ursprungsvarianten (probiere auch noch mal Nepumuks Erweiterung aus), nur für Text. Ist das möglicherweise gar kein Text in der Zwischenablage?
Per F8 Einzelschritt könntest Du ja mal schauen, ob der Code überhaupt komplett durchlaufen wird.
Über EmptyClipboard (vor dem CloseClipboard gesetzt) kann die Zwischenablage geleert werden. Dann dürfte ja keine Übernahme des alten Textes mehr erfolgen können.
viel Grüße
Karl-Heinz
Anzeige
AW: Zwieschenablage
21.01.2020 15:24:54
Nepumuk
Hallo Dani,
so besser?
Function ZwischenAblage2String() As String
    ' Zwischenablage auf Variable ausgeben
    ' Ein Verweis auf Microsoft Forms 2.X Object Library
    ' muss gesetzt sein
    Dim TestDaten As DataObject
    Set TestDaten = New DataObject
    Call TestDaten.GetFromClipboard
    Me!EndbestandEier = TestDaten.GetText(1)
    Set TestDaten = Nothing
End Function

Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige