salvare su csv solo dati filtrati

Anonimo
2013-10-09T14:39:20+00:00

salve ho scritto per un file xls due righe di codice che salvano il foglio su un file csv

il problema e che il codice per come è adesso ignora il filtro attivo e salva sempre tutto il foglio

come posso fare per agire solo con l'insieme dei dati filtrati ?

grazie

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

Anonimo
2013-10-09T15:01:39+00:00

salve ho scritto per un file xls due righe di codice che salvano il foglio su un file csv

il problema e che il codice per come è adesso ignora il filtro attivo e salva sempre tutto il foglio

come posso fare per agire solo con l'insieme dei dati filtrati ?

grazie

  • Copia i dati filtrati in un nuovo foglio.
  • Salva come .csv il nuovo foglio
  • Elimina il nuovo foglio

Non è difficile da implementare. Prova un po'.

Una cosa tipo:

Public Sub m()

    Dim sh As Worksheet

    Dim shNew As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    Set shNew = ThisWorkbook.Worksheets.Add

    shNew.Name = "FoglioAppoggio"

    sh.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy

    shNew.Range("A1").PasteSpecial

    shNew.Select

    ActiveWorkbook.SaveAs Filename:="C:\Prova" & shNew.Name & ".csv", _

        FileFormat:=xlCSVMSDOS, CreateBackup:=False

    ThisWorkbook.Worksheets(shNew.Name).Delete

    Set sh = Nothing

    Set shNew = Nothing

End Sub

Dove copio i dati filtrati in una tabella che inizia da A1 del Foglio1 nel FoglioAppoggio, salvo .csv il FoglioAppoggio e poi lo elimino.

Se invece vuoi ciclare le righe di rng (che in questo caso contiene solo le celle visibili):

Public Sub m()

    Dim sh As Worksheet

    Dim rng As Range

    Dim Riga As Range

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    Set rng = sh.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)

    For Each Riga In rng.Rows

        MsgBox Riga.Address

    Next

    Set rng = Nothing

    Set Riga = Nothing

    Set sh = Nothing

End Sub

NOTA. Scusa se ho scritto questa risposta a pezzi, ma sono un po' preso dal lavoro.

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-10-09T16:31:25+00:00

     

    lavori pure ? :D

    allora sei un grande

    hahaha scherzo

    grazie mille!!!

    LOL!

    Ciao e alla prossima.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-10-09T16:29:35+00:00

    salve ho scritto per un file xls due righe di codice che salvano il foglio su un file csv

    il problema e che il codice per come è adesso ignora il filtro attivo e salva sempre tutto il foglio

    come posso fare per agire solo con l'insieme dei dati filtrati ?

    grazie

    • Copia i dati filtrati in un nuovo foglio.
    • Salva come .csv il nuovo foglio
    • Elimina il nuovo foglio

    Non è difficile da implementare. Prova un po'.

     

    Una cosa tipo:

     

    Public Sub m()

        Dim sh As Worksheet

        Dim shNew As Worksheet

       

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        Set shNew = ThisWorkbook.Worksheets.Add

        shNew.Name = "FoglioAppoggio"

       

        sh.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy

        shNew.Range("A1").PasteSpecial

        shNew.Select

        ActiveWorkbook.SaveAs Filename:="C:\Prova" & shNew.Name & ".csv", _

            FileFormat:=xlCSVMSDOS, CreateBackup:=False

           

        ThisWorkbook.Worksheets(shNew.Name).Delete

       

        Set sh = Nothing

        Set shNew = Nothing

       

    End Sub

     

    Dove copio i dati filtrati in una tabella che inizia da A1 del Foglio1 nel FoglioAppoggio, salvo .csv il FoglioAppoggio e poi lo elimino.

     

    Se invece vuoi ciclare le righe di rng (che in questo caso contiene solo le celle visibili):

     

    Public Sub m()

        Dim sh As Worksheet

        Dim rng As Range

        Dim Riga As Range

       

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        Set rng = sh.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)

       

        For Each Riga In rng.Rows

            MsgBox Riga.Address

        Next

       

        Set rng = Nothing

        Set Riga = Nothing

        Set sh = Nothing

       

    End Sub

    NOTA. Scusa se ho scritto questa risposta a pezzi, ma sono un po' preso dal lavoro.

    lavori pure ? :D

    allora sei un grande

    hahaha scherzo

    grazie mille!!!

    La risposta è stata utile?

    0 commenti Nessun commento