Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Indirizzare le shapes con un numero no. Progressivo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Indirizzare le shapes con un numero no. Progressivo

Postdi Maury170419 » 04/07/17 20:32

Ciao a tutti mi chiamo A.Maurizio
E il mio problema e questo :
Io ho creato questo codice per creare delle immagini shapes inserite automaticamente in un foglio di excel .
Il codice e questo :
"Set Shr =Shape(shape.count)"

E fin qui tutto bene !!!!!
Tranne che per il fatto che ogni volta che avvio la procedura essa mi incrementa altre shapes con un numero differente da quello precedente, come ad esempio :
Se nella prima chiamata mi inserisce tre shapes con il nome (Immagine 1/ Immagine2/Immagine 3).
Se lo riavviassi un altra volta esso mi posizzionerebbe sul foglio altre shapes con il nome di (Immagine 4/Immagine 5/ Immagine 6) ecc....!
Per qui la mia domanda e questa :
Non si potrebbe ottenere sempre e solo le tre shapes iniziali Grazie
Saliti da A.Maurizio
Maury170419
Utente Senior
 
Post: 121
Iscritto il: 31/10/16 09:05

Sponsor
 

Re: Indirizzare le shapes con un numero no. Progressivo

Postdi Anthony47 » 05/07/17 02:17

Il codice e questo :
"Set Shr =Shape(shape.count)"

La sintassi e' sbagliata perche' (a parte le virgolette")
-shape e' un oggetto singolo, quindi non puo' essere indirizzato tramite un Indice; probabilmente intendevi "Shapes"
-Shapes e' una proprieta' di un Worksheet, quindi dovresti indicare di quale worksheet si parla; es ActiveWorksheet.Shapes
Quindi l'istruzione piu' vicina a quella che hai scritto potrebbe essere
Codice: Seleziona tutto
Set Shr = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)


Ma questa istruzione non crea shapes ne' le rinomina; assegna solo alla variabile Shr l'ultima shape presente nel foglio di lavoro.
Tu cosa vuoi fare esattamente?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Indirizzare le shapes con un numero no. Progressivo

Postdi Maury170419 » 05/07/17 18:18

Ciao Anthony come stai !
Hai Ragione a dire che la formula era scritta in modo errato , ma lo avevo scritto con il mio Smart Phone e non potevo fare altro che andare a mente.
Nella Realtà il Codice e questo :
Codice: Seleziona tutto
Sub GetShapeFromWeb(strShpUrl As String, rngTarget As Range)
Dim shp As Shape
With rngTarget

With .Parent
.Pictures.Insert strShpUrl
Set shp = .Shapes(.Shapes.Count)
End With

shp.Height = 329.25
shp.Left = 651.75
shp.Top = 27
shp.Width = 345
End With

Set shp = Nothing

'Foglio1.Range("A1").Select
End Sub


Ora come vedi ho provato anche a modificare i parametri (Top / Left) ecc...!
Ma non solo non mi crea l'altezza la larghezza la posizione indicata ; Ma continua ad ogni estarzione a darmi la stessa caratteristica iniziale anche senza quei parametri aggiunti.

E la stessa cosa succede in modo analogo quando tento di usare questaltro codice di Cancellazione :
Codice: Seleziona tutto
Sub Cancella_Immagini()
    Cancellate = 0
    For Each sh In ActiveSheet.Shapes
        Foglio1.Shapes(1).Delete
        Cancellate = Cancellate + 1
    Next
    If Cancellate = 0 Then
    Cancellate = 4
        'MsgBox "Non Sono Presenti Immagini Nel Foglio Selezionato"
    Else
        'MsgBox "Sono State Cancelalte   '" & Cancellate & "'  Immagini Nel Foglio Selezionato"
    End If
   
End Sub


Percarità !!!!!!!
Come codice a sempre funzionato bene anche con il VB 6; Però io vorrei che prendesse in considerazione solo le quatgro Shapes prelevate da internet e non i Tasti aggiunti.
In vece esso mi cancella tutto senza ma e senza sè , e non ho ancora capito come variare il tutto .
Vedi tu quello che puoi utilizzare .

(P.S) Ascolta a titolo informativo Personale : Se io riuscissi a estrappolare le immagini direttamente da codice come succede per le temperature (Minime e Massime) e i giorni della Settimana Stabiliti dal sito in questione.
Quale sarebbe un codice utile per far sapere al programma che oltre a presentarmi nelle suddette celle i suddetti Dati; Ora dovrebbe anche presentare le suddette Icone ho Immagini che siano.
Tento di Spiegarm meglio :
Io ho Capito in linea di massima che la Voce : (innerText) serve per estrappolare i dati scritti nella pagina HTML
Oppure il Codice : (className = "c2_a") Punta alla raccolta di Istruzioni da Presentare a video del foglio in qustione.
Ma cosa succede sè io volessi presentare o Estrappolare le Immagini ?

Detto questo ti invio il link per scaricare il Filedi Prova : https://app.box.com/s/7t9lhnt258dz8e77xfq259be2xpphx1f
Grazie ancora di Tutto Saluti da A.Maurizio
Maury170419
Utente Senior
 
Post: 121
Iscritto il: 31/10/16 09:05

Re: Indirizzare le shapes con un numero no. Progressivo

Postdi Anthony47 » 07/07/17 02:40

Allora, l'istruzione Set shp = .Shapes(.Shapes.Count) assegna alla variabile "shp" un riferimento "all'ultima" immagine presente nel foglio di lavoro; e le istruzioni successive modificano con successo l'Altezza, la posizione (Left e Top), la Larghezza (anche se in questo modo tutte le immagini saranno posizionate sovrapposte; ma questo immagino sia solo per prova). L'immagine rimane pero' col nome assegnatogli di default.

Unica osservazione: tu modifiche sia l'altezza che la larghezza; ma se l'immagine ha la proprieta LockAspectRatio impostata su True (cosa che credo sia di default), allora quando vai a variare la Heigth modificherai in proporzione anche la Width, e quando poi modifiche la Width modificherai in proporzione anche la Heigth; se ti interessa poter variare indipendentemente queste due dimensioni dovrai allora impostare, prima di variare le dimensioni:
Codice: Seleziona tutto
shp.LockAspectRatio = False

In questo modo le immagini potranno distorcersi.

Anche la Sub Cancella_Immagini cancella regolarmente le immagini dal foglio impostato, ma c'e' un grosso equivoco; tu usi il codice:
Codice: Seleziona tutto
    For Each sh In ActiveSheet.Shapes
        Foglio1.Shapes(1).Delete
        Cancellate = Cancellate + 1
    Next

Cioe' tu lavori sulle immagini del foglio selezionato (For Each sh In ActiveSheet.Shapes) ma poi vai a cancellare le immagini di Foglio1 (Foglio1.Shapes(1).Delete). Insomma se il foglio selezionato e' diverso da Foglio1 il risultato potrebbe essere "strano".
Il mio consiglio e' di lavorare o sempre con Activesheet o sempre con un nome foglio.

Ti vorrei segnalare anche che l'inserimento di immagini da web e' possibile anche con le normali istruzioni che caricano da disco, solo invece del percorso gli devi dare l'url.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Indirizzare le shapes con un numero no. Progressivo

Postdi Maury170419 » 11/07/17 10:32

Ciao Anthony Scusami Del Ritardo nel Rispondere al tuo Post , ma sono Stato impegnato e non poco con il mio lavoro.
Detto questo : Come vedi io vado un pò qua e un pò la nel fare le cose ; in quanto non è che la maggior parte delle cose non le conosca , e che non le so adattare a ciò che io vorrei fare nella realtà.
Ecco spiegato il perché di tante anomalie che li per li sono inspiegabili.
Per qui oltre a quello che tu gentilmente mi hai già spiegato cosa mi consigli ancora di fare per migliorare il tutto.
In quanto come hai potuto vedere tu stesso : Come procedura per l'estrazione dei dato dalla pagina Web Funzionano.
Però non potendo adattare una procedura per l'estrazioni delle immagini :
1 ) Perché non né conosco il codice
2 ) Perché da quanto ho capito leggendo articoli in merito su Internet , nel mio caso non è possibile
Ecco nuovamente spiegato il motivo per qui avevo adattato il Sispema di Copiare ed incollare l'immagine dal web tutto qui .
Grazie comunque sia del Tuo Interessamento Saluti da A.Maurizio

(P.s) Avevo anche pensato di Creare la stessa cosa sfruttando la modalità diretta che il foglio di excel rende a disposizione andando nella Barra degli Indirizzi Ricavando cosi il tutto dalla Sezione Dati e poi (Dati Web) Il Tutto non sarebbe anche male .
L'inico inconvegnente e che anche in questo caso non recupera le Immagini per qui di fatto non mi serve a nlla.
Dinuovo Ciao e alla prossima
Maury170419
Utente Senior
 
Post: 121
Iscritto il: 31/10/16 09:05

Re: Indirizzare le shapes con un numero no. Progressivo

Postdi Maury170419 » 12/07/17 15:52

Ciao Anthony Scusami se ti disturbo ancora una volta con questo mio progetto Basato sulle previsioni del tempo
Ma il Problema e questo : Ahora se io in un nuovo progetto scrivo questo codice per ricavare una Immagine da file come giustamente mi hai suggerito tu , funziona benissimo Cioè Questo :

Codice: Seleziona tutto
Sub immagine()
ActiveSheet.Pictures.Insert("C:\Users\amaur\Pictures\100NIKON\DSCN2203 (5).png").Select
With ActiveSheet.Pictures(1)
.Left = ActiveWindow.VisibleRange.Columns(5).Left
.Top = ActiveWindow.VisibleRange.Rows(4).Top
End With
End Sub


Però se lo cambio in questo modo per recuperare l'immagine dalla Pagina WEB mi da errore :

Codice: Seleziona tutto
Sub immagine()
Dim URL As String
ActiveSheet.Pictures.Insert(URL = "https://www.ilmeteo.it/meteo/Torino").Select
With ActiveSheet.Pictures(1)
.Left = ActiveWindow.VisibleRange.Columns(5).Left
.Top = ActiveWindow.VisibleRange.Rows(4).Top
End With
End Sub


Mi potresti gentilmente dirmi dove sbaglio grazie
Saluti da Maurizio
Maury170419
Utente Senior
 
Post: 121
Iscritto il: 31/10/16 09:05

Re: Indirizzare le shapes con un numero no. Progressivo

Postdi Anthony47 » 12/07/17 16:25

Potro' guardare piu' tardi i dettagli che hai inviato.
A dopo.
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Indirizzare le shapes con un numero no. Progressivo":


Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti