Metodo Querytables



  • Routine macro
    di Maxxim (utente non iscritto) data: 23/12/2009

    Ciao a tutti

    ho provato a fare questa macro di routine,
    ho associato a = "b"


    ho messo a dove deve recuperare il titolo,
    però mi recupera proprio il titolo a e non
    quello chi mi interessa b.

    cosa ho sbagliato???


    potete aiutarmi

    grazie 10000000000
     
    Sub Macro1()
    '
    ' Macro1 Macro
    '
    A = "UNI.MI"
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;******/q/hp?s=A&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=66&y=66" _
            , Destination:=Range("$A$1"))
            .Name = "hp?s=A&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=66&y=66"
            .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 = "21"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
        End Sub



  • di Maxxim (utente non iscritto) data: 24/12/2009

    Qualcuno mi riesce a dire come mettere al posto delle lettere anche dei numeri ed eventualmente dove scritto aa (che fa riferimento alla cella a73, mettere il riferimenti di un foglio qualsiasi, tipo foglio1 e il riferimento della cella tipo a73.

    aa = foglio 1 riga 73 colonna a e...
    1 = 66

    difficile??????

    grazie per chi gentilmente si interessa.
     
    Private Sub CommandButton1_Click()
    ZZ = "UNIP.MI"
    A = 66
    B = 132
    C = 198
    D = 264
    E = 330
    F = 396
    G = 462
    H = 528
    I = 594
    L = 660
    M = 132
    N = 132
    O = 132
    P = 132
    Q = 132
    R = 132
    S = 132
    T = 132
    U = 132
    V = 132
    Z = 132
    ZZZ = "A3"
    AA = "A73"
    BB = "A146"
    CC = "A219"
    
    With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;********/q/hp?s=" & ZZ _
    , Destination:=Range(ZZZ))
    .Name = "hp?s=" & ZZ
    .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 = "21"
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
    End With
    With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;*******/q/hp?s=" & ZZ & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & A & "&y=" & A _
    , Destination:=Range(AA))
    .Name = "hp?s=" & ZZ & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & A & "&y=" & A
    .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 = "21"
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
    
    End Sub 



  • di Mabolsie (utente non iscritto) data: 24/12/2009

    Ciao maxxim
    sono due giorni che sto tentando di capire cosa tu voglia fare ???
    guardando il secondo messaggio ci sono nel listato quelle a,b,c, ecc...
    cosa sono ? variabili ? costanti ? e dove le hai dihiarate ?
    dovresti essere più chiaro nella spiegazione di quello che tu voglia fare.
    ciao buon natale



  • di Maxxim (utente non iscritto) data: 25/12/2009

    Ciao mabolsie


    grazie per il tuo interessamento.
    effettivamente forse non si capisce cosa voglio fare,senza postare il codice originale,
    vediamo di spiegare meglio:

    devo scaricare delle quotazioni giornaliere riguardanti dei titoli azionari.
    con excel, li ho presi con la query web, postata sotto.
    ogni query recupera 66 quotazioni del titolo richiesto, in questo caso tramite il codice unip.mi, scarica quelli di unipol priv.
    ogni periodo di quotazioni ha un codice,
    per la prima trance serve solo il titolo nessun codice, per la seconda serve il codice 66, per la terza, 132 ecc. (66+66=132).
    poi posiziona i dati sul mio foglio1 tramite
    comando range(“a3”), e parte dalla cella (a3) a posizionare i dati.
    veniamo al dunque!
    la prima trance mi viene messa in (a3) del foglio 1, naturalmente la seconda mi deve partire a mettere i dati nella (a73) per non sovrapporli es:
    66 quotazioni + 4 spazi (li teniamo per sicurezza), quindi: 3(partendo da a3)+66+4= 73.
    di conseguenza copio ed incollo la prima query più sotto e modifico i codici per recuperare le quotazioni, la cella per la destinazione dati, in questo caso il titolo rimane uguale e non lo modifico.
    scaricando 2 o 3 trance, va bene, ma se devo scaricare 15 o 20 trance, mi tocca modificare tutte le volte i codici e le celle di destinazione, mettiamo anche che, li devo spostare in altre celle oppure modificano i codici, e ogni volta devo cercare un titolo diverso diventa davvero improponibile modificare di nuovo tutto.
    ecco allora, perché cercavo di mettere delle variabili, con delle lettere e numeri, in modo da sostituire, i numeri dei codici e le celle di destinazione con queste.
    così posso mettere, tutti i numeri di codice e le celle di destinazione in un punto qualsiasi del foglio1 oppure in un altro.
    in caso cambiano i codici, basta variare i dati nelle celle dove questi sono situati senza dover mettere mano alla query.
    io pensavo di fare così:
    in (a2) metto la digitazione del titolo richiesto,
    in (aa1) (aa2) (aa3) ecc. metto i riferimenti dei codici, in (ab1) (ab2)ab3) ecc. metto i riferimenti delle celle da posizionare i dati.
    tutto questo per comodità, così quando modifico i codici delle query, visto che saranno tante, avendo il conteggio numerico nelle variabili non mi incasino.
    l’unica rottura è, che, comunque, devo lo stesso modificare i codici e le celle di destinazione una volta solo, poi il tutto è valido per recuperare i
    dati di tutti i titoli.
    almeno che non ci sia un’alternativa, questa era la mia richiesta iniziale.
    spero di essere stato chiaro altrimenti fammi sapere.

     
    ‘query originale
    With ActiveSheet.QueryTables.Add(Connection:= _    "URL;*******/q/hp?s=UNIP.MI&a=0&b=1&c=2003&d=11&e=22&f=2009&g=d&z=66&y=66" _
            , Destination:=Range("$A$3"))
            .Name = "hp?s=UNIP.MI&a=0&b=1&c=2003&d=11&e=22&f=2009&g=d&z=66&y=66"
            .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 = "21"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False        
    
    
    ‘ho inserito dentro un pulsante di aggiornamento situato nel foglio1 la query  
    Private Sub CommandButton1_Click()
    ‘ queste sono le variabili di riferimento dove prende i codici 
    TITOLO = Range(“A2”)
    A1 = Range("AA1") 
    A2 = Range("AA2")
    A3 = Range("AA3")
    A4 = Range("AA4")
    A5 = Range("AA5")
    A6 = Range("AA6")
    A7 = Range("AA7")
    A8 = Range("AA8")
    A9 = Range("AA9")
    A10 = Range("AA10")
    A11 = Range("AA11")
    A12 = Range("AA12")
    A13 = Range("AA13")
    A14 = Range("AA14")
    A15 = Range("AA15")
    A16 = Range("AA16")
    A17 = Range("AA17")
    A18 = Range("AA18")
    A19 = Range("AA19")
    A20 = Range("AA20")
    A21 = Range("AA21")
    A22 = Range("AA22")
    A23 = Range("AA23")
    A24 = Range("AA24")
    A25 = Range("AA25")
    A26 = Range("AA26")
    A27 = Range("AA27")
    ‘questi sono i riferimenti dove prende le celle di destinazione
    AA = Range("AB1")
    AA1 = Range("AB2")
    AA2 = Range("AB3")
    AA3 = Range("AB4")
    AA4 = Range("AB5")
    AA5 = Range("AB6")
    AA6 = Range("AB7")
    AA7 = Range("AB8")
    AA8 = Range("AB9")
    AA9 = Range("AB10")
    AA10 = Range("AB11")
    AA11 = Range("AB12")
    AA12 = Range("AB13")
    AA13 = Range("AB14")
    AA14 = Range("AB15")
    AA15 = Range("AB16")
    AA16 = Range("AB17")
    AA17 = Range("AB18")
    AA18 = Range("AB19")
    AA19 = Range("AB20")
    AA20 = Range("AB21")
    AA21 = Range("AB22")
    AA22 = Range("AB23")
    AA23 = Range("AB24")
    AA24 = Range("AB25")
    AA25 = Range("AB26")
    AA26 = Range("AB27")     
         
         ‘query che ho modificato la prima trance non ha codici
         With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;**********/q/hp?s=" & TITOLO _
            , Destination:=Range(AA))
            .Name = "hp?s=" & TITOLO
            .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 = "21"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    ‘la seconda per il recupero ha bisogno di codici        
    With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;********/q/hp?s=" & TITOLO & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & A1 & "&y=" & A1 _
            , Destination:=Range(AA1))
            .Name = "hp?s=" & TITOLO & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & A1 & "&y=" & A1
            .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 = "21"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    ‘terza trance  
    With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;*********/q/hp?s=" & TITOLO & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & A2 & "&y=" & A2 _
            , Destination:=Range(AA2))
            .Name = "hp?s=" & TITOLO & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & A2 & "&y=" & A2
            .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 = "21"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    ‘ è così via fino alla fine delle trance di quotazioni
    End Sub
    



  • di Maxxim (utente non iscritto) data: 25/12/2009

    Ciao mabolsie

    scusa, ma è partito il listato senza
    che potessi correggerlo,
    spero che riesci a capire lo stesso.

    grazie ancora




  • di Mabolsie (utente non iscritto) data: 25/12/2009

    Ciao maxxim
    dammi qualche lustro per pensarci



  • di Mabolsie (utente non iscritto) data: 26/12/2009

    Ciao maxxim
    ho trovato un link che tratta il tuo problema se vuoi te lo segnalo però devi darmi un recapito
    privato ( tipo e-mail od altro )vedi tu

    ciao.



  • di Maxxim (utente non iscritto) data: 26/12/2009

    Puoi postare il link senza mettere la w e le barre
    per postare privatamente come facciamo??, non vorrei rendere pubblico la mia e-mail per lo spam
    che poi genera.
    se non riesci così, provo a pensare come possiamo fare, nel caso ti viene un'altra idea fammi sapere.
    ciao





  • di Mabolsie (utente non iscritto) data: 26/12/2009

    Il link è:

    ennius.altervista.org/free/ifvba59.htm


    ciao



  • di Maxxim (utente non iscritto) data: 27/12/2009

    grazie



    controllo e ti faccio sapere se fa al caso mio



  • di Maxxim (utente non iscritto) data: 27/12/2009

    Ciao mabolsie

    ho verificato il codice che mi hai postato, potrebbe
    andare bene, ecco le mie considerazioni:
    nella quinta riga: dove = ("a5"), nel codice originale
    era presente una input box per mettere il numero di
    cella dove posizionare i dati, io ho modificato provvisorio per fare una prova,qui dovrei trovare un
    metodo, che in automatico, il numero
    di cella dove posizionare i dati la cerchi da solo, per evitare che
    tutte le volte debba digitare io la cella di destinazione.
    magari nel foglio di lavoro metto in altre celle questi riferimenti, e lui li prende in automatico.
    tutto questo per evitare di fare 20 o 30 query.
    poi; dove metto l'url, per recuperare i dati dal sito?
    il problema della destinazione è in parte risolto,
    ma quella del recupero dati riguardo i codici?, (metto il comando dove) dove sono situati i codici?.

    spero di essere stato chiaro, in caso fammi sapere.

    p.s se la cosa è molto difficile e non esiste soluzione non ti preoccupare, ce ne fossero di persone come te.
    grazie 10000000000000000000.



     
    Private Sub CommandButton1_Click()
    FileDaAprire = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If FileDaAprire = False Then Exit Sub
    Dove = ("A5")
    If Dove = "" Then Exit Sub
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileDaAprire & "", Destination:=Range(Dove))
    .Name = FileDaAprire
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierSingleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    End With
    End Sub



  • di Mabolsie (utente non iscritto) data: 28/12/2009

    Ciao maxxim
    ti avrei risolto il problema della destinazione della query.
    vorrei inviarti il file completo in quanto descrivertelo quì sarebbe un pò complicato.
    se hai un'idea fammelo sapere.
    ciao


  • Trovato il sistema
    di Mabolsie (utente non iscritto) data: 28/12/2009

    Ti allego il file
    ciao



  • di Maxxim (utente non iscritto) data: 28/12/2009

    Ciao mabolsie

    non ho capito dove alleghi il file,


    a presto ciao



  • di Mabolsie (utente non iscritto) data: 29/12/2009

    Vai in alto all'inizio della discussione e sulla destra vedrai una scritta blu li c'è il file formato .zip
    spero tu abbia un programma di decompressione file

    ora scappo perchè devo andare a lavorare mi ricollego stasera

    ciao



  • di Maxxim (utente non iscritto) data: 29/12/2009

    Ciao

    sono riuscito a scaricare il tuo file,
    molto bello grazie.

    facendo un passo indietro, però, come ti dicevo
    il mio problema è recuperare i dati da un
    indirizzo internet, con la query, ed ad ogni
    query corrispondono 66 quotazioni, e nella url si
    trovano le indicazioni per scaricare questi dati.
    prima query di quotazione 66
    seconda 132 (66"+"66)
    terza 198 (132"+"66)
    ecc.
    per farla breve dal codice che mi hai dato tu,
    mi farebbe comodo fare così:

    nella cella a1 del mio folgio1 di excel digito il
    nome del titolo es: eni
    poi clicco sul pulsante che hai messo tu, io ci scriverò "aggiorna", il tutto parte, e mi posiziona le prime 66 quotazioni nel mio folgio1 in cella a3 la seconda trance la deve posizionare
    in cella a73 (a3, quindi 3"+"66"+"4= 73) i 4 sono come
    margine di sicurezza, e così via fino alle 27 totali trance da scaricare.

    riepilogo:

    ho un titolo che rimane fisso per tutte le trance.
    ho dei codici che variano ad ogni query in tutto 27 circa.
    ho le celle di destinazione che devono fare in modo
    da non sovrapporre i dati.
    suppongo che modificando il codice, si possa creare
    questa routine in automatico, in modo da non dover
    digitare tutte le volte la riga e la colonna,
    anche perché se i titoli sono 1 o 2 può stare bene
    ma se sono 300 diventa un problema.
    n.b. le virgolette sono segni più (di somma)perchè non le visualizza, giusto per farti capire.

    in caso non è chiaro qualcosa fammi sapere, magari
    ti posso postare l'url originale per meglio comprendere.

    spero di non darti troppo noia.

    grazie 1000000000000000


     
    With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;******/q/hp?s=ENI&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=66&y=66" _
            , Destination:=Range("$A$1"))
            .Name = "hp?s=ENI&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=66&y=66"
    'prima parte della query il titolo rimane fisso per tutte
    'il codice 66 cambia nella seconda query diventa 132
    'la destinazione cambia in seconda query diventa A73



  • di Mabolsie (utente non iscritto) data: 29/12/2009

    Ciao maxxim
    prima di inviarti il file ho provato a scaricare da un sito a caso del testo ed ho notato che la query fa uno scarto automatico di una colonna.
    ho provato a creare un codice che in automatico alla fine dell'importazione dati mi facesse uno scarto di n righe ma la query non lo rispetta e fa" quel che vuole".
    infatti se hai notato nel codice del sito che ti ho postato c'è una imput box per digitare la destinazione, quindi penso che con questo sistema non si possa effettuare lo scarto che vuoi tu.
    lo so che è pesante peò mi sa che ogni volta devi mettere la destinazione in manuale .
    comunque tengo vivo l'interesse perchè è un bel problema !!
    ciao maxxim



  • di Maxxim (utente non iscritto) data: 29/12/2009

    Per il momento grazie

    in caso, quando hai tempo riesci a darmi una dritta,
    mi risparmi un sacco di tempo a mettere i dati
    in manuale.

    ciao e spero a presto.

    tanti auguri di buon anno a te e family,

    maxxim



  • di Mabolsie (utente non iscritto) data: 29/12/2009

    Grazie
    auguri anche a te e family




  • di Mabolsie (utente non iscritto) data: 31/12/2009

    Ciao maxxim

    ti allego un file zippato

    ti ho creato due cicli nidificati che forse fanno al caso tuo

    sono un po rozzi ma l'affinazione spetta a tè

    spero di esserti stato d'aiuto .

    ancora auguri di buon anno

    ciao



  • di Maxxim (utente non iscritto) data: 01/01/2010

    Grazie

    provo il tuo programmino e ti faccio sapere.

    per il momento grazie 10000000000000000.



  • di Maxxim (utente non iscritto) data: 01/01/2010

    Ciao malbosie.

    posso postare il tuo codice in modo da poter
    descrivere le sue funzioni e come eventualmente
    procedere ad integrarlo per il mio recupero dei dati?

    grazie

    ciao



  • di Mabolsie (utente non iscritto) data: 02/01/2010

    Ciao maxxim

    sgonfia il pancione con un bel purgone

    per il codice fai come vuoi

    ciao max



  • di Maxxim (utente non iscritto) data: 03/01/2010

    Ciao

    ecco il codice:
    prima di mettere la mia query ho provato per vedere
    come funzionava, prima senza niente, poi ho messo
    i codici nelle celle del foglio 2.
    mi indica errore:
    "indice non incluso nell'intervallo" in questa riga.
    "cells(activecell.row, 1).value = dati(i)"

    poi ho messo la query mi indica lo stesso errore.

    per la query invece spero di aver capito.
    al posto del nome titolo ho messo titolo
    al posto dei codici 66,132 ecc. ho messo codice.
    nella cella di destinazione (destination): devo mettere cosa?
    io ho messo "codice", invece devo mettere?.
    perdona la banalità ma non mastico molto vba.
    poi immagino che devo finire il codice mettendo le celle fino alla 66. "dati = array(fgl2.cells(1, 1), fgl2.cells(1, 2), fgl2.cells(1, 3))
    'questi sono i valori che la query deve prendere
    per il tuo caso 66 quindi fino a ... fgl2.cells(1,66)".

    spero di essere stato chiaro.

    per il momento come sempre grazie 1000000000000
     
    Sub calcola()
    
    
    Dim TITOLO As String
    Const CODICE = 70    '<-----  Il CODICE  è = a 70 (66 + 4)in quanto ho già aggiunto le 4 righe di spazio'
    Dim NTrance As Integer
    Dim RigaInizio As Integer
    Set txTITOLO = UserForm1.TextBox3
    Set txNTRANCE = UserForm1.TextBox5
     
    
    'CICLO DI COPIA
    '***************************
    If txTITOLO.Text = "" Or txNTRANCE.Text = "" Then
    MsgBox (" MANCANO I DATI NELLE CASELLE"), vbInformation, "DATI"
    Exit Sub
    End If
    TITOLO = txTITOLO
    NTrance = txNTRANCE
    
    For i = 1 To NTrance
    RigaInizio = ((i * CODICE) - 66)
    Sheets("foglio1").Cells(RigaInizio - 1, 1).Select
    Selection = txTITOLO
    Sheets("FOGLIO1").Cells(RigaInizio, 1).Select
    inserisci
    
    '------- IN QUESTA AREA METTI I COMANDI DA ESEGUIRE ----------------------
    '***********************************************************************
    '     q  u  e  r  y    imortazione
    '***********************************************************************
    With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;**Indirizzo sito**/q/hp?s=" & TITOLO & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & CODICE & "&y=" & CODICE _
            , Destination:=Range(CODICE))
            .Name = "hp?s=" & TITOLO & "&d=11&e=23&f=2009&g=d&a=0&b=1&c=2003&z=" & CODICE & "&y=" & CODICE
            .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 = "21"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    
    MsgBox (("TRANCE   N.    " & i & "  COPIATA   DA   RIGA    " & RigaInizio)), vbInformation, "ciclo for"
    
    
    Next
    
    End Sub
    '********************************
    
    Sub inserisci()
    Set fgl2 = Sheets("foglio2")
    Set zona = fgl2.Cells
    '******************************************************************
    dati = Array(fgl2.Cells(1, 1), fgl2.Cells(1, 2), fgl2.Cells(1, 3)) 'questi sono i valori che la query deve prendere per il tuo caso 66 quindi fino a ... fgl2.Cells(1,66)
    '******************************************************************
    Sheets("foglio1").Select
    For i = 0 To 66
    Cells(ActiveCell.Row, 1).Value = dati(i)
    Cells(ActiveCell.Row, 1).Offset(1, 0).Select
    Next
    
    
    End Sub



  • di Mabolsie (utente non iscritto) data: 03/01/2010

    Ciao

    hai ragione !!!

    cambia la riga dove dà l'errore in :

    for i = 0 to 2

    perchè il ciclo pernde i dati dalla matrice (array) "dati(i)".

    il foglio 2 è solo un esempio di come dovrebbero funzionare i cicli, quindi con la qyery a regime
    tale foglio non servirà più.

    riguardo al form d'inizio nella casella tiiolo devi mettere il nome del titolo ( presumo azione ) nella casella trance devi mettere quante trance vuoi importare poi vedrai quello che succede nel foglio attivo 1.

    se non ledo la tua privacy vorrei chiederti (se vuoi ) l'indirizzo completo della query cosi posso fare delle prove.

    ciao max




  • di Maxxim (utente non iscritto) data: 03/01/2010

    Ti allego un file excel

    grazie 10000000000000000



  • di Mabolsie (utente non iscritto) data: 03/01/2010

    Scaricato grazie

    ci lavoro un pò su e ti faccio sapere.

    p.s. quando vengo al mare faccio tappa da te.


    ciao max



  • di Mabolsie (utente non iscritto) data: 04/01/2010

    Ciao maxxim

    ti invio il progetto concluso .zip

    leggi il foglio "leggimi"

    e prova il programma .

    ti saluto



  • di Maxxim (utente non iscritto) data: 05/01/2010

    Ciao sigh

    sei forte!!!!!

    se passi mi farebbe piacere conoscerti.

    come amico intendo, non preoccuparti a me piacciono le donne.

    detto questo veniamo al dunque.

    ho provato il tuo progettino, niente male;
    però ho provato a scaricare i dati, e riesco a
    scaricare solo la t1, dalla 2 alla 4 non riesco.

    tu le hai provate tutte? e riesci a scaricarle?.

    ho provato anche a modificare l'indirizzo da dove iniziano i codici, ma niente.

    il programmino, e molto carino, è per me molto utile.
    a questo poi aggancio un grafico, per delle medie,
    per capire quando è ora di comprare o vendere.
    così si aggiorna in automatico e non devo stare
    a diventare matto ad inserire i dati tutte le volte.

    ciao e grazie 100000000000000000

    maxxim



  • di Mabolsie (utente non iscritto) data: 05/01/2010

    Ciao maxxim

    prima di inviartelo lo ho provato diverse volte

    ed ha smpre funzionato , dopo il tuo messaggio

    lo ho riprovato ed a me funziona perfettamente.

    ho notato che hai exel 2007 io ho il 2003

    che ci dei siano comandi diversi ??

    forse un nota banale : hai provato a far scorrere il foglio perchè gli intervalli delle celle sono fissi.

    se vuoi mandami altri due o tre nomi di titoli
    provo con quelli :

    ciao max



  • di Maxxim (utente non iscritto) data: 05/01/2010

    Ciao

    ho riprovato a scaricare di nuovo il file,
    ho riprovato a scaricare i dati e adesso funziona
    correttamente.
    ho riprovato con quello salvato in precedenza e
    non visualizzo lo stesso i dati.
    si vede un problema quando ho salvato il file nel
    mio computer.

    bene! adesso funziona

    ora, per fare in modo che anzichè scaricare solo
    le singole trance arriva a scaricarle tutte?
    intanto provo a vedere se riesco a modificare il tuo codice:
    se non riesco ti riposto.


    grazie 100000000000000000



  • di Maxxim (utente non iscritto) data: 05/01/2010

    Ciao

    ho provato a fare qualche prova non ci riesco proprio.
    come posso fare a scaricarle tutte, in un solo colpo?

    magari se mi imposti come fare, e devi completare
    con varie righe di codice di routine al resto penso io.


    caio grazie 10000000



  • di Mabolsie (utente non iscritto) data: 05/01/2010

    Modifica effettuata... capo !!!

    ti allego il file .zip

    ciao max



  • di Maxxim (utente non iscritto) data: 05/01/2010

    Ok! perfetto!

    però!?

    non voglio farti venire la nausea, magari dimmi se sono
    un pochino insistente.

    ci avviciniamo al perfettissimo.

    ti spiego un piccolo particolare, i codici di recupero
    purtroppo cambiano ogni 6 mesi, per evitare tutte le volte di modificare le query sarebbe comodo
    avere i codici in un foglio anche il n.1 va bene,
    così quando questi cambiano in un attimo li modifico
    dal foglio direttamente.

    poi oltre al ciclo che mi hai fatto, grazie,
    non è possibile mettere solo una query, e poi fare un altro ciclo che modifica i codici di questa query fino
    ad esaurirli nelle celle dove questi risiedono?

    anche perché le query in tutto sono 27, ma alcuni titoli
    possono arrivare a 40 0 50.
    poi se ci sono delle routine da mettere sui folgio
    il resto lo faccio io.

    ovunque vada il tuo pensiero,
    grazie 1000000000000

    ormai dialogo più con te che con mia moglie,
    pensa che mi sono fatto l'amante sul sito di vba.
    ciao



  • di Maxxim (utente non iscritto) data: 05/01/2010

    Ho modificato così il tuo listato, che potrebbe
    andare bene, era giusto per non avere tante righe
    di codice.
    spero di aver modificato correttamente, non
    metterti a ridere se ho sbagliato qualcosa.
    ho provato e funziona lo stesso.

    dove è presente:
    a1 = range("aa1") in questa cella ho messo 66
    a2 = range("aa2") in questa cella ho messo 132
    ecc.

    poi ho modificato la tex in combo, impostando
    una serie di titoli già esistenti.

    sballissimo! grazie ancora spero di avere tue notizie.

    ciao

    maxxim

     
    Sub calcola()
    
    CARICA
    Dim TITOLO As String
    Dim NTrance As Integer
    Dim RigaInizio As Integer
    Set txTITOLO = UserForm1.Combo1
    Set txntrance = UserForm1.Combo2
    Dim D1, D2, D3, D4, DES As String
    Dim T1, T2, T3, T4 As String
    Dim A1, A2, A3 As String
    
    D1 = "a" & 2
    D2 = "A" & 77
    D3 = "a" & 149
    D4 = "a" & 221
    A1 = Range("AA1")
    A2 = Range("AA2")
    A3 = Range("AA3")
    
    
    If txTITOLO.Text = "" Or txntrance.Text = "" Then
    MsgBox (" MANCANO I DATI NELLE CASELLE"), vbInformation, "DATI"
    Exit Sub
    End If
    TITOLO = txTITOLO
    Sheets("FOGLIO1").Cells(1, 1) = txTITOLO
    
    If txntrance.Text = "TTOT" Then DES = D1
    
    For i = 1 To 4
    txntrance.Text = "T" & i
    
    Select Case txntrance.Text
    Case "T1"
    Trance = "URL;******/q/hp?s=" & txTITOLO
    If txntrance = "T1" Then
    DES = D1
    End If
    
    Case "T2"
    Trance = "URL;******/q/hp?s=" & txTITOLO & "&a=0&b=1&c=2003&d=11&e=22&f=2009&g=d&z=" & A1 & "&y=" & A1
    If txntrance = "T2" Then
    DES = D2
    End If
    
    Case "T3"
    Trance = "URL;*****/q/hp?s=" & txTITOLO & "&a=0&b=1&c=2003&d=11&e=22&f=2009&g=d&z=" & A2 & "&y=" & A2
    If txntrance = "T3" Then
    DES = D3
    End If
    
    Case "T4"
    Trance = "URL;******/q/hp?s=" & txTITOLO & "&a=0&b=1&c=2003&d=11&e=22&f=2009&g=d&z=" & A3 & "&y=" & A3
    If txntrance = "T4" Then
    DES = D4
    
    
    End If
    End Select



  • di Mabolsie (utente non iscritto) data: 05/01/2010

    Perchè dovrei ridere ??

    l'importante è che soddisfi le tue esigenze e che funzioni

    tra noi hobbisti tutto è ammesso

    ciao alla prossima max



  • di Maxxim (utente non iscritto) data: 09/01/2010

    Ho provato la tua routine fantastica

    adoro le operazioni ben riuscite.

    ho modificato la query anche perchè cambia anche l'anno oltre ai codici.

    eventualmente provo a sistemare il codice in modo
    che ogni anno si sistemi in automatico.

    non ti sento più, tutto ok!

    grazie 100000000000000000000000

    dammi conferma se leggi il messag.

    ciao

    maxxim



  • di Mabolsie (utente non iscritto) data: 09/01/2010

    Sono contento, dopo tutto il nostro lavoro !!!

    messaggio letto

    ciao max