Vba code in access



  • Vba code in access
    di Luca87itc data: 04/02/2012

    Salve a tutti.
    ho il seguente problema.
    sto creando su microsoft access 2007 un report che riproduca un foglio excel in maniera automatica.
    ho creato tabelle e queries necessarie ma ora mi trovo di fronte a un ostacol.
    riguarda la necessità di dover, in una tabella a cui ho applicato un filtro, operare l'operazione (molto semplice in excel ma non in access) di eliminare una cella e far scorrere verso l'alto le altre celle della stessa colonna (shift up). ovviamente mantenendo le altre 2 colonne invariate. poi dovrò prendere dalla tabella determinate celle a seconda che in una colonna compaia un testo o meno e inserirle in una text box.
    ora, il codice per estrarre la cella non è un problema, ma quello per lo shift up si.
    potete aiutarmi?
    grazie infinite



  • di Mabolsie (utente non iscritto) data: 06/02/2012

    Ciao luca io di access non ci capisco un tubo
    ti allego il codice che elimina la cella attiva e ti scarta in alto le altre.
    spero di aver capito bene
    ciao max
     
    Sub EliminaeScarta()
    ' questo comando ti elimina la cella attiva e ti  porta in alto le altre celle della stessa colonna
        Range("A52").Select
        Selection.Delete Shift:=xlUp
    End Sub
    



  • di Luca87itc (utente non iscritto) data: 07/02/2012

    Be magari di access non capisci un tubo ma mi aiuti con il codice.
    il mio problema è che ho dovuto imparare in 4 giorni!!
    quindi nel codice che mi hai inviato, basta inserire nel campo "range" la cella da eliminare
    (es. "c1.name of the table") e stop?
    perdona l'ignoranza ma vba non è il mio mondo.
    ovviamente, scrivendo in inglese, non potrò dargli il comando eliminaescarta.

    giusto per spiegarmi al meglio, devo scrivere un codice che, inserito in un report basato su un foglio excel importato in access, elimini automaticamente la cella di una tabella "nome" da me creata, qualunque sia il foglio excel di partenza.
    magari può sembrare complesso ma è più semplice (l'idea, non la realizzazione) di quanto sembri dalla mia descrizione...
     
    Sub EliminaeScarta()
        Range("cella1.filteredtable").Select
        Selection.Delete Shift:=xlUp
    End Sub



  • di Luca87itc (utente non iscritto) data: 07/02/2012

    Purtroppo non mi sono reso conto subito che quel codice non va bene per access ma solo per excel
    (non ho shift in access)
    sfortunatamente non lo posso usare.
    grazie comunque



  • di Mabolsie (utente non iscritto) data: 07/02/2012

    Ok alla prossima
    ciao max



  • di Luca87itc (utente non iscritto) data: 09/02/2012

    Ecco, già che ci sono ne approfitto e ci scrivo un altro problema.
    riguarda excel questa volta.
    ho iniziato a scrivere il seguente codice, applicato in un file excel 2007.
    in questo file, nella colonna a, sono inserite le estensioni di 101 file excel a cui si deve applicare il codice.
    come vedete ho iniziato definendo una variabile che mi definisca dove finisce il range di file a cui applicare il codice (il loro numero non è fisso).
    ora, il problema che si presenta è come continuare.
    in pratica io dovrei:
    - in ogni file excel, filtrare la colonna c per i seguenti valori: "null", "immediate requirement", "short-term requirement", "medium-term requirement", "long-term requirement".
    - prendere la prima cella della colonna c (che sono sicuro sarà "null") e eliminarla.
    - fare uno "shift up" della colonna c

    la tabella così definita sarà poi esportata in access dove dovrò prendere solo le celle che hanno contenuto <> "null".

    ovviamente per il code dovrò eseguire un loop, secondo la sequenza:

    open (the excel file)
    do (filter the table and delete&shift)
    close&save

    next mycounter

    vi ringrazio per ogni aiuto/input
     
    Dim var_stop As Integer
    
    Range("A1").Select
    
    ActiveCell.SpecialCells(xlLastCell).Activate
    
    var_stop = ActiveCell.Row
    
    For myCounter = 1 To var_stop