PopAds.net - The Best Popunder Adnetwork

Copiare immagini con VBA

  • di Mauro
    Certo non si può dire che pecchiate di prolissità! :-)
    Supponiamo di avere un esempio con un'immagine puntata nella cella B3 e del testo nella cella B5.
    Il codice seguente copia l'immagine e la cella dal foglio 1 al foglio 2.

    Worksheets("Foglio2").Select
    Worksheets("Foglio1").Shapes("Picture 1").Copy
    ActiveSheet.Paste Destination:=Worksheets("Foglio2").Range("B3")
    Worksheets("Foglio1").Range("B5").Copy
    ActiveSheet.Paste Destination:=Worksheets("Foglio2").Range("B5")

    Note: la proprietà shapes restituisce un oggetto a livello di disegno, quale una forma o una figura.

    copiare cella di mic di mic
    mauro sei un GRANDE ( funziona ) il tuo consiglio e stato utilissimo devo solo adattarlo per il mio programmino (scommetto a questo punto che creata la macro per le righe da copiare al foglio 2,con un comando( bottone macro)potrei cancellare le righe copiate ( chiedo troppo)

    di Mauro
    Ciao Mic,eccoti accontentato:
    Sheets("Foglio2").Shapes(1).Delete
    Sheets("Foglio2").Range("B5").ClearContents
    La prima riga cancella la forma, la seconda cancella il contenuto della cella.

    copiare celle di mic di mic

    Sub Macro()

    Dim FoglioOrigine As Object, FoglioDestino As Object
    Set FoglioOrigine = Foglio1
    Set FoglioDestino = Foglio2

    Dim RangeOrigine As Range
    Dim RangeDestino As Range


    Set RangeOrigine = FoglioOrigine.Range("A3:G3")

    Set RangeDestino = FoglioDestino.Cells(65536, 1).End(xlUp).Offset(1, 0).Resize(1, 7)

    ' --- istruzione di copiatura dati da Origine a Destino
    RangeDestino.Value = RangeOrigine.Value


    If MsgBox("Visualizzo ora i dati copiati nel foglio Destinazione ?", vbYesNo + vbInformation + vbDefaultButton2) = vbYes Then
    FoglioDestino.Activate
    RangeDestino.Select
    MsgBox "Ritorno al foglio Origine"
    FoglioOrigine.Activate
    RangeOrigine.Select
    End If



    End Sub
    ciao GRANDE MAURO sei molto BRAVO ti mando la mia macro creata scopiazzando su riviste( no esperto)eseguendola non riesco a copiare immagini un riga sotto l'altra come i valori inserendo le tue stringhe li copia una su l'altra ( per l'altro suggerimento non riesco a cancellare del tutto )

    di Mauro
    Ciao Mic sono lusingato dei tuoi complimenti! Tieni conto che fare il programmatore è il mio mestiere.
    Se per incollare l'immagine usi la riga di codice:
    FoglioDestino.Paste Destination:=FoglioDestino.Range("A1")
    dovrebbe puntarti l'immagine esattamente nella cella A1.
    Cmq se vuoi essere + preciso puoi dargli le coordinate esatte esempio:
    ActiveSheet.Shapes("NomePicture").Left = 50
    ActiveSheet.Shapes("NomePicture").Top = 50
    La prima indica la distanza (forse in pixel? boh!) dal bordo sx la seconda dal bordo sup.
    Le righe di cancellazione dovrebbero essere giuste, basta che stai attendo a passargli i riferimenti corretti.
    Buon weekend. Ciao

    cancellare celle di mic
    ciao Mauro allora sei un Prof (programmatore) mi fa molto piacere, cmq ti chiedo di avere pasienza con noi. (no esperti)
    Domanda
    come faccio
    a modificare quel tuo suggerimento (giusto scusami ) sulle due righe per cancellare le forme nel foglio2, non a una la volta, ma tutte insieme
    9 o 10, ( Sheets("Foglio2").Shapes(1).Delete )perchè? dopo aver cancellato, se non trova da cancellare mi da errore. GRAZIE

    di Mauro
    Ciao Mic, dà errore perchè non trova nessuna figura con identificativo 1, prova con questo:
    Sheets("Foglio2").Shapes.SelectAll 'Seleziona tutte le immagini del foglio
    Selection.Delete ' Elimina la selezione
    Ti rimando alla discussione precedente alla tua, in allegato c'è un tutorial che spiega come gestire al meglio gli errori.
    Ci sentiamo presto. Ciao

    cancellare celle di Mic
    Ciao Mauro il tuo consiglio su come cancellare tutto va benissimo, ma nasce un problema,mi cancella anche il pulsante di comando.
    Domanda:come fare a cancellare solo i dati e immagini senza il pulsanti di comando sempre con unico pulsante.CIAO da Mic

    di Mauro
    è vero così elimini tutto brutalmente!
    Il problema è riuscire ad identificare le forme e di conseguenza eliminarle!
    Ho notato che la proprietà type riesce ad identificare il tipo di forma ad esempio: pulsante = 8, rettangolo = 13 ecc.. Questo può essere d'aiuto.
    Quindi per eliminare tutti i rettangoli:
    For i = 1 To Sheets("Foglio2").Shapes.Count
    If Sheets("Foglio2").Shapes(i).Type = 13 Then
    Sheets("Foglio2").Shapes(i).Delete
    End If
    Next
    Ti avverto già che andrà in errore, il perchè è un mistero!
    Altrimenti si può provare con l'oggetto ShapeRange (insieme di forme). Bisognerebbe studiarne l'utilizzo nella guida e cercare di applicarlo.
    Un escamotage potrebbe essere anche quello di spostare il pulsante su un altro foglio o sulle barre degli strumenti Excel. Prova a vedere una di queste soluzioni poi ci sentiamo. Ciao

    Cancellare celle di Mic
    Ciao,Mauro mi da errore,come già prevedi.
    Domanda è possibile selezionare solo le celle delle forme, perchè la riga, Sheets("Foglio2").Shapes.SelectAll 'Seleziona tutte le immagini del foglio funziona a meraviglia, quindi un qualcosa che mi faccia selezionare le celle che che voglio. Grazie e Saluti

    di Mauro
    Le forme non sono legate alle celle quindi, se seleziono la cella su cui si trova la figura e cancello il contenuto, la figura rimane.
    Cmq ho trovato l'errore, dovrebbe andare bene, basta che trovi il codice associato al tipo di forma che vuoi cancellare:

    For i = Sheets("Foglio2").Shapes.Count To 1 Step -1
    If Sheets("Foglio2").Shapes(i).Type = 13 Then
    Sheets("Foglio2").Shapes(i).Delete
    End If
    Next

    Trovare codice di Mic
    Grazie,per il tuo modo di fare ma non riesco a capire come trovare il codice associato al tipo di forma,e come mettere i riferimento giusto,scusami per le mie domande, ma se puoi spiegare passo passo l'ultima tua soluzione sicuramente riesco a risolvere. A PRESTO


    di Mauro
    Eccoti accontentato:
    'Ripete un gruppo di istruzioni decrementando il contatore "i" dal numero totale di forme nel foglio a 1
    For i = Sheets("Foglio2").Shapes.Count To 1 Step -1
    'X ogni forma valuta il tipo se è uguale a 13 (forma rettangolo) entra
    If Sheets("Foglio2").Shapes(i).Type = 13 Then
    'Elimina il foglio in questione
    Sheets("Foglio2").Shapes(i).Delete
    'Esce dalla if
    End If
    'Termina il ciclo
    Next

    cancellare forme di Mic
    Ciao Mauro scusami cerco di spiegarti cosa voglio fare.
    Sul foglio1 ho dei codici di prodotti,descrizioni,e forme (disegni)
    circa 30 in 30 righe,con dei pulsanti di lato a
    ogni riga ,quindi pigiando il pulsante del prodotto che mi serve me lo copia nel foglio2,(non piĆ¹ di 8/9 uno per volta ) fin qui con i tuoi suggerimenti ci sono riuscito alla grande, adesso quello che mi copia nel foglio2 (dopo stampato) lo devo cancellare con un pulsante (l'ultimo tuo suggerimento mi da errore sicuramente perchè non riesco a mettere i parametri giusti)inserendo questi codici
    mi cancella i dati immediatamente,mentre le forme una per volta,e non trovando forme mi da errore
    Sheets("Foglio2").Shapes(3).Delete
    Sheets("Foglio2").Range("A3:G10").ClearContents
    come faccio a sistemare la prima riga? Grazie, per la celerità delle risposte

    di Mauro
    Prima non trovava le forme perchè decrementando il numero di forme ed incrementado l'indice ad un certo punto sforava. L'ultimo esempio che ti ho spedito ragiona al contrario decrementando il numero di forme decrementa anche l'indice. Prova ad inserire quel ciclo for vedrai che funziona! Cazzarola, finito sto progetto mi farai un regalo!? :-)
    Ciao

    cancellare celle di mic
    Ciao hai ragione, ma se consideri che che fino a
    qualche mese, non sapevo cosa significava Macro,
    consigliami qualche libro dove posso trovare anche degli esempi pratici, il tuo esempio sono sicuro che funziona,ma non riesco a capire perchè a me da
    l'errore sulla "i" (For i ).
    In quanto al "regalo" ti organizzo delle lezioni
    con centinaia di ragazzi che ti fanno tutti insieme centinaia di domande su VBA.CIAO

    di Mauro
    Ti da errore perchè hai definito in testa il parametro: Option Explicit, che ti costringe a dichiarare tutte le variabili.
    In tal caso devi inserire: Dim i As Integer.
    I testi che ho io sono tutti molto vecchi in quanto io uso il vba ancora dai tempi di office '97.
    Cmq se ti interessa il sito contiene un corso online, che è anche scaricabile dalla sezione downloads.
    Inoltre nella sezione "Segnala un sito" categoria "Computer Internet" trovi molti altri link che trattano il VBA.
    P.S.: X caso sapresti rispondere a Pietro?
    Ciao

    cancellare celle di mic
    Ciao Mauro, io credo che il VBA è stato inventato da Te, ci sono riuscito cambiando il parametro: "Option Explicit",con "Dim i As Integer",adesso il
    programmino è preciso ,per il problema di Piero non è per me ancora
    .
    P.S x utenti nuovi
    scrivete a Mauro è Bravissimo.