2010-09-20 2 views
9

Ho bisogno di essere in grado di SFTP anche se VBA. Ho un programma di accesso che estrae dati, li manipola e ora devo trovare un modo per caricare il file excel 07 tramite SFTP.Caricamento SFTP con VBA

ho cercato in rete per giorni e non riesco a trovare nulla. Ho visto un argomento simile qui How to use sftp from within an MS Access database module? e mi piacerebbe trovare Mat Nadrofsky, perché sembrava che avesse una soluzione, non riesco a capirlo)))))))))))

so se qualcuno può spiegare che cosa quella soluzione era circa o ha una soluzione diversa - mi piacerebbe davvero grato grazie

risposta

12

Nella precedente risposta SO collegata, Mat Nadrofsky ha utilizzato un client della riga di comando sftp. In questo esempio il mio client sftp è pscp.exe. Questo cliente è parte degli strumenti PuTTY: PuTTY Download Page

voglio costruire ed eseguire un comando come questo per copiare sample.txt alla mia home directory sulla macchina remota:

"C:\Program Files\PuTTY\pscp.exe" -sftp -l hans -pw changeme C:\Access\sample.txt 192.168.1.6:/home/hans/ 

Quindi questa procedura si baserà ed esegui quella stringa di comando.

Public Sub SftpPut() 
    Const cstrSftp As String = """C:\Program Files\PuTTY\pscp.exe""" 
    Dim strCommand As String 
    Dim pUser As String 
    Dim pPass As String 
    Dim pHost As String 
    Dim pFile As String 
    Dim pRemotePath As String 

    pUser = "hans" 
    pPass = "changeme" 
    pHost = "192.168.1.6" 
    pFile = "C:\Access\sample.txt" 
    pRemotePath = "/home/hans/" 

    strCommand = cstrSftp & " -sftp -l " & pUser & " -pw " & pPass & _ 
     " " & pFile & " " & pHost & ":" & pRemotePath 
    Debug.Print strCommand 
    Shell strCommand, 1 ' vbNormalFocus ' 
End Sub 

Si può preferire ShellAndWait invece di Shell, come David Fenton ha suggerito in un commento alla risposta precedente.

+0

prima di tutto, grazie mille. Sono stato in grado di trovare il ragazzo dal post di collegamento e mi ha detto di stucco e sono stato in grado di farlo funzionare con stucco e ShellAndWait. il tuo codice VBA è molto meglio del mio però))))))))))))) Un problema, funziona su un laptop aziendale da casa ma non dal lavoro.sono sicuro che qualcosa lo stia spazzando via, e ho chiesto all'IT di vedere di cosa si tratta, ma sono passati giorni, ha provato alcune cose e ho la sensazione che tornerà e dirà "Carica a mano". quindi non sono sicuro di dove sono ora, se è bloccato a causa di stucco o cosa – lalachka

+0

ho appena notato qualcosa, stai usando pscp.exe. stavo usando psftp.exe, anche da Putty. C'è una possibilità che pscp.exe non verrà bloccato e psftp.exe è? mi sembra improbabile, ma sono disperata per avere tutto automatizzato e pronto a provare qualsiasi cosa. mi sembra semplicemente sbagliato avere un programma automatizzato fino a un clic e sftp a mano. spero che qualcuno capisca. – lalachka

+0

Sei in grado di caricare con sftp con qualsiasi metodo dalla tua rete di lavoro? In caso contrario, suppongo che la porta sftp sia bloccata lì. Dubito che pscp.exe vs psftp.exe farebbe la differenza, ma puoi provare a cambiare comunque. Quale risposta vedi nella finestra della shell quando non funziona? – HansUp

-1

ho fatto nel modo seguente in Access 97:

  1. Acquista un client SFTP che ha un OCX disponibile per MS Access
  2. Scrittura del codice VBA per utilizzare il controllo SFTP

In un caso particolare, non esisteva alcun OCX - solo eseguibile - dovevamo fare un file batch per quello.

+0

grazie, come ho detto di seguito, la mia azienda non pagherà per questo, quindi sto cercando di vedere se c'è qualcosa che posso fare per codice. sembra che sul link che sto dando nel mio post abbiano trovato una soluzione, semplicemente non ho abbastanza conoscenza per capire cosa volessero dire – lalachka

+0

Probabilmente finirai per passare più tempo a costruire qualcosa tu stesso che a comprare solo una parte il componente scaffale. Build-vs-buy –

+0

true, e in alcuni casi vale la pena comprarlo, ma nel processo ho anche imparato molto, e in secondo luogo, in questo caso non ho scelta. ho bisogno di automatizzare un passaggio che altrimenti potrei fare a mano. la mia compagnia non pagherà mai per quello e capisco perfettamente. comunque, l'ho fatto funzionare. – lalachka

0

Avresti bisogno di un controllo ActiveX SFTP che funziona in Access. So che our SFTP control viene utilizzato da alcuni clienti in VBA e in Access in particolare.

+0

ho visto il tuo sito prima e sembra che funzionerebbe per me, tranne che ho bisogno di fare questo per salvarmi qualche passo che altrimenti posso fare a mano e la mia azienda non pagherà mai per quello))))) grazie comunque – lalachka