Thema Datum  Von Nutzer Rating
Antwort
18.03.2017 14:45:37 Dominik
NotSolved
19.03.2017 12:56:50 BigBen
NotSolved
29.03.2017 16:34:48 Dominik
NotSolved
29.03.2017 17:06:43 BigBen
NotSolved
30.03.2017 19:09:24 Dominik
NotSolved
30.03.2017 20:09:44 BigBen
NotSolved
31.03.2017 09:38:57 Dominik
NotSolved
01.04.2017 15:25:58 BigBen
NotSolved
03.04.2017 13:56:54 Dominik
NotSolved
03.04.2017 16:18:05 BigBen
NotSolved
04.04.2017 18:32:52 Gast3322
NotSolved
05.04.2017 21:24:41 Dominik
NotSolved
Rot Anfrage an SQL-Server per VBA-Code und Speichern der Rückgabe in ein Verzeichnis
07.04.2017 15:41:11 BigBen
NotSolved
08.04.2017 12:51:19 Dominik
NotSolved
08.04.2017 19:04:05 BigBen
*****
Solved
10.04.2017 21:03:04 Dominik
NotSolved
03.04.2017 13:56:54 Dominik
NotSolved

Ansicht des Beitrags:
Von:
BigBen
Datum:
07.04.2017 15:41:11
Views:
637
Rating: Antwort:
  Ja
Thema:
Anfrage an SQL-Server per VBA-Code und Speichern der Rückgabe in ein Verzeichnis

Hallo,

schön, dass es soweit geklappt hat.

Auf dieser Webseite ist der Source-Coder der Funktion RestoreBinFile enthalten.

Hier wird der Inhalt des Bildes in einer Array-Variable vom Typ Byte gespeichert.

Daraufhin habe ich eine Test-Befehl erstellt, der ein vorhandenes Bild einliest und anschließend wieder mit put in eine neue Datei zurück schreibt:

Sub ReadAndWritePicture()
    Dim strPicture As Variant, strChar As String
    Dim F As Integer
    Dim arrBin() As Byte
    F = FreeFile
    Open "L:\temp\excel\PictureA.png" For Binary As F
    
    ReDim arrBin(LOF(F))
    Get #F, , arrBin()
    Close #F
    
    ' Write
    F = FreeFile
    Open "L:\temp\excel\PictureA-Kopie.png" For Binary As #F
    Put #F, , arrBin
    Close #F
End Sub

In einer Access-DB habe ich das Auslesen eines Bildesaus einem Tabellen-Feld vom Typ OLE-Objekt nochmals vorgenommen:

Sub restorePicture()
    Dim F As Integer
    Dim lSize As Long
    Dim arrBin() As Byte
    Dim rs As DAO.Recordset
    Dim sFilename As String
    
    Dim sPath As String
    sPath = "L:\temp\excel\"
    sFilename = "PictureB.png"
    Set rs = DBEngine(0)(0).OpenRecordset("tabPicture", dbOpenDynaset)
    rs.FindFirst "[FileName]='" & sFilename & "'"
    If rs.NoMatch Then
         Err.Raise vbObjectError + 5, "mdlBinary", _
            "Das Binär-File " & sFilename & " existiert nicht in der Tabelle 'tabPicture!'"
    Else
        lSize = rs.Fields("Picture").FieldSize
        ReDim arrBin(lSize)
        arrBin = rs.Fields("Picture").GetChunk(0, lSize)
        F = FreeFile
        ' Schreiben der Daten
        Open sPath & sFilename For Binary As #F
        Put #F, , arrBin
        Close #F
    End If
End Sub

Bei diesen Tests ging es mir darum, festzustellen, auf welche Art und Weise ein Bild am Besten eingelesen und weggeschrieben werden kann.

Fazit:

Beide Varianten funktionieren fehlerfrei.

Bei Deinem Code wird der Inhalt fälschlicherweise in einer Variable vom Typ String gespeichert. Das ist falsch. Der Inhalt muss in einem Array vom Typ Byte gespeichert werden.

Poste am Besten den derzeiten VBA-Code nochmal. Ich versuche diesen so anzupassen, dass der Inhalt in einer Array-Variable vom Typ Byte eingelesen wird.

LG, BigBen

 

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
18.03.2017 14:45:37 Dominik
NotSolved
19.03.2017 12:56:50 BigBen
NotSolved
29.03.2017 16:34:48 Dominik
NotSolved
29.03.2017 17:06:43 BigBen
NotSolved
30.03.2017 19:09:24 Dominik
NotSolved
30.03.2017 20:09:44 BigBen
NotSolved
31.03.2017 09:38:57 Dominik
NotSolved
01.04.2017 15:25:58 BigBen
NotSolved
03.04.2017 13:56:54 Dominik
NotSolved
03.04.2017 16:18:05 BigBen
NotSolved
04.04.2017 18:32:52 Gast3322
NotSolved
05.04.2017 21:24:41 Dominik
NotSolved
Rot Anfrage an SQL-Server per VBA-Code und Speichern der Rückgabe in ein Verzeichnis
07.04.2017 15:41:11 BigBen
NotSolved
08.04.2017 12:51:19 Dominik
NotSolved
08.04.2017 19:04:05 BigBen
*****
Solved
10.04.2017 21:03:04 Dominik
NotSolved
03.04.2017 13:56:54 Dominik
NotSolved