Condividi tramite

vba separeatore nel file csv

Anonimo
2020-06-26T12:51:37+00:00

Buonasera ho creato una macro per salvare un foglio in un file in fomato csv.

Quando apro con notepad mi mette come separatore il punto.

Devo forzare il separatore impostato da sistema, da punto a punto e virgola.

Cosa devo inserire in questa macro perchè mi forzi il separatore

Grazieeeee

Sub esportaCSV04()

    nomefoglio = Sheets("DATI").Range("B31").Value

    Sheets(nomefoglio).Copy

    ChDir "C:\CORRISPETTIVI\CSV\4"

   Application.DisplayAlerts = True

     ActiveWorkbook.SaveAs Filename:= _

        nomefoglio & ".csv", FileFormat:=xlCSV, Password:="", WriteResPassword:="", _

ReadOnlyRecommended:=False, CreateBackup:=False, Local:=True

    ActiveWorkbook.Close

  '  Windows("CORRISPETTVI.xlsm").Activate

  Dim wks As Worksheet

Set wks = Sheets(4)

wks.Select

Application.DisplayAlerts = True

End Sub

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
    2020-06-29T12:14:21+00:00

    Ciao Luigi,

    Grazie Norman !!

    La querry funziona ma io volevo che venisse inserita e  in automatico cambia l'imipostaiozne quando genera il file csv   è possibile?

    Grazieee

    questa la querry:

    Sub esportaCSV04()

        nomefoglio = Sheets("DATI").Range("B31").Value

        Sheets(nomefoglio).Copy

      

        ChDir "C:\CORRISPETTIVI\CSV\4"

       

       Application.DisplayAlerts = True

       

     

         ActiveWorkbook.SaveAs Filename:= _

            nomefoglio & ".csv", FileFormat:=xlCSV, Password:="", WriteResPassword:="", _

    ReadOnlyRecommended:=False, CreateBackup:=False, Local:=True

     

        ActiveWorkbook.Close

      '  Windows("CORRISPETTVI.xlsm").Activate

       

      Dim wks As Worksheet

    Set wks = Sheets(4)

    wks.Select

    Application.DisplayAlerts = True

    End Sub

    Prova il seguente approccio:

    '========>>

    Option Explicit

    '-------->>

    Public Sub esportaCSV04()

        Dim nomeFoglio As String

        nomeFoglio = Range("A1").Value

        ThisWorkbook.Sheets(nomeFoglio).Copy

        ChDir "C:\CORRISPETTIVI\CSV\4"

        With Application

            .DecimalSeparator = ","

            .ThousandsSeparator = "."

            .UseSystemSeparators = False

            .DisplayAlerts = False

        End With

        ActiveWorkbook.SaveAs Filename:=nomeFoglio & ".csv", _

                              FileFormat:=xlCSV, _

                              Password:="", _

                              WriteResPassword:="", _

                              ReadOnlyRecommended:=False, _

                              CreateBackup:=False, _

                              Local:=True

        With Application

            .DecimalSeparator = "."

            .ThousandsSeparator = ","

            .UseSystemSeparators = False

            .DisplayAlerts = True

        End With

        ActiveWorkbook.Close

        Windows("CORRISPETTVI.xlsm").Activate

        Dim wks As Worksheet

        Set wks = Sheets(4)

        wks.Select

    End Sub

    '<<========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2020-06-29T08:32:11+00:00

    Grazie Norman !!

    La querry funziona ma io volevo che venisse inserita e  in automatico cambia l'imipostaiozne quando genera il file csv   è possibile?

    Grazieee

    questa la querry:

    Sub esportaCSV04()

        nomefoglio = Sheets("DATI").Range("B31").Value

        Sheets(nomefoglio).Copy

        ChDir "C:\CORRISPETTIVI\CSV\4"

       Application.DisplayAlerts = True

         ActiveWorkbook.SaveAs Filename:= _

            nomefoglio & ".csv", FileFormat:=xlCSV, Password:="", WriteResPassword:="", _

    ReadOnlyRecommended:=False, CreateBackup:=False, Local:=True

        ActiveWorkbook.Close

      '  Windows("CORRISPETTVI.xlsm").Activate

      Dim wks As Worksheet

    Set wks = Sheets(4)

    wks.Select

    Application.DisplayAlerts = True

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-06-26T15:13:52+00:00

    Ciao Luigi,

    Così mette la configuraizone delle impostaizoni internazionali del pc. Io volevo che venisse forzata in base hai pc dove viene istallato il file.

    Per impostare il punto e virgola come separatore, prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub ConvertireSeparatorePerCSV()

        Dim srcRng As Range

        Dim rRow As Range

        Dim rCell As Range

        Dim sStr As String

        Dim FName As Variant

        Const sSeparatoreVoluto As String = ";"              '<<=== Modifica

        FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")

        If FName <> False Then

            If Selection.Cells.Count > 1 Then

                Set srcRng = Selection

            Else

                Set srcRng = ActiveSheet.UsedRange

            End If

            Open FName For Output As #1

            For Each rRow In srcRng.Rows

                sStr = ""

                For Each rCell In rRow.Cells

                    sStr = sStr & """" & rCell.Value & """" & sSeparatoreVoluto

                Next

                While Right(sStr, 1) = sSeparatoreVoluto

                    sStr = Left(sStr, Len(sStr) - 1)

                Wend

                Print #1, sStr

            Next

            Close #1

        End If

    End Sub

    '<<=========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Alt+F8 per aprire  la finestra di gestione delle macro
    • Seleziona ConvertireSeparatorePerCSV | Esegui

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-06-26T14:45:26+00:00

    Così mette la configuraizone delle impostaizoni internazionali del pc. Io volevo che venisse forzata in base hai pc dove viene istallato il file.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-06-26T14:33:40+00:00

    Ciao Luigi,

    Buonasera ho creato una macro per salvare un foglio in un file in fomato csv.

    Quando apro con notepad mi mette come separatore il punto.

    Devo forzare il separatore impostato da sistema, da punto a punto e virgola.

    Cosa devo inserire in questa macro perchè mi forzi il separatore

    Grazieeeee

    Sub esportaCSV04()

        nomefoglio = Sheets("DATI").Range("B31").Value

        Sheets(nomefoglio).Copy

      

        ChDir "C:\CORRISPETTIVI\CSV\4"

       

       Application.DisplayAlerts = True

       

     

         ActiveWorkbook.SaveAs Filename:= _

            nomefoglio & ".csv", FileFormat:=xlCSV, Password:="", WriteResPassword:="", _

    ReadOnlyRecommended:=False, CreateBackup:=False, Local:=True

     

        ActiveWorkbook.Close

      '  Windows("CORRISPETTVI.xlsm").Activate

       

      Dim wks As Worksheet

    Set wks = Sheets(4)

    wks.Select

    Application.DisplayAlerts = True

    End Sub

    Prova:

       ActiveWorkbook.SaveAs Filename:= _

            nomefoglio & ".csv", FileFormat:=xlCSV, Password:="", WriteResPassword:="", _

    ReadOnlyRecommended:=False, CreateBackup:=False, Local:= False

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento