Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376

    [VBA] Esportare in CSV con separatore virgola, senza aprire Excel

    Salve a tutti, ho questo bottone che quando cliccato avvia la procedura di eliminazione della tabella e poi lancia una query che la ricrea con i dati aggiornati, l'ultima riga esporta la tabella in un file excel. A questo punto io vedo aperto il file excel. Quello che vorrei è innanzitutto non vedere a monitor il file excel aperto e inserire del codice che mi permetta automaticamente di esportare i dati del foglio excel in un file csv, con i caratteri di separazione le "," anzichè i ";". Inoltre mi sa che devo inserire verso la fine il rilascio della variabile tds perche dopo la prima volta mi esce un errore.
    Certo di un vostro aiuto vi ringrazio tutti quanti della collaborazione

    codice:
    Private Sub Comando96_Click()
    Dim db As Database
    Dim tds As TableDefs
    Dim destdb As String
    Dim tabletodelete As String
    
    destdb = "C:\Users\Marco\Documents\DataBase Access\Paradisea\Paradisea.mdb"
    tabletodelete = "T_Export"
    Set db = OpenDatabase(destdb)
    Set tds = db.TableDefs
    tds.Delete tabletodelete
    DBEngine(0)(0).Execute "Q_Export", dbFailOnError
    DoCmd.OutputTo acOutputTable, "T_Export", acFormatXLSX, "Export.xlsx", True
    Ultima modifica di LeleFT; 14-02-2014 a 17:39 Motivo: Aggiunti i tag CODE
    Chi Crede in Me non Perirà MAI

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    Ti invito a prendere visione del Regolamento interno. In particolare:

    1) I titoli delle tue ultime due discussioni non sono adeguati. In particolare questo: "Problemone vba"... non dice nulla del problema trattato e, al contrario, esorta gli utenti a focalizzare l'attenzione altrove (che sia un problemone lo devono decidere gli altri, se poi non si dice che problemone è, tanto vale passare oltre)

    2) Sei nella sezione sbagliata: VBA viene trattato nel forum "Visual Basic e .NET Framework".

    3) Posti il codice senza usare i tag CODE, necessari per mantenere formattazione ed indentazione del codice.


    Sistemo io questa discussione, modificandone il titolo, inserendo i tag code e spostandola nella sezione corretta. In futuro, fai attenzione a dove posti ed usare gli strumenti che il forum mette a disposizione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376
    Ok hai ragione, il mio problema però adesso è un altro, sono riuscito ad esportare su excel e poi da excel convertire in csv, ma quando arrivo alla riga di conversione in csv excel mi dice che esiste già un altro file con lo stesso nome e se lo voglio sostituire. Io vorrei che non mi apparisse quella maschera, inoltre non riesco a terminare il processo excel, infatto in task manager rimane attivo. grazie della collaborazione. Ecco il codice:

    Private Sub Comando96_Click()
    Dim miofile As String
    Dim percorso As String

    miofile = "Export"
    percorso = "c:\users\marco\desktop\" & miofile
    CurrentDb.Execute "drop table T_Export" 'elimina la tabella
    DBEngine(0)(0).Execute "Q_Export", dbFailOnError
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "T_Export", percorso

    'CODICE PER ESPORTARE IN CSV
    Dim Wb As Workbook
    Set Wb = Excel.Workbooks.Open("c:\users\marco\desktop\Expor t.xls")
    ActiveWorkbook.SaveAs "c:\users\marco\desktop\Export.csv", xlCSVWindows
    Wb.Close True
    Set Wb = Nothing


    Kill "c:\users\marco\desktop\Export.xls"
    Chi Crede in Me non Perirà MAI

  4. #4
    Quote Originariamente inviata da devil946 Visualizza il messaggio
    Ok hai ragione, il mio problema però adesso è un altro,
    ostinato e recidivo sei

    1. continui un thread con un argomento diverso (andrebbe aperto un nuovo thread)
    2. continui a non usare i tag code


  5. #5

    Moderazione

    Quote Originariamente inviata da optime Visualizza il messaggio
    ostinato e recidivo sei

    1. continui un thread con un argomento diverso (andrebbe aperto un nuovo thread)
    2. continui a non usare i tag code

    Esattamente; qui chiudo.
    devil946, per favore leggi quello che ti è già stato scritto da LeleFT e da optime riguardo a regolamento, tag CODE, divagazioni, cambi di linguaggio a metà thread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    7
    Io ho fatto così . Sto usando un DataGridView ma credo sia uguale il procedimento
    Il DataGridView è fatto da 7 righe ( Rows ) e 16 colonne ( Cells ) . I cicli sono numerati da 0 perchè il DataGridView inizia a contare da 0 e non da 1

    codice:
     Private Sub Salva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Salva.Click
            Dim save As New SaveFileDialog
    
    
            save.Filter = "File cvs (*.csv)|*.csv; | All file (*.*)| *.*;"
            save.Title = " Save file as "
            save.InitialDirectory = "C:\"
    
    
            DialogResult = save.ShowDialog
    
    
    
    
            Dim testo As String
            Dim a As Integer
            Dim b As Integer
            If DialogResult = Windows.Forms.DialogResult.OK Then
                Dim scrivi As New System.IO.StreamWriter(save.FileName)
                For a = 0 To 7
                    testo = ""
                    For b = 0 To 15
                        testo = testo + DataGridView1.Rows(a).Cells(b).Value + ","
                    Next
                    scrivi.WriteLine(testo)
                Next
                scrivi.Close()
            End If
        End Sub

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376
    ok grazie dei rimproveri, spero che la prossima volta sia più coerente con le regole del forum.
    Grazie della risposta
    Chi Crede in Me non Perirà MAI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.