> > ho la necessità di esportare una tabella in un file Excel e per semplicità vorrei utilizzare il comando:
> > DoCmd.TransferSpreadsheet acExport, , strTable, strPathFile
> > L'esportazione avviene correttamente se strPathFile è un percorso locale del tipo:
> > C:\Share\File.xlsx
> > Invece lo stesso comando non funziona se il percorso è in rete, per esempio:
> > \\Server\Share\File.xlsx oppure \\<indirizzo ip>\Share\File.xlsx
> Per antichi problemi d'affidabilità (occasionali malfunzionamenti del Driver d'esportazione in vecchie versioni di Access) non utilizzo TransferSpreadSheet, quindi non posso confermare o smentire, ma puoi tentare d'aggirare il problema:
> - Puoi provare a invocare localmente, nel percorso del FE, il docmd.transferspreadsheet e poi (ammesso che attenda la fine del processo) utilizzare FileCopy per trasferire tale file nel percorso di rete
> - Oppure, dopo aver aperto un recordset sulla tabella, utilizzi l'automazione OLE verso excel per creare il File, ciclando sui Fields del Rst
Grazie, stavo per seguire la strada del copia da locale su rete, ma mi sono accorto delle seguenti "stranezze" che hanno portato alla soluzione:
Funziona (percorso locale con estensione file):
DoCmd.TransferSpreadsheet acExport, , strTable, "c:\Share\Table.xlsx"
Non funziona (percorso di rete con estensione file):
strPath = "\\<indirizzo ip>\Share\"
strPathFile = strPathFile & strFile & ".xslx"
DoCmd.TransferSpreadsheet acExport, , strTable, strPathFile
Funziona (percorso di rete *senza* estensione file):
strPath = "\\<indirizzo ip>\Share\"
strPathFile = strPathFile & strFile
DoCmd.TransferSpreadsheet acExport, , strTable, strPathFile
Se può essere utile anche ad altri, ne deduco che il problema è nello specificare percorsi di rete con nomefile comprensivo di estensione.
Non specificando l'estensione comincia a funzionare tutto, forse aggiungendola in automatico non accetta la doppia ".xlsx.xlsx" su percorsi di rete (fenomeno legato al file system?).