Aprire file Excel formato xlsm da Access con VBA

Anonimo
2019-12-02T17:31:36+00:00

Buongiorno

dopo molti tentativi sono a chiedere il vostro aiuto su una questione che inizialmente mi sembrava banale ossia aprire con codice un file Excel con macro, estensione, xlsm, da Access.

Grazie per ogni suggerimento

Paolo

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

6 risposte

Ordina per: Più utili
  1. Anonimo
    2019-12-04T11:15:57+00:00

    Ciao Sandro

    chiarisco cosa devo fare.

    Devo accodare ad una tabella di un file di Access (T1) dei record contenuti in un file di Excel (E1) che viene aggiornato periodicamente.

    Il file contiene di Excel contiene una colonna vuota che io devo implementare con un valore che posso ricavare da un' altra tabella (T2) del database in Access.

    Per fare questo ho trovato due vie:

    La prima, viste le mie scarse conoscenze di VBA, è stata quella di esportare la tabella (T2) con il dato che mi serve da Access in un file Excel(E2)  e completare, con un cerca.vert, il file Excel (E1).

    A questo punto accodo il file Excel (E1) completo alla tabella di Access (T1). Questo metodo funziona.

    La seconda, penso fattibile, sarebbe quella di importare il file Excel (E1) incompleto in una tabella in Access (T3) e, con una query di aggiornamento, compilare il campo mancante in T3, ricavandolo da T2, e poi accodare la tabella T3 alla tabella T1.

    Questo non riesco a farlo, sebbene stia pensando sia il metodo migliore.

    Scusa ma sono "preso con le bombe" e faccio fatica ad inviare i dati.

    Se mi puoi aggiornare sul secondo metodo, se percorribile, te ne sarei molto grato.

    ciao

    paolo

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2019-12-03T06:37:17+00:00

    ciao Paolo,

    […]

    risolto!!

    [...]

    sei sicuro….? non mi è chiaro quello che stai facendo, ma l'apertura di un file di Excel da Access mi pare sia proprio l' ultimo dei problemi.

    i dati sono tutti in Access? perché esportarli in Xls per poi reimportarli ? per fare questo si possono utilizzare actions queries e non è nemmeo detto che serva...duplicare o implementare ridondanze va proprio contro i principi dei database relazionali.

    Ci potrebbero anche essere problemi di normalizzazione alla base di tutto.

    Secondo me, prova a pubblicare una demo senza dati sensibili (OneDriva, Dropbox qualsiasi programma di fileSharing) e spiegare meglio cosa devi fare, e vediamo di valutare se tutto quel importare ed esportare è davvero necessario...

    […]

    grazie mille Sandro

    […]

    prego e facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-12-02T21:54:18+00:00

    risolto!!

    ho utilizzato la seguente istruzione

    Private Sub apri3_Click()

    CreateObject("Shell.Application").Namespace(0).ParseName(strFullPath).InvokeVerb "Open"

    End Sub

    e il file si è aperto

    grazie mille Sandro

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-12-02T21:03:17+00:00

    Ciao Sandro

    le mie conoscenze del VBA sono elementari e purtroppo, sono abbastanza cocciuto quando devo risolvere un problema. Questo fa si che se non ci riesco a risolvere un problema le provo tutte prima di chiedere aiuto.

    Ciò premesso quello che devo fare è questo:

    1. caricare una tabella precompilata, che deve essere aggiornata da una query, con un campo vuoto (T1)
    2. completare la tabella associando al campo vuoto un valore, con un vlookup, da un'altra tabella (T2)
    3. accodare i dati della tabella (T2) completa ad un'altra (T3)

    Per risolvere a modo mio ho esportato la tabella T2 in un file di excel

    con cerca.vert  e del codice sull'apertura del file di excel ho risolto il passo 2

    con import ho importato i dati dalla T3 nel database.

    Se eseguo il processo passo a passo, utilizzando Excel ed Access indipendentemente, tutto funziona.

    Il mio problema sta nel fatto che quando tento di aprire il file di excel da access mi da un errore che ho individuato nel fatto che il file di excel, contenendo codice, deve essere salvato in formato xlsm e non xlsx, e i comandi che ho provato per aprire il file in formato xmls mi danno tutti un errore.

    Ora sto pensando se non sia possibile scrivere una query in access che utilizzi il vlookup per completare la tabella (T1) in access, dopo averla importata,  senza esportarla. Scusa se sono stato prolisso ma questo è il problema!

    grazie comunque, adesso provo le alternative che mi hai proposto

    paolo

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2019-12-02T19:38:38+00:00

    ciao Paolo,

    mi sarebbe piaciuto vedere i tentativi effettuati, prova queste alternativa, ovviamente ce ne sono altre...dipende un po' da quel che  devi fare...

    Option Compare Database

    Option Explicit

    Const strFullPath As String = "C:\Users\sandr\Desktop\tuoFoglioExcell.xlsx"

    Private Sub APRI1_Click()

    Application.FollowHyperlink strFullPath

    End Sub

    Private Sub apri2_Click()

    Dim xlsApp As Object 'Excel.Application

    Dim wbk    As Object 'Excel.Workbook

    Dim e      As Long

    On Error Resume Next

    Set xlsApp = GetObject(, "Excel.Application")

    e = Err.Number

    If Err = 429 Then

       Set xlsApp = CreateObject("Excel.Application")

       e = 0

    End If

    Set wbk = xlsApp.Workbooks.Open(FileName:=strFullPath)

    If e <> 0 Then

        VBA.MsgBox prompt:="qualcosa non va nell'aprire il file :" & strFullPath, _

                   Buttons:=vbCritical + vbOKOnly, _

                   Title:="Attenzione"

    Else

        xlsApp.Visible = True

    End If

    On Error GoTo 0

    End Sub

    Private Sub apri3_Click()

    CreateObject("Shell.Application").Namespace(0).ParseName(strFullPath).InvokeVerb "Open"

    End Sub

    Private Sub apri4_Click()

    Dim retVal As Long

    retVal = Shell("RUNDLL32.EXE URL.DLL,FileProtocolHandler " & strFullPath, vbNormalFocus)

    End Sub

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento