scorrimento matrice



  • scorrimento matrice
    di Elisa1309 (utente non iscritto) data: 20/10/2016 12:29:52

    salve a tutti! premetto che non scrivo un codice vba da diversi anni. Dovrei importare dei dati di una tabella dal web su foglio excel. questi dati si trovano su diverse pagine ma sempre nello stesso punto.
    Poichè la parte di indirizzo che cambia tra le varie pagine è l'index,avevo pensato che quello che mi servirebbe concettualmente è un ciclo for in modo che, se index è la varaibile del ciclo posso concatenarlo e ottenere l'indirizzo desiderato.
    ma come? creo un array che mi permetta di fare questo?
    potrei avere qualche suggerimento???
    Grazieeee!!
     
    Sub Macro2()
    '
    ' Macro2 Macro
    '
    Dim ADDR As String
    Dim ADDRN As String
    Dim ADDRC As String
    Dim ADDR1 As String
    Dim ADDR1C As String
    Dim index As Long
    
    
    '
    For index = 0 To codici.GetUpperBound(0)
    ADDR = "ht....ificati/index/codice_ente/"
    ADDRN = index
    ADDRC = ADDR & ADDRN
    ADDR1 = "/cod..../cod_quadro/01"
    ADDR1C = ADDR & ADDRN & ADDR1
     With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;" & ADDRC, _
             Destination:=Range("$A$1"))
             .Name = ADDR1C
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingNone
            .WebTables = "3"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
     End With
    End Sub



  • di alfrimpa data: 20/10/2016 14:48:27

    Ciao Elisa

    Premetto che di importazioni da WEB con VBA ne so molto poco (e quindi non so se sarò in grado di aiutarti) ma se vuoi che qualcuno provi ad aiutarti dovresti indicarci le URL delle pagine che ti interessano in modo da poter fare delle prove.

    Alfredo





  • di Elisa1309 (utente non iscritto) data: 20/10/2016 16:00:35

    eccolo:
    ovviamente mi riferisco al codice ente (in questo caso 2053870000)
    finanzalocale.interno.it/apps/floc.php/certificati/index/codice_ente/2053870000/cod/4/anno/2015/md/0/cod_modello/CMTX/tipo_modello/X/cod_quadro/18
    Grazie per l'aiuto.
    Elisa



  • di patel data: 20/10/2016 16:22:53

    cos'è
    codici.GetUpperBound(0)





  • di alfrimpa data: 20/10/2016 16:25:52

    Ma l'index 2053870000 come varia? Quali sono i corretti valori (se ho capito bene) che puntano a pagine esistenti?

    Puoi spiegare meglio quello che vuoi fare?

    Alfredo





  • di Elisa1309 (utente non iscritto) data: 20/10/2016 16:26:38

    scusate, facevo una prova



  • di Elisa1309 (utente non iscritto) data: 20/10/2016 16:50:04

    l'indirizzo è sempre lo stesso cambia solamente il codice del comune (sono in totale 8000 circa). quindi, per far variare l'index credo che dovrei costruire un array, o sbaglio? e poi creare un ciclo for e concatenare il link?
    l'operazione che devo fare è importare delle tabelle che si trovano sempre nello stesso punto. riporto sotto il codice vba che ottengo registrando una macro e facendo le operazioni su un singolo indirizzo URL. questo dovrei farlo per 8000 codici

     
    Sub Macro6()
    '
    ' Macro6 Macro
    '
    
    '
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;...//finanzalocale.interno.it/apps/floc.php/certificati/index/codice_ente/3120400110/cod/4/anno/2015/md/0/cod_modello/CCOU/tipo_modello/U/cod_quadro/01" _
            , Destination:=Range("$F$24"))
            .Name = "01_3"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingNone
            .WebTables = "3,4"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
        ActiveWindow.SmallScroll Down:=24
    End Sub



  • di alfrimpa data: 20/10/2016 17:04:08

    E qual è, all'interno della URL, la parte che identifica il comune? E quali sono i possibili valori previsti?

    Inoltre potresti allegare un file di Excel dove mostri come dovrebbero essere incollati i dati di un paio di pagine?

    Alfredo





  • di Elisa1309 (utente non iscritto) data: 20/10/2016 17:28:03

    il codice è dopo codice_ente/



    ht.....finanzalocale.interno.it/apps/floc.php/certificati/index/codice_ente/(questo è il codice del comune)3120400000/cod/4/anno/2015/md/0/cod_modello/CAPU/tipo_modello/U/cod_quadro/01



  • di alfrimpa data: 20/10/2016 18:23:49

    Ma tu hai un elenco di tutti i codici ente?

    Un po' di tempo fa ho fatto qualcosa di simile e pensavo di replicarlo con te ma servono i codici di ente.

    Sono numericamente progressivi o casuali (il che sarebbe un problema)?

    Ti avevo chiesto anche un file di excel con i dati di un paio di pagine inseriti.

    Alfredo





  • di alfrimpa data: 20/10/2016 18:49:58

    E poi ancora la tabella che ti interessa è solo il quadro 18 oppure anche altre?

    Come vedi non era un problema di array

    Insomma è fondamentale avere i codici ente di

    1) Amministrazioni Provinciali
    2) Città metropolitane
    3) Comunità montane
    4) Unioni comuni

    Se sul sito c'è questo elenco e tu indichi con precisione le tabelle che desideri importare (spero sia il solo quadro 18) direi che la cosa si può fare abbastanza tranquillamente.

    Ma ora la palla passa a te

    Alfredo





  • di Elisa1309 (utente non iscritto) data: 20/10/2016 19:16:57

    Io ho i codici di tuttti gli enti!!! Su questo non ho problemi. Ho allegato il file, sei riuscito a vederlo? Quindi avevo intuito bene...devo fare un array, giusto? Come posso crearlo e inserirlo nel concatenamento? Inoltre devo fare un ciclo for?
    Grazie per l'aiuto Alfredo



  • di Elisa1309 (utente non iscritto) data: 20/10/2016 19:29:26

    ORa le brutte notizie: io ho i codici ministeriali di tutti gli enti ma non sono in ordine progressivo, per questo pensavo ad un array dove inserirli tutti e poi "pescarli" con un ciclo for!!! Inoltre per effettuare una analisi completa sulla situazione finanziaria degli enti locali servono tutti i quadri. Non è semplice per questo chiedevo aiuto disperatamente:)



  • di alfrimpa data: 20/10/2016 19:41:15

    Elisa il fatto che ti occorrano tutti i quadri è una complicazione grave e non si tratta di array o conoscenza del VBA.

    Nel file che hai allegato hai messo i dati di due comuni su due fogli diversi quindi ammesso che ci si riesca alla fine dovresti avere un file di Excel con circa 8000 fogli?

    Per il momento limitiamo l'attenzione ad un solo comune e per questo dimmi tutti i quadri che devono essere importati.

    La macro che hai postato in apertura ne importa si e no un paio quindi se a te servono tutti non è assolutamente completa.

    Alfredo