salvare come csv



  • salvare come .csv
    di ilFonta data: 01/11/2015 20:38:51

    Salve a tutti

    ho scritto una macro che alla fine mi chiede la possibilità di esportare il foglio 5 come .csv, ma nascono 2 problemi:

    1 vorrei che mi salvasse il file nel percorso directory/nomefile che si trova nella variabile "inputFile" invece il foglio 5 mi viene salvato nella corretta directory, ma con il nome inputFile.csv invece che "nomefile".

    2 dopo aver salvato in .csv la macro mi rinomina il Foglio5 (in excel) come inputFile e questo proprio non lo voglio.

    Sapreste dirmi dove sbaglio?

    Grazie mille


     
        ' chiede se vuoi salvare
        Dim vuoiCSV
        vuoiCSV = MsgBox("Vuoi stampare il .csv?", vbCritical + vbYesNo)
    
        ' salva
        If vuoiCSV = vbYes Then
            Sheets("Foglio5").SaveAs "inputFile", FileFormat:=xlCSV, Local:=False
        Else
        End If
    
    End Sub


  • salvare come .csv
    di ilFonta data: 01/11/2015 21:05:58

    Vi do ulteriori indizi, inserisco anche la parte di macro in cui viene definita la variabile inputFile e poi la parte finale già postata che ho lievemente riscritto
     
    MsgBox ("Inserisci il file dei grafici in uscita da ENVI")
            
        Dim inputFile As String
        Dim dlgOpenASCII As FileDialog
    
        Set dlgOpenASCII = Application.FileDialog(msoFileDialogOpen)
            dlgOpenASCII.Filters.Clear
        
        With dlgOpenASCII.Filters.Add("File di testo", "*.txt", 1) 'nel fileDialog viene scritto"File di Testo" e ci si aspetta che sia un ".txt"
        End With
        
        If dlgOpenASCII.Show <> -1 Then
            MsgBox "Non hai selezionato nessun file", vbInformation 'questo è un controllo per essere sicuri che si sia inserito un file
        Else
            Sheets("Foglio3").Select
            inputFile = dlgOpenASCII.SelectedItems(1)
                With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & inputFile, Destination:=Cells(1, 1))
                    .Name = inputFile
                    .FieldNames = True 
    ' etc etc etc
    
    ' ultima parte della macro riscritta
    
        Dim vuoiCSV
        vuoiCSV = MsgBox("Vuoi stampare il .csv?", vbCritical + vbYesNo)
    
        ' salva
        If vuoiCSV = vbYes Then
            Sheets("Foglio5").Select
            With Selection
                .SaveAs Filename:=inputFile, FileFormat:=xlCSV, Local:=False, CreateBackup:=False
                .Close False
            End With
        Else
        End If
    
    End Sub
    
    


  • salvare come .csv
    di ilFonta data: 01/11/2015 21:24:05

    Ho QUASI risolto, con la parte di macro che vi posto.

    Dico quasi perchè tutto funziona, ma c'è una raffinatezza: se il file che do in ingresso e che è contenuto nella variabile inputFile si chiama Out.txt, il file csv che viene prodotto ora si chiama Out.txt_R.csv, mentre invece io vorrei che si chiamasse Out_R.csv (vorrei fosse tolta la prima desinenza .txt.

    Grazie di nuovo
     
    ' chiede se vuoi salvare
        Dim vuoiCSV
        vuoiCSV = MsgBox("Vuoi stampare il .csv?", vbCritical + vbYesNo)
    
        ' salva
        If vuoiCSV = vbYes Then
            Sheets("Foglio5").Copy
            With ActiveWorkbook
                .SaveAs Filename:=inputFile & "_R.csv", FileFormat:=xlCSV, Local:=False, CreateBackup:=False
                .Close False
            End With
        Else
        End If
    
    End Sub



  • di Mauro data: 01/11/2015 22:52:10

    Ciao ilFonta, il tuo è un tipico esempio di discussione monoutente. Grazie per condividere le tue soluzioni! Saranno sicuramente utili a chi le leggerà in seguito.



  • di patel data: 02/11/2015 07:49:59

    prova così
     
    ' chiede se vuoi salvare
        Dim vuoiCSV
        vuoiCSV = MsgBox("Vuoi stampare il .csv?", vbCritical + vbYesNo)
    
        ' salva
        If vuoiCSV = vbYes Then
            inputFile = left(inputFile, len(inputFile) -4) '<<<<<<<<<<
            Sheets("Foglio5").Copy
            With ActiveWorkbook
                .SaveAs Filename:=inputFile & "_R.csv", FileFormat:=xlCSV, Local:=False, CreateBackup:=False
                .Close False
            End With
        Else
        End If
    
    End Sub





  • salvare come .csv
    di ilFonta (utente non iscritto) data: 02/11/2015 12:02:13

    Perfetto, funziona, grazie mille Patel.

    Grazie anche a Mauro per l'incoraggiamento.

    A presto



  • di mb data: 03/11/2015 18:38:35

    Buona sera

    gentilmente mi spiegate questo passaggio

    inputFile = Left(inputFile, Len(inputFile) - 4) '<<<<<<<<<<


    Grazie



  • di mb data: 03/11/2015 20:06:18

    Scusate mi ero perso il pezzo prima della.sub

    Tutto ok