collegamento



  • collegamento
    di stefanmi data: 15/08/2014 10:02:10

    salve e buon ferragosto, avrei un problema, devo collegare un file excel per aggiornamento automatico però il file ogni giorno cambia nome es. articoli_20140809.xls "articoli" è sempre uguale, grazie



  • di stefanmi data: 15/08/2014 10:07:13

    non so se puo' servire ma questo è il codice connessione
     
    Provider=Microsoft.ACE.OLEDB.12.0;Password="";User ID=Admin;Data Source=C:UsersstefanoDocumentsMy Dropboxdativenditadatiarticoli_20140809.xls;Mode=Share Deny Write;Extended Properties="HDR=YES;";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=34;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False



  • di lepat (utente non iscritto) data: 15/08/2014 10:17:07

    Come effettui il collegamento ? hai provato a registrare una macro ? allega un esempio



  • di stefanmi data: 15/08/2014 10:19:29

    no, nessuna macro ho fatto un collegamento normale



  • di lepat (utente non iscritto) data: 15/08/2014 10:29:28

    ripeto la domanda, Come effettui il collegamento ? te lo chiedo perché io non l'ho mai fatto e non so come si fa manualmente, però se fosse possibile farlo tramite macro si potrebbe prevedere la scelta del file dalla cartella



  • di stefanmi data: 15/08/2014 10:36:12

    lo fa automaticamente ho solo scelto il file da connessioni nella sezione "dati"



  • di stefanmi data: 15/08/2014 10:56:42

    ho provato a registrare una macro del collegamento, forse intendevi questo?
     
    Range("L1").Select
        Workbooks("riepilogo_periodo_coll.xlsm").Connections.AddFromFile _
            "C:UsersstefanoDocumentsMy Dropboxdativenditadatiarticoli_20140809.xls"
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=C:UsersstefanoDocumentsMy Dropboxdativenditadatia" _
            , _
            "rticoli_20140809.xls;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path=""" _
            , _
            """;Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=34;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;" _
            , _
            "Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt" _
            , _
            " Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;" _
            , _
            "Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Byp" _
            , "ass ChoiceField Validation=False"), Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdTable
            .CommandText = Array("articoli_20140809$")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = _
            "C:UsersstefanoDocumentsMy Dropboxdativenditadatiarticoli_20140809.xls"
            .ListObject.DisplayName = "Tabella_articoli_20140810"
            .Refresh BackgroundQuery:=False
        End With
        Range("I1").Select
    End Sub



  • di lepat (utente non iscritto) data: 15/08/2014 11:46:42

    si intendevo proprio questo, la macro funziona ? allega i 2 file e ti modifico la macro in modo da poter selezionare il file dalla cartella



  • di stefanmi data: 15/08/2014 12:01:00

    non lo so ho solo registrato la macro il collegamento funzionava, un file è quasi 20 mb si puo' caricare?



  • di lepat (utente non iscritto) data: 15/08/2014 12:14:39

    riducilo a poche righe e allegalo, mi serve per testare la macro



  • di stefanmi data: 15/08/2014 12:21:42

    ho creato un file con lo stesso nome



  • di lepat (utente non iscritto) data: 15/08/2014 13:00:07

    prova questa macro
     
    Sub b()
    With Application.FileDialog(msoFileDialogOpen)
      .InitialFileName = "C:UsersstefanoDocumentsMy Dropboxdativenditadati*.xls"
      .Title = "Seleziona il File"
      .AllowMultiSelect = False
      .Show
      If .SelectedItems.Count = 0 Then Exit Sub
      strFile = .SelectedItems(1)
    End With
        ThisWorkbook.Connections.AddFromFile strFile
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & strFile & ";Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path=""" _
            , _
            """;Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=34;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;" _
            , _
            "Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt" _
            , _
            " Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;" _
            , _
            "Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Byp" _
            , "ass ChoiceField Validation=False"), Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdTable
            .CommandText = Array("articoli_20140809$")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = strFile
            .ListObject.DisplayName = "Tabella_articoli_20140810"
            .Refresh BackgroundQuery:=False
        End With
    
    End Sub
    
    



  • di stefanmi data: 15/08/2014 13:16:47

    forse mi sono spiegato male, il collegamento funziona, io però ho bisogno che il collegamento cambi ogni giorno perchè il file di origine ogni giorno viene salvato da un altro programma con la data del giorno corrente es oggi "articoli_20140810"



  • di lepat (utente non iscritto) data: 15/08/2014 13:57:20

    ti sei spiegato bene, la macro che ti ho dato ti permette di scegliere il file dalla cartella, basta selezionarlo, l'hai provata ?



  • di stefanmi data: 15/08/2014 15:17:59

    si, mi chiede quale file collegare, però non ho capito ogni giorno devo ricollegare i file?



  • di Raffaele_53 (utente non iscritto) data: 15/08/2014 15:59:10

    >>>con la data del giorno corrente es oggi "articoli_20140810"
    Oggi sarebbe articoli_20140815.xls

    Questo pezzo di codice potrebbe farlo giornalmente se premi SI e manualmente se premi NO
     
    Option Explicit
    
    Sub Aggiorna()
    Dim Risposta As Integer, File As String, Path As String
    Path = "C:UserslelloDocuments" 'da cambiareeeeeeeeeeee
    File = "articoli_" & Year(Date) & Format(Date, "mm") & Format(Date, "dd") & ".xls"
    Risposta = MsgBox(prompt:="Desideri aprire il files " & File & " ?", Buttons:=vbYesNo)
    
        If Risposta = vbYes Then
            If Dir(Path & File) <> "" Then
                Workbooks.Open Path & File
            Else
                MsgBox "Il file non Esiste"
                Exit Sub
                End If
        Else
            File = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Seleziona il file e premi 'Apri'", , False)
            Workbooks.Open File
        End If
        '........Codice per aggiornare
       End Sub



  • di stefanmi data: 15/08/2014 16:59:53

    scusa ma sono proprio negato, io ho copiato questo , però non capisco cosa devo copiare ancora
     
    Option Explicit
    
    Sub Aggiorna()
    Dim Risposta As Integer, File As String, Path As String
    Path = "C:UsersstefanoDocumentsMy Dropboxdativenditadatiarticoli_20140809.xls"
    File = "articoli_" & Year(Date) & Format(Date, "mm") & Format(Date, "dd") & ".xls"
    Risposta = MsgBox(prompt:="Desideri aprire il files " & File & " ?", Buttons:=vbYesNo)
    
        If Risposta = vbYes Then
            If Dir(Path & File) <> "" Then
                Workbooks.Open Path & File
            Else
                MsgBox "Il file non Esiste"
                Exit Sub
                End If
        Else
            File = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Seleziona il file e premi 'Apri'", , False)
            Workbooks.Open File
        End If
        
       End Sub
    



  • di lepat (utente non iscritto) data: 15/08/2014 17:58:25

    citazione
    si, mi chiede quale file collegare, però non ho capito ogni giorno devo ricollegare i file?

    l'hai detto tu che ogni giorno cambia il nome del file



  • di lepat (utente non iscritto) data: 15/08/2014 18:01:34

    il mio codice ti permette di scegliere il file invece che cambiare la macro



  • di stefanmi data: 16/08/2014 00:44:55

    collego un file all'altro per scaricare i dati, quando il file non cambia nome non c'e' problema perchè aggiorna automaticamente, però questo file cambia nome ogni volta, quindi vorrei che riconoscesse ogni volta il nome del file



  • di Raffaele_53 (utente non iscritto) data: 16/08/2014 04:29:43

    >>>vorrei che riconoscesse ogni volta il nome del file

    Allegato. Riconosce solo il files che ha la data odierna.
    Pertanto oggi articoli_20140816.xls lo aprirà, domani funziona solo con articoli_20140817.xls

    Ps cambia la Path e se il NomeFoglio all'interno non è uguale al file va in errore



  • di lepat (utente non iscritto) data: 16/08/2014 11:26:39

    nella cartella che contiene i file da aprire ci possono essere più file o sempre uno solo, l'ultimo ?



  • di stefanmi data: 18/08/2014 09:01:51

    scusate, ho provato ma mi da errore non copia la tabella, stavo pensando di risolvere rinominando il file con lo stesso nome forse è piu' semplice



  • di lepat (utente non iscritto) data: 18/08/2014 10:57:22

    che ne dici di rispondere alle domande invece di farne di nuove ?



  • di stefanmi data: 18/08/2014 12:00:33

    hai ragione lepat, ci sono altri file, scusa



  • di Raffaele_53 (utente non iscritto) data: 18/08/2014 16:27:00

    Senza Volermi sovvraporre a Lepat (ciao)
    Posso sapere cosa hai provato?

    >>>ho provato ma mi da errore non copia la tabella
    Forse il mio allegato? Oggi 18/08/2014 e dentro c'è il foglio col nome articoli_20140818?



  • di stefanmi data: 18/08/2014 21:17:51

    in questi giorni non posso provare con dei file nuovi, da domani ricomincio a lavorare, però si quando doveva copiare la tabella mi dava errore



  • di stefanmi data: 19/08/2014 20:42:28

    nel frattempo ho installato l'ultima versione di office 365 e non mi funzionano piu' i collegamenti che avevo tra acces e dei file *dbf quindi non posso provare piu' niente nemmeno quelli di excel perchè erano tutti collegati da query



  • di Raffaele_53 (utente non iscritto) data: 20/08/2014 14:49:08

    Onestamente questa richiesta del collegamento a me non piace per nulla.

    Premesso che ho fatto fatica ad elaborare quello che desideraVi (anche a me dava errore all'inizio).
    Mi sono accorto di varie magagne. Usando il files riepilogo_periodo.XLSM, crei dentro al files dei NOMI (li vedi in FOMULE/GESTIONE NOMI) che si chiamano come la tabella che stai per importare. In teoria usando il codice importi la tabella creando un nome.
    Subito dopo non puoi più usare il codice per lo stesso file perchè il NOME della tabella esiste già.

    Cercando di decifrare la Tua richiesta, non sarebbe meglio copiare solamente il foglio giornaliero in un nuovo foglio (col nome della tabella). Senza fare il collegamento?

    Ps. Aspetto che metti a posto/disinstalli office 365



  • di stefanmi data: 20/08/2014 20:02:14

    in questo file ho altri collegamenti e funzionano bene perchè hanno lo stesso nome tutti giorni, per il momento ho risolto rinominando il file "magazzino" sembra che così funziona, il problema di office 365 l'ho risolto tornando a office 2010 così funziona tutto, comunque grazie sempre gentilissimi tutti