Condividi tramite

Esportare file in xml

Anonimo
2014-12-08T00:45:01+00:00

Ciao,

la seguente routine di qualche tempo fa per esportare un file in xlm (di Giorgio Rancati) adattata al mio scopo, inserita in un database formato Access 2007 non è più valida.

Public Sub EsportXml()

Dim Cn As New ADODB.Connection

Dim Rs As New ADODB.Recordset

Dim strCn As String

Dim strSqlShape As String

strCn = "Provider=MSDataShape" & _

";Data Provider=Microsoft.Jet.OleDb.4.0" & _

";data source=" & CurrentProject.FullName

Cn.Open strCn

strSqlShape = "SHAPE {SELECT * From Tbl1} AS Testata " & _

"APPEND ({SELECT * From Tbl2} AS Dettaglio " & _

"RELATE Id TO Id_Fatture)"

Rs.Open strSqlShape, Cn

Rs.Save "C:\Users\Vladimiro\Desktop\File_XML.xml", adPersistXML

Rs.Close

Cn.Close

Set Rs = Nothing

Set Cn = Nothing

End Sub

Pur modificando i parametri come da esempio nella guida dello stesso database tipo:

Dim Cn As New ADODB.Connection con Dim Cn As Connection oppure Dim Cn As Object

Dim Rs As New ADODB.Recordset con Dim Rs As Recordset oppure Dim Rs As Object

non risolve il problema.

Neanche adPersistXML viene riconosciuto.

Vladimiro

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

Risposta accettata dall'autore della domanda

Anonimo
2014-12-08T23:42:11+00:00

Scusa Giorgio, forse non ho capito, ma io da Excel i file .accdb con ADO li leggo tranquillamente così (in grassetto la parte da modificare per lavorare i fle .accdb):

                cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " _

 

Ciao Mauro,

sì, dimenticavo che poi hanno fatto il provider anche per ado, l'avevo anche suggerito in questo 3d da access ad excel, il tempo passa e quando non usi più una tecnologia si finisce per dimenticarla

:-)

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-12-08T22:52:46+00:00

ovviamente sì, come ti avevo detto ADO non può aprire i databases accdb qualsiasi sia il metodo con cui lo invochi.

Scusa Giorgio, forse non ho capito, ma io da Excel i file .accdb con ADO li leggo tranquillamente così (in grassetto la parte da modificare per lavorare i fle .accdb):

Public Sub mRecuperaDati()

On Error GoTo RigaErrore

    Dim cn As Object

    Dim rs As Object

    Dim sh As Worksheet

    With Application

        .ScreenUpdating = False

        .Calculation = xlManual

        .StatusBar = _

            "Sto eseguendo: Sub mRecuperaDati()"

    End With

    Set cn = CreateObject("ADODB.Connection")

    Set rs = CreateObject("ADODB.Recordset")

    Set sh = Worksheets("Foglio1")

    With sh

        cn.CursorLocation = 1

        cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " _

            & "Data Source=" & ThisWorkbook.Path & _

            "\mioDB.accdb;"

        rs.CursorLocation = 1

        rs.Open "SELECT * FROM Tabella1", cn, 1, 3, 1

        .Range("A2").CopyFromRecordset rs

    End With

RigaChiusura:

    If rs.State = 1 Then

        rs.Close

    End If

    If cn.State = 1 Then

        cn.Close

    End If

    Set sh = Nothing

    Set rs = Nothing

    Set cn = Nothing

    With Application

        .ScreenUpdating = True

        .Calculation = xlAutomatic

        .StatusBar = ""

    End With

    Exit Sub

RigaErrore:

    MsgBox Err.Number & vbNewLine & Err.Description

    Resume RigaChiusura

End Sub

La risposta è stata utile?

0 commenti Nessun commento

29 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-12-08T10:37:42+00:00

    Ciao Giorgio,

    ho fatto come mi hai scritto:

    però mi esce ancora l'errore

    Errore di compilazione: Tipo definito dall'utente non definito.

    Vladimiro

    Ciao Vladimiro,

    a me non esce l'errore, a te che riga viene evidenziata quando si genera l'errore ?

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-12-08T10:05:54+00:00

    Ciao Giorgio,

    ho fatto come mi hai scritto:

    però mi esce ancora l'errore

    Errore di compilazione: Tipo definito dall'utente non definito.

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-12-08T08:33:26+00:00

    Ciao Vladimiro,

    devi inserire nei riferimenti del database lalibreria ADODB.

    Vai nell'editor VBA premendo ALT+F11 poi  premi Strumenti-->Riferimenti, comparirà una mascherina con la lista dei riferimenti disponibili, individua e metti la spunta su "Microsoft Activex  Dataobjects 2.8 Library"

    Rimetti a posto le due righe con

    Dim Cn As New ADODB.Connection

    Dim Rs As New ADODB.Recordset

    Il prefisso ADODB serve identificare in modo sicuro gli oggetti e per distinguerli da quelli omonimi presenti nella libreria DAO.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento