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

[2010] trasformare un codice VBA di Excel in Access

45 views
Skip to first unread message

Ammammata

unread,
Aug 20, 2014, 5:33:17 AM8/20/14
to
Buongiorno a tutti

sto cercando una via alternativa per la conversione di file DBF
(VisualFoxPro) in tabelle Access

In EXCEL ho creato una piccola macro che mi apre i DBF e me li salva in
XLSX (con perdita dei campi Memo, ma non importa):

Sub Convert_DBF_to_XLSX()
'
' opens all DBF files and convert to XLSX
'

'

Dim MyName As String
ChDir "C:\dati"

MyName = Dir("*.dbf")
Do While MyName <> ""
With ctl
On Error Resume Next
Kill MyName + ".xlsx"
Workbooks.Open Filename:=MyName
ActiveWorkbook.SaveAs Filename:=MyName + ".xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True
Workbooks.Close
End With
MyName = Dir
Loop

End Sub

(non � ancora stata parametrizzata con il nome della directory, ci penser�
dopo, se necessario)

poi, in ACCESS, ho creato una macro simile che mi converte i file XLSX in
tabelle:


Private Sub CreateArchiveButton_Click()

Dim MyName, TableName As String
ChDir SourceFilePath

MyName = Dir("*.xlsx")
Do While MyName <> ""
With ctl
TableName = Left(MyName, Len(MyName) - 9)
On Error Resume Next
DoCmd.DeleteObject (TableName)
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9,
TableName, MyName, True
End With
MyName = Dir
Loop

End Sub


E anche questa funziona :)


Adesso, per semplificare le cose, mi piacerebbe integrare in ACCESS la
macro di EXCEL: � possibile? ci sono i comandi corrispondenti a
Workbooks.Open, ActiveWorkbook.SaveAs e Workbooks.Close?

Grazie

--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
>>>>> http://www.bb2002.it :) <<<<<
........... [ al lavoro ] ...........

Simone Calligaris

unread,
Aug 25, 2014, 12:50:30 PM8/25/14
to

"Ammammata" <

(cut)

> Adesso, per semplificare le cose, mi piacerebbe integrare in ACCESS la
> macro di EXCEL: � possibile? ci sono i comandi corrispondenti a
> Workbooks.Open, ActiveWorkbook.SaveAs e Workbooks.Close?


Hai preso in considerazione l'automazione OLE da Access ad Excel?


Ammammata

unread,
Aug 26, 2014, 7:43:48 AM8/26/14
to
Il giorno Mon 25 Aug 2014 06:50:30p, *Simone Calligaris* inviava su
it.comp.appl.access il messaggio news:ltfpb9$nc4$1...@speranza.aioe.org.
Vediamo cosa scrisse:

>
>
> Hai preso in considerazione l'automazione OLE da Access ad Excel?
>
>
>

ehm... intendi dire di eseguire excel (e relativa macro) da dentro Access e
al termine riprendere il controllo?

@Alex

unread,
Aug 26, 2014, 7:57:37 AM8/26/14
to
Quella macro non fa nulla di fatto... se il tuo intento è importare i dati in Access mi chiedo perchè non importarli in Access, ti assicuro che disponi del Driver ODBC per accedere al File VisualFoxPro direttamente...

Hai valutato l'opzione di usare il metodo [TransferDatabase] come descritto nella guida ed implementare la Connection string ODBC(non OLE DB che non è supportata) al DB VFP(DBF)...?

Credo ceh se ti crei un DSN la cosa possa risultare più semplice...

DoCmd.TransferDatabase acLink, "ODBC Database", _
"ODBC;DSN=DataSource1;UID=User2;PWD=www;LANGUAGE=us_english;" _
& "DATABASE=pubs", acTable, "Authors", "dboAuthors"


Non ho testato con FoxPro, ma ad esempio per importare un File di Testo io uso questo:

INSERT INTO T1
SELECT fldName1 AS MyFieldName1, fldName2 AS MyFieldname2
FROM [TEXT;HDR=YES;DATABASE=C:\myData\].TextImport.txt;

ed anche questo funziona:

SELECT * INTO NewTable
FROM [;DATABASE=Z:\Docs\Test.mdb].Table1

Ultima chance è una QueryPassTrought in cui la ConnectionString è sempre quella ODBC a FoxPro che esegua un INSERT in una LocalTable.

Vedi tu...

@Alex

Ammammata

unread,
Aug 26, 2014, 4:09:59 PM8/26/14
to
Il Tue, 26 Aug 2014 04:57:37 -0700, @Alex ha scritto:

> Quella macro non fa nulla di fatto... se il tuo intento è importare i
> dati in Access mi chiedo perchè non importarli in Access, ti assicuro
> che disponi del Driver ODBC per accedere al File VisualFoxPro
> direttamente...
>

in windows 64bit i vecchi driver odbc non funzionano; ci sono *forse*
soluzioni a pagamento (Sybase?) ma ho fatto qualche esperimento senza
ottenere nulla
la soluzione in due passate funziona egregiamente (ho inserito nuove
istruzioni per gestire errori, tabelle doppie, etc e adesso direi che ci
siamo), se trovo il modo di unificare bene, altrimenti l'utente si deve
rassegnare a fare ben due click

> Non ho testato con FoxPro,

ecco, fai pure qualche prova e "vedrai che ridere" (cit.)

--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\ ... ¯\_(ツ)_/¯

Simone Calligaris

unread,
Aug 27, 2014, 7:30:25 AM8/27/14
to

"Ammammata"

<amma...@tiscalinet.it> ha scritto nel messaggio
>> Hai preso in considerazione l'automazione OLE da Access ad Excel?


> ehm... intendi dire di eseguire excel (e relativa macro) da dentro Access
> e
> al termine riprendere il controllo?


Beh, s�.
Trovi molti esempi per governare tutte le applicazioni Office da Access,
tramite automazione OLE.
Dovrebbe fare al caso tuo.

Saluti estivi


Ammammata

unread,
Aug 27, 2014, 9:44:16 AM8/27/14
to
Il giorno Wed 27 Aug 2014 01:30:25p, *Simone Calligaris* inviava su
it.comp.appl.access il messaggio news:ltkfb8$j9l$1...@speranza.aioe.org.
Vediamo cosa scrisse:

> Trovi molti esempi per governare tutte le applicazioni Office da Access,
> tramite automazione OLE.
>

yes, ce ne sono a carrettate, trovate sia in italiano che in inglese

nessuno per� che dice le cose da fare PRIMA, per esempio:

- salvare il foglio excel che contiene la macro nel formato xlsm
- aggiungere il percorso del file excel a quelli Trusted
- il file C:\Users\Utente\AppData\Roaming\Microsoft_
\Excel\XLSTART\PERSONAL.XLSB non viene aperto di default
- abilitare l'esecuzione delle macro da cartelle di rete
- altre cose che adesso non ricordo talmente erano tante

e comunque, alla fine, mi apre il foglio ma non mi esegue la macro:

Cannot run the macro 'Convert_DBF_to_XLSX'. The macro may not be available
in this workbook or all macros may be disabled.

La macro c'� eccome, anzi c'� due volte in quanto � sia nel file dummy che
ho creato che nel personal.xlsb (che ho fatto in modo che venga aperto)

Allora, tra le millemila opzioni di cui ho scritto all'inizio, ce ne �
ancora una che ho lasciato disattivata...

r ha ory inssnaphyb n znzznfbsg aba tyvryb gbtyvr arffhab :(
0 new messages