Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TransferSpreadsheet non esporta file su percorso di rete

89 views
Skip to first unread message

caezan

unread,
Jun 28, 2022, 11:59:58 AM6/28/22
to
Salve,
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
Altri comandi come la Open File For Output ecc. funzionano correttamente con qualunque percorso venga specificato.
Ci sono delle limitazioni per il comando TransferSpreadsheet oppure non lo utilizzo correttamente?
Grazie

Simone Calligaris

unread,
Jun 29, 2022, 11:12:31 AM6/29/22
to
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

Saluti

caezan

unread,
Jun 30, 2022, 10:12:12 AM6/30/22
to
> > 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?).
0 new messages