Condividi tramite

Codice macro esportazione in .CSV?

Anonimo
2012-10-22T16:12:32+00:00

Ciao a tutti, cerco un codice macro da applicare ad un bottone di un file che andrò a comporre...che mi permetta di esportare in una cartella che chiamo "CONDIVISA" sul DESKTOP, un range del mio foglio excel precisamente A2:Z100 in formato .CSV

Microsoft 365 e Office | Excel | 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

  1. Anonimo
    2012-10-23T05:14:33+00:00

    Grazie Mauro...mi puoi indicare per un futuro...qualora riutilizzassi questa macro in altri file su quali stringhe devo agire?

    Mi riferisco al semplice cambio di range di selezione!

    E' tutto in questa parte del codice:

    With Worksheets("Foglio1")

        For lRiga = 2 To 100

            sTemp = ""

            For lCol = 1 To 26

                sTemp = sTemp & .Cells(lRiga, lCol).Value & ";"

            Next

            sTesto = sTesto & Mid(sTemp, 1, Len(sTemp) - 1) & vbNewLine

        Next

    End With

    Foglio1 va modificato con il nome del foglio dal quale copi i dati.

    For lRiga = 2 To 100, sta a significare che prendiamo i dati da riga 2 a riga 100 e lCol = 1 To 26 che per ogni riga prendiamo 26 celle.

    Se (se) la tabella dalla quale prendi i dati è *isolata* dal resto del codice e non ha righe/colonne vuote, possiamo modificare il codice della sub m così:

    Public Sub m()

        Dim FileNum As Integer

        Dim sTesto As String

        Dim sTemp As String

        Dim lRiga As Long

        Dim lRighe As Long

        Dim lCol As Long

        FileNum = FreeFile

        If Dir(myDesktop & "\Condivisa\NomeFile.csv") <> "" Then

            Kill myDesktop & "\Condivisa\NomeFile.csv"

            Open myDesktop & "\Condivisa\NomeFile.csv" For Append As #FileNum

        Else

            Open myDesktop & "\Condivisa\NomeFile.csv" For Output As #FileNum

        End If

        With Worksheets("Foglio1")

            lRighe = .Range("A1").CurrentRegion.SpecialCells(xlCellTypeLastCell).Row

            lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

            For lRiga = 2 To lRighe

                sTemp = ""

                For lCol = 1 To 26

                    sTemp = sTemp & .Cells(lRiga, lCol).Value & ";"

                Next

                 sTesto = sTesto & Mid(sTemp, 1, Len(sTemp) - 1) & vbNewLine

            Next

         End With

        Print #FileNum, sTesto

        Close #FileNum

    End Sub

    In questo modo non devi più preoccuparti delle dimensioni della tabella.

    NOTA. Nell'esempio considero che la tua tabella inizi da A1 e che nella prima riga tu abbia una intestazione che non vuoi portare nel .csv.

    La risposta è stata utile?

    0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-10-23T10:41:53+00:00

    Grazie Mauro...sei unico! 

    Ma grazie a te per il cortese riscontro e buon lavoro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-10-23T08:50:39+00:00

    Grazie Mauro...sei unico!

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-10-22T18:06:25+00:00

    Grazie Mauro...mi puoi indicare per un futuro...qualora riutilizzassi questa macro in altri file su quali stringhe devo agire?

    Mi riferisco al semplice cambio di range di selezione!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-10-22T16:58:42+00:00

    Ciao a tutti, cerco un codice macro da applicare ad un bottone di un file che andrò a comporre...che mi permetta di esportare in una cartella che chiamo "CONDIVISA" sul DESKTOP, un range del mio foglio excel precisamente A2:Z100 in formato .CSV 

    Questo fa quanto chiedi con i dati del Foglio1 per il Range che hai indicato:

    Public Sub m()

        Dim FileNum As Integer

        Dim sTesto As String

        Dim sTemp As String

        Dim lRiga As Long

        Dim lCol As Long

        FileNum = FreeFile

        If Dir(myDesktop & "\Condivisa\NomeFile.csv") <> "" Then

            Kill myDesktop & "\Condivisa\NomeFile.csv"

            Open myDesktop & "\Condivisa\NomeFile.csv" For Append As #FileNum

        Else

            Open myDesktop & "\Condivisa\NomeFile.csv" For Output As #FileNum

        End If

        With Worksheets("Foglio1")

            For lRiga = 2 To 100

                sTemp = ""

                For lCol = 1 To 26

                    sTemp = sTemp & .Cells(lRiga, lCol).Value & ";"

                Next

                sTesto = sTesto & Mid(sTemp, 1, Len(sTemp) - 1) & vbNewLine

            Next

         End With

        Print #FileNum, sTesto

        Close #FileNum

    End Sub

    Public Function myDesktop() As String

        Dim objWSHShell As Object

        Set objWSHShell = CreateObject("WScript.Shell")

        myDesktop = objWSHShell.SpecialFolders("Desktop")

        Set objWSHShell = Nothing

    End Function

    La risposta è stata utile?

    0 commenti Nessun commento