Datei aus Access 2010 kopieren? - Pfad in Tabelle

Von: , 18.04.2011 13:17 Uhr

Hallo,

ich habe hier ein Problem mit dem ich leider echt nich weiter komme. Ich habe eine Access Datenbank und in dieser eine Tabelle mit Artikelnummern. Ich weis nun das es zu jeder dieser Nummer eine PDF Datei gibt und möchte diese zusammenstellen. Der Pfad ist immer gleich und der Dateiname ähnlich
z.B. C:\PDF\<artikelnummer>.pdf

Ich habe leider von diesem ganzen VBA Thema nicht soviel Ahnung. Abfragen in Access stellen aber kein Problem dar.

Also wie kann ich mir alle PDFs, für die es eine Artikelnummer in meiner Tabelle gibt in ein Verzeichniss kopieren lassen?

Ich danke euch wirklich vielmals und wünsche noch einen schönen Tag.

Gruß
Michi

9 Antworten zu dieser Frage

  1. Antwort von nach 59 Minuten 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Hallo Michi,
    was ist denn schon da?
    Und ein paar Rahmenfragen sind unklar: alle PDFs, die in der Tabelle angegeben sind, sollen in ein anderes Verzeichnis kopiert werden, habe ich das richtig verstanden?
    Wodurch soll das ausgelöst werden?
    Was soll geschehen, wenn es ein pdf gar nicht gibt?
    Meinst du mit "Dateiname ist ähnlich", dass die Datei genau so heißt wie die Artikelnummer lautet, nur mit der Extension ".pdf"?
    lg
    Katharina

  2. Antwort von nach einer Stunde 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Du musst halt deine Tabelle als Recordset öffnen und in einer Schleife durchlaufen:

    Set Conn = CurrentProject.Connection
    strSQL = "SELECT * FROM MeineTabelle WHERE ArtikelNummer IS NOT NULL"
    RS.Open strSQL, Conn, adOpenKeyset, adLockPessimistic
    Do Until RS.EOF 
    Filecopy "C:\PDF\" & RS!ArtikelNummer & ".pdf", "C:\wohinauchimmer\" 
    RS.Movenext
    Loop
    

    Gruß
    Reinhard Kraasch

  3. Antwort von nach 6 Stunden 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Hallo Michi,

    also zunächst solltest Du deine Tabelle um die Spalte PFAD vom Typ Hyperlink ergänzen. Hier soll anschließend der Pfad zu dem PDF Dokument stehen.
    Dann erzeugst Du im VBA Editor ein neues Modul, in welches Du folgenden Code eingibst:

    pubic sub Pfad_anhängen()
    dim rs as new adodb.recordset
    dim db as new adodob.connection
    set db = currentproject.connection
    with rs
    .activeconnection = db
    .source = "Select * from Artikel"
    .open,,adopenstatic,adlockoptimistic
    end with
    for i = 1 to rs.recordcount
    rs.fields("pfad").value = "c:\pdf\" & rs.fields.("Artikelnummer").value & ".pdf"
    rs.update
    rs.movenext
    next i
    end sub

    mit diesem Code fügst Du in die Spalte Pfad jeweils den Pfad zum jeweiligen Dokument eines jeden Artikels ein.
    Anschließend einmalig ausführen und fertig.

    Sollte sich die Artikeltabelle verändern (neue zusätzliche Artikel oder geänderte Artikelnummern) muss der Code erneut ausgeführt werden.

    Liebe Grüße

    Stephan

  4. Antwort von nach 8 Stunden 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Bau ein Formular, wo nur eine Textbox (TB_PDF_File) drinnen ist. Die hat als Steuerelementinhalt das Feld aus Deiner Tabelle, in der die Pdf-Namen stehen.
    Dazu schaffe eine Schaltfläche (Button, BTN_Starte) mit dem nachfolgenden Code.
    Als letztes Datum muss in Deiner Tabelle bei den PDF-Namen eine 0 (Zahl!) stehen, die leeren Felder der Tabelle müssen mit irgenwas (z.B. 1) gefüllt werden.
    Wenn Du den Knopf klicks, werden die Dateien transportiert.
    <code>
    Private Sub BTN_Starte_Click()
    Dim Get_Name
    Dim Ol_Name As String
    Dim Nw_Name As String
    Dim Ur_Pfad As String
    Dim Ziel_Pfad As String
    Dim File_Check As String

    Ur_Pfad = "C:\Temp\Urpfad\"
    Ziel_Pfad = "C:\Temp\Zielpfad\"


    DoCmd.GoToRecord , , acFirst


    While TB_PDF_File <> 0


    Get_Name = TB_EAN13
    Ol_Name = Ur_Pfad & Get_Name ' ggf. & ".pdf" ' falls die Endung nicht gespeichert ist


    Nw_Name = Ziel_Pfad & Get_Name ' ggf. & ".pdf" ' falls die Endung nicht gespeichert ist
    File_Check = Dir(Ol_Name, vbNormal)
    If File_Check > "" Then
    FileCopy Ol_Name, Nw_Name
    End If
    DoCmd.GoToRecord , , acNext


    Wend

    End Sub
    </code>

  5. Antwort von nach 8 Stunden 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Hallo Michi,

    leider verstehe ich Deine Frage nicht ganz.
    Ich würde das so interpretieren:
    Du hast ein Verzeichnis
    c:\PDF\
    in diesem Verzeichnis liegen z.B. 5.000 PDFs mit den Namen Artikelnummer.pdf. Nun hast Du in einer Access - Tabelle / Abfrage eine Auswahl von z.B. 100 Artikel. Jetzt willst Du die PDFs zu diesen 100 Artikel aus
    c:\PDF\
    nach (z.B.)
    c:\PDF-Versand\
    kopieren.
    Ist das so richtig?
    Wenn ja, und Du noch keine Lösung gefunden hast, melde dich wieder, ich mache mich dann schlau.

    Bis dann
    Karsten

  6. Antwort von nach 21 Stunden 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Es geht natürlich auch ohne Formular:

    Die Tabelle heißt bei mir Produkte und das Felsd ArtikelNr

    Private Sub Export_Pdf()
    Dim strSQL As String
    Dim db As DAO.Database '
    Dim rs As DAO.Recordset '
    Dim CopyDatei As String
    Dim PasteDatei As String
    Dim File_Check As String
    strSQL = "SELECT * FROM Produkte WHERE ArtikelNr IS NOT NULL;"
    Set db = CurrentDb
    Set rs = db.OpenRecordset(strSQL)
    rs.MoveFirst
    Do Until rs.EOF
    CopyDatei = "C:\Temp\Urpfad\" & rs!ArtikelNr & ".pdf"
    PasteDatei = "C:\Temp\Zielpfad\" & rs!ArtikelNr & ".pdf"
    File_Check = Dir(CopyDatei)
    If File_Check > "" Then
    FileCopy CopyDatei, PasteDatei
    End If
    rs.MoveNext
    Loop
    End Sub
    

  7. Antwort von - abgemeldetes Mitglied - nach einem Tag 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Hallo Michi,

    Leider hast Du praktisch keine Details genannt. Ich werde
    also Deine Tabelle mit den Artikelnummern "Artikel" nennen
    und das Feld, welches die Nummern speichert, "ArtNr". Norma-
    lerweise sollte die ArtNr der Primärindex der Tabelle sein,
    da Du aber keine Information nennst, werde ich nicht davon
    ausgehen. Da Deine PDF's <ArtikelNumnmer>.pdf heißen, müssen
    die Artikelnummern aber alphanumerisch sein. Das PDF-Quell-
    verzeichnis nenne ich kurz "Quelle" (= C:\PDF\"), das Ziel-
    verzeichnis "Ziel" (den Verzeichnisnamen mußt Du entsprechend
    selbst einsetzen).

    Die Prozedur für das Kopieren aller PDF's, für welche in der
    Tabelle "Artikel" eine Entsprechung in der ArtikelNr vorliegt,
    in das Verzeichnis "Ziel", schreibst Du in einen Modul, die
    Ausführung startest Du z.B. im Direktbereich (Aufruf erfolgt
    in der Entwicklungsumgebung mit Strg+G), indem Du die Funktion
    dort aufrufst. Dazu schreibst Du nur den Funktionsnamen

    PDF_Copy
    

    und bestätigst dann mit <Enter>.

    Bitte beachte, daß Du einen Verweis auf

    "Microsoft DAO 3.6 Object Library"
    

    setzen mußt! Das erledigst Du über das Menü EXTRAS, Menüpunkt
    Verweise.

    Die Prozedur lautet:

    Function PDF_Copy() As Variant
    Const Quelle As String = "C:\PDF\"
    Const Ziel As String = "C:\PDF\Copy\"
    Const Tabelle As String = "Artikel"
    Const Feld As String = "ArtNr"
    Dim DB As DAO.Database
    Dim RS As DAO.Recordset
    Dim sql As String, Artikel As String
    On Error Resume Next
    sql = "Select [" & Feld & "] from [" & Tabelle & "] order by [" & Feld & "];"
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset(sql, dbOpenSnapshot)
    With RS
    .MoveFirst
    Do While Not .EOF
    Artikel = .Fields(Feld).Value
    FileCopy Quelle & Artikel & ".pdf", Ziel & Artikel & ".pdf"
    If err Then
    MsgBox "Fehler: " & Error, vbOKOnly, "Fehler:"
    End If
    .MoveNext
    Loop
    .Close
    End With
    Set RS = Nothing
    End Function
    

    Wenn ein PDF-File zu einer in "Artikel" vorhandenen ArtNr
    in "Quelle" fehlt, erfolgt eine Fehlermeldung, nach
    Bestätigung wird einfach mit der nächsten gespeicherten
    ArtNr fortgesetzt wird. Die von Dir benötigten Namen mußt
    Du im Beginn der Prozedur bei Const Quelle = usw. nach
    Deinem Bedarf einsetzen.

    Gruß
    gs

  8. Antwort von nach 5 Tagen 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    Kann dir leider in Access nicht weiterhelfen. bin mehr in Excel (VBA) tätig

  9. Antwort von nach 36 Tagen 0 hilfreich
    Re: Datei aus Access 2010 kopieren? - Pfad in Tabelle

    War wohl nicht so wichtig ...

    Jetzt auf diese Frage antworten.