selezionare più oggetti da copiare



  • selezionare più oggetti da copiare
    di aledoc (utente non iscritto) data: 02/05/2014 13:28:56

    Salve a tutti.

    Il codice che riporto di seguito serve per copiare un determinato range di celle e copiarle in una nuova cartella di lavoro.
    La mia domanda è: se, oltre al range("b1", cells...ecc.) vorrei selezionare anche un'immagine (es. picture14) come devo integrare la formula?

    Grazie per l'aiuto.
     
    Public Sub Esporta()
    Range("B1").Select
    LastR = Cells.Find(What:="*", After:=[A1], _
                  SearchOrder:=xlByRows, _
                  SearchDirection:=xlPrevious).Row
    LastC = Cells.Find(What:="*", After:=[A1], _
                  SearchOrder:=xlByColumns, _
                  SearchDirection:=xlPrevious).Column
    ActiveSheet.Range("B1", Cells(LastR, LastC)).Select
    Selection.Copy
    Workbooks.Add
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    End Sub
    



  • di lepat (utente non iscritto) data: 02/05/2014 14:15:50

    devi selezionare un range che includa anche l'iimagine



  • di aledoc (utente non iscritto) data: 02/05/2014 14:35:10

    Ho allegato un file di prova.
    Il mio problema è che copiando e incollando tutto mi riporta anche i pulsanti che coprono l'immagine.
    Il file originale è protetto; io vorrei esportare il range in un altro foglio excel senza protezione, ma mantenendo i valori e la formattazione...e l'immagine.
    (Nel file di prova ho tolto le varie protezioni.)
    Non so se sono stato chiaro



  • di Textomb data: 07/05/2014 10:41:14

    ciao
    Quando ti trovi nel foglio di destinazione, per rimuovere solo i pulsanti copiati e non l'immagine devi semplicemente integrare nella tua routine una istruzione del genere ed il gioco è fatto.
     
    Dim sh As Shape
        For Each sh In ActiveSheet.Shapes
            If sh.Name Like "Button*" Then
            sh.Delete
            End If
        Next



  • di aledoc (utente non iscritto) data: 07/05/2014 13:17:27

    Grazie, ho capito.
    Il fatto è che, per ovviare al problema di mantenere formattazione, bordi, colori ecc. del file di origine ho optato per registrare una macro e vedere che tipo di codice utilizzava per mettere tutto a posto (è il codice riportato di seguito).
    Per fare come dici tu dovrei fare un Paste normale e poi aggiungere l'istruzione che mi hai mandato, ma nel foglio di destinazione. Giusto?
    Perchè in questo caso il problema sarebbe: come faccio, ogni volta che apro il nuovo foglio excel dove vado ad incollare la mia selezione, ad avere già un codice che mi svolga in automatico l'istruzione di rimuovere i Button?

    Non è possibile in altro modo?
     
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False



  • di Textomb data: 07/05/2014 18:46:24

    Dunque da quelllo che ho capito (spero...) ti interessa duplicare l'ordine in un nuovo foglio escludendo però sia le formule (inserire solo i valori) ma includendo tutta la formattazione di origine e la larghezza delle colonne.
    Inoltre vuoi inserire nel nuovo foglio il logo (Picture 14) in alto a sinistra senza però includere alcun pulsante.
    Qui sotto il codice che dovresti usare a sostituzione di quello riportato nella macro che si attiva con il pulsante Esporta.

     
    Sub Esporta()
        Dim Osh As Worksheet
        Set Osh = ActiveSheet
        
        Osh.UsedRange.Copy
        Workbooks.Add
            
            With Range("a1")
                .PasteSpecial xlPasteAll 'incolla tutto ma non rispetta la larghezza di origine delle colonne
                .PasteSpecial xlPasteColumnWidths 'riporta la stessa larghezza di origine delle colonne
                .PasteSpecial xlPasteValuesAndNumberFormats 'incolla solo i valori e sovrascrive le formule
            End With
            
            ' Se gli vuoi appiccicare il logo devi inserire solo queste due righe
            Osh.Shapes.Item("Picture 14").Copy
            ActiveSheet.Range("a2").PasteSpecial xlPasteAll
        
    End Sub



  • di aledoc (utente non iscritto) data: 07/05/2014 21:19:59

    Spettacolo

    Grazie