macro per incollare foto



  • macro per incollare foto
    di stressata (utente non iscritto) data: 10/11/2012 16:21:00

    Salve,sono un principiante della programmazione e devo creare una
    macro che incolla 50 foto prese dalla cartella Immagini su dei fogli consecutivi di word,ma purtroppo non ci sto
    riuscendo!In pratica la macro a 10 si inceppa e incolla sempre le stessa foto cioè la
    la nona!Non ho la più pallida idea di dove potrebbe essere l’errore, allego il
    codice della macro…dove potrebbe essere l’errore?Inoltre vorrei fare in modo che le foto siano tutte
    della stessa dimensione…quali comandi devo inserire affinché le 50 foto(che in origine sono di
    grandezze diverse)risultino della stessa dimensione?
    Grazie


     
    Sub Inseriscimmagini()
    Dim nCounter As Integer
    Dim nCounterFile As String
    For nCounter = 1 To 50
    If nCounter < 10 Then nCounterFile = "00" & nCounter
     Selection.InlineShapes.AddPicture FileName:="C:Immagini" & nCounterFile & ".jpg", LinkToFile:=False, SaveWithDocument:=True
    Documents.Item(1).Select
     Selection.EndKey Unit:=wdStory
    Selection.TypeParagraph
    Selection.InsertBreak Type:=wdPageBreak
    Next
    End Sub
    



  • di HarryBosch data: 10/11/2012 18:42:13

    Troppo stress non va bene :)
    arrivi a copiare la nona foto e poi sempre quella perché questa istruzione
    If nCounter < 10 Then
    impedisce che il nome del file ("nCounterFile") assuma il nuovo valore del ciclo dopo il numero 9.

    Da quanto posso intuire, le tue immagini dovrebbero essere nominate così:
    01 - 02 - 03 ... e dalla decima in poi così: 010 - 011 - 012 ...
    Allora, dopo la decima foto, quel "nCounteFile" deve essere assegnato con uno 0 in meno.

    Nel codice ho inserito anche le istruzioni per impostare altezza e larghezza dell'immagine, che ovviamente rimarrà tale per tutte le foto inserite.
    Attenzione anche al percorso assegnato: nel tuo codice mi sembra che manchi una "" dopo il nome della cartella Immagini.

    Raffrontalo con la modifica sotto e verifica un pò.
    Se invece i nomi delle immagini sono diversi da quelli che ho detto, fai sapere
     
    Sub Inseriscimmagini()
        Dim nCounter As Integer
        Dim nCounterFile As String
        Application.ScreenUpdating = False
        For nCounter = 1 To 50
            If nCounter < 10 Then
                nCounterFile = "00" & nCounter
            Else
                nCounterFile = "0" & nCounter
            End If
    
            Selection.InlineShapes.AddPicture FileName:="C:UsersDesktopImmagini" & nCounterFile & ".jpg"
            Documents.Item(1).Select
            With Selection.InlineShapes.Item(nCounter)
                .Height = 500 'Altezza
                .Width = 450  'Larghezza
            End With
    
            If nCounter = 50 Then Exit Sub
            With Selection
                .EndKey Unit:=wdStory
                .TypeParagraph
                .InsertBreak Type:=wdPageBreak
            End With
        Next
        Application.ScreenUpdating = True
    End Sub
    



  • di HarryBosch data: 10/11/2012 18:45:51

    Ho dimenticato uno zero
    Le prime nove immagini dovrebbero nominarsi
    001 - 002 - 003 ...



  • di Vecchio Frac data: 10/11/2012 18:51:15

    cit. FileName:="C:Immagini" & nCounterFile & ".jpg
    ---> manca uno slash dopo "immagini"
    FileName:="C:Immagini" & nCounterFile & ".jpg"

    e volendo si può usare Format per il counter a tre cifre (per evitare il controllo If dopo il For)
    FileName:="C:Immagini" & Format(nCounterFile, "000") & ".jpg"

    Chiedo, invece di un contatore da stoppare alla cinquantesima foto, con costruzione del nome di file in base al numero della foto eccetera, non è meglio utilizzare un For Each sui files della cartella desiderata?





  • di stressata data: 10/11/2012 21:04:09

    va bene,adesso funziona benissimo....grazie per l'aiuto!Potreste indicarmi un manuale di vba(scaricabile da internet)per sapere tutti i vari comandi del linguaggio e con degli esercizi spiegati?
    Ciao



  • di stressata data: 10/11/2012 22:29:26

    Scusate la mia ultima domanda...non mi ero accorta che nel sito che ospita questo forum c'è un corso completo di excel vba!Ciao