Esportazione in batch di Excel di colonne da un foglio di lavoro


0

Sono un nuovo utente di VBA e sto cercando di creare una macro per eseguire un'esportazione batch di colonne selezionate in un CSV e quindi incrementare e ripetere la selezione per continuare ad esportare CSV fino alla fine del set di dati.

Ho un grande foglio di lavoro Excel con 1872 colonne. Voglio selezionare ed esportare le colonne 1-6 come CSV e quindi ripetere questo processo per le colonne 7-12, 13-18 ecc fino alla fine dell'intero foglio di lavoro.

Tutti i dati sono in un foglio di lavoro, non ci sono valori nulli in nessuna delle righe o colonne.

Quindi, in totale, vorrei finire con 312 file CSV.

Ho iniziato con la registrazione di una macro come segue, ma non sono sicuro di come incrementare questo e eseguire il ciclo del codice fino alla fine del set di dati.

Grazie mille per qualsiasi input o aiuto con questa domanda.

    Sub Macro2()
'
' Macro2 Macro
'

'
    Columns("A:F").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ChDir "C:\Users\Glen\AppData\Roaming\Microsoft\Templates"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Glen\AppData\Roaming\Microsoft\Templates\EMN_001.csv", FileFormat:= _
        xlCSV, CreateBackup:=False
End Sub

Non capisco ?... in questo modo ti auguro buona fortuna ... puoi farcela :)
Dirk Reichel,

Immagino di voler eseguire una sorta di esportazione batch che esporta i dati in base a un intervallo all'interno del foglio di lavoro. Posso eseguire manualmente questo processo, ma implicherebbe la selezione delle prime 6 colonne, la copia e incolla in un nuovo foglio di lavoro e il salvataggio come CSV. Quindi ripetere il processo per le colonne 7-12, 13-18, ecc. Ecc.
Glen,

O se c'è un modo per dividere i dati in base a un intervallo e quindi posso fare un'esportazione in batch usando Kutools per Excel
Glen,

Perché non registrare questa azione con il registratore di macro incorporato?
Dirk Reichel,

Benvenuto in Super User. Non siamo un servizio di scrittura di script. Ci aspettiamo che gli utenti ci dicano cosa hanno provato finora (inclusi eventuali script che stanno utilizzando) e dove sono bloccati in modo da poter aiutare con problemi specifici. Le domande che richiedono solo script sono troppo ampie e possono essere messe in attesa o chiuse . Si prega di leggere Come faccio una buona domanda? .
DavidPostill

Risposte:


0

Ecco un po 'di codice per il primo file .csv :

Sub dural()
   Dim K As Long, N As Long, i As Long
   K = 1
   N = Cells(Rows.Count, K).End(xlUp).Row
   Close #1
   Open "C:\TestFolder\whatever.csv" For Output As #1
      For i = 1 To N
         st = Cells(i, K).Text
         For j = K + 1 To K + 5
            st = st & "," & Cells(i, j).Text
         Next
         Print #1, st
      Next i
   Close #1
End Sub

Dovrai modificarlo per eseguire il loop over kper ottenere il resto dei file.


Ciao Gary's Student,
Glen,

Ciao Gary's Student Grazie mille per il codice. Funzionava per la prima iterazione, ora sto solo cercando di ripetere il ciclo del codice per altre 312 iterazioni. Non ho usato VBA molto e non sono sicuro che il mio ciclo si riferisca alla parte corretta della formula.
Glen,

La mia modifica con loop è: Sub dural () Dim K As Long, N As Long, i As Long Do While N <312 K = 1 N = Cells (Rows.Count, K) .End (xlUp). Row Close # 1 Apri "D: \ Glen Documents \ Work \ Securologica \ Data \ CSV \ EMN_001.csv" Per l'output come # 1 Per i = 1 A N st = Celle (i, K). Testo per j = K + 1 A K + 5 st = st & "," & Cells (i, j) .Text Next Stampa n. 1, st Next i Chiudi # 1 Loop End Sub
Glen

Devo cambiare K in un numero intero? E anche mi scuso, come posso incollare il mio codice come il tuo sopra? Il mio è solo nei commenti e non è stato incollato correttamente. Grazie
Glen,

@Glen - Dato che stai postando il codice che hai provato, modificalo nel tuo post originale. Se vuoi inserire il codice, metti un solo segno di spunta, `, su entrambi i lati.
BruceWayne,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.