Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datei kopieren

Begonnen von Benjamin Baum 1, September 03, 2019, 20:05:45

⏪ vorheriges - nächstes ⏩

Benjamin Baum 1

Hallo

Ich habe da ein Problem wofür ich im Netz noch keine Antwort gefunden habe bzw. erhalten habe.

Ich bekomme ein Mail in dem unter anderem eine txt-Datei enthalten ist.
In dieser txt-Datei befindet sich ein Datensatz.
Um diesen Datensatz importieren zu können, muss sich diese Datei im Verzeichnis "C\:Import" befinden. Diese txt-Datei in diesem Verzeichnis ist in die DB verknüpft.

Bisher war es immer so, dass ich die Datei im Mail links angeklickt habe und mit Kopieren diese in den Zwischenspeicher gegeben habe. Dann bin ich in die DB gegagnen und habe auf die Schaltfläche "Importieren" geklickt.

Damit wurde die txt.Datei in das Verzeichnis "C\:Import" eingefügt und dieser Datensatz in meine Tabelle kopiert von wo ich weiter damit arbeiten kann.

Das habe ich damals eben über den Weg gemacht, dass ich ein Webbrowser-Feld erzeugt habe, das in das Verzeichnis "C\:Import" verweist. Durch das klicken der Schaltfläche wurder der Fokus auf dieses Webbrowser-Feld gegeben und mit
=> SendKeys "^v" , True <= wurde diese dann in das Verzeichnis kopiert..... So, und genau das funktioniert jetzt nicht mehr. Auch wenn ich manuel auf das Webbrowser-Feld gehe und die Tastenkombination Strg-V verwende geht das nicht. Linke Maustaste - Einfügen jedoch funktioniert.

Der Datenimport anschließen passt, der geht...

Hab keinen Plan warum das so ist...
Einen Verdacht habe ich aber: kann das an einem Windows-Update hängen....?? Kurz bevor mit der Fehler aufgefallen ist, kamen einige Updates.... kann das sein???

Kann mir hier jemand helfen??

Danke

DF6GL

Hallo,

hier:  https://www.ms-office-forum.net/forum/showthread.php?t=362139&page=2

hast Du doch umfassende und ausreichende Hilfe bekommen.


Sendkeys ist nun mal fehleranfällig und funktioniert  nicht unbedingt richtig..

Es kann auch gut sein, dass das Webbroser-Control jetzt nicht mehr den Fokus erhält und dadurch Sendkeys im Sande ver(s)läuft.

Möglicherweise sind auch manche Einstellungen bei den Sicherheitsoptionen nicht (mehr) korrekt/ausreichend.

PhilS

Zitat von: Benjamin Baum 1 am September 03, 2019, 20:05:45
Das habe ich damals eben über den Weg gemacht, dass ich ein Webbrowser-Feld erzeugt habe, das in das Verzeichnis "C\:Import" verweist. Durch das klicken der Schaltfläche wurder der Fokus auf dieses Webbrowser-Feld gegeben und mit
=> SendKeys "^v" , True <= wurde diese dann in das Verzeichnis kopiert.....
Nochmal, auch wenn es bereits häufiger in diesem Zusammenhang erwähnt wurde:  SendKeys ist (und wahr schon immer) einer äußerst fehleranfällige Funktionalität. Das liegt einfach in der Natur der Tastaturbefehle, die immer vom aktuellen Kontext/Zustand abhängig sind.

Im MOF hatte ich dir dazu je bereits den Hinweis auf mein Clipboard-Klassenmodul geschrieben, das konkret vor dem Hintergrund deiner Problemstellung entstanden ist.

Mit dem ebenfalls im MOF geposteten Beispielcode (s.u.) sollte deine Anforderung damit relativ einfach und wesentlich stabiler als mit der Webbrowser+Sendkeys-Lösung umsetzbar sein.


Public Sub SaveClipboardContentToTextFile(ByVal fileName As String)

    Dim data As Variant

    If Clipboard.IsFormatAvailable(Clipboard.FormatFileContent) Then
        data = Clipboard.GetData(Clipboard.FormatFileContent)
       
        SaveToTextFile fileName, StrConv(data, vbUnicode), True, False
    Else
        MsgBox "Data format '" & Clipboard.FormatFileContent & "' is not available."
    End If

End Sub

Public Sub SaveToTextFile(ByVal fileName As String, ByVal data As String, Optional ByVal OverwriteExistingFile As Boolean = False, Optional ByVal ContentIsUnicode As Boolean = False)

    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Dim objFile  As Object
    Set objFile = objFSO.CreateTextFile(fileName, OverWriteExistingFile, ContentIsUnicode)
    objFile.Write data
    objFile.Close

End Sub
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Benjamin Baum 1

Hallo

Sorry, aber ich habe da noch eine Frage.... in dem Code von PhilS.... wo steht da drinnen wo die Datei abgelegt werden soll?? Da müsste doch so etwas wie ein Pfad oder so sein... oder? Ich stelle mir vor, da müsste doch auch ein kurzer Code ausreichen. Ich dachte das an so etwas wie einen Dos-Befehl... nur da habe ich "copy..." gefunden aber nicht "Paste..."

PhilS

Zitat von: Benjamin Baum 1 am September 06, 2019, 15:18:19.... in dem Code von PhilS.... wo steht da drinnen wo die Datei abgelegt werden soll??
Das steht nicht drin. Den Aufruf der Prozedur habe ich weggelassen. Du müsstest, um das erstellen der Datei aus der Zwischenablage auszulösen, noch etwas wie das folgende ergänzen.

Call  SaveClipboardContentToTextFile("C:\Import\DeineDatei.txt")
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor