54 messaggi dal 10 aprile 2017
Ciao a TUTTI VOI,

come già scritto in post precedenti mi trovo (mio malgrado) a metter mano a prg excel
celle contenenti formulaccie
vba scritto alla bel e meglio

il lavoro a passi che sto facendo è in primis aumentare le performance
ottimizzare dove è possibile il codice (vedi uso dll etc)
ora mi si pone un problemino
sapere run time quante celle sono occupate
certo ci sono le funzioni che mi danno questo valore sia per le righe sia per le colonne
però che faccio? scansiono 16384 colonne per 1048576 righe per sapere l'occupazione? mi sembra una sciocchezza
sappiamo che se si prende l'excel lo si rinomina in zip
facendo l'unzip si vede l'xml
con un prodotto commerciale che entra nell'xml rendendolo umanamente comprensibile sono riuscita a capire qual'è e dove sono le informazioni che mi servono
ho googlato ma non ho trovato nulla che mi aiuti
certamente non avrò impostato bene la ricerca perché tutto quello che mi viene proposto è come leggere o scrivere xml da excel e/o .net

chiedo come sempre una "dritta"
poi come sempre cerco di cavamerla per non romper più di tanto :))
grz
lily
333 messaggi dal 05 novembre 2012
Ciao Liliana,

certo ci sono le funzioni che mi danno questo valore sia per le righe sia per le colonne
però che faccio? scansiono 16384 colonne per 1048576 righe per sapere l'occupazione? mi sembra una sciocchezza

In che senso? Di quali funzioni parli? Perchè devi scansionare l'intero file?

facendo l'unzip si vede l'xml

originale...non lo sapevo...ma così ad occhio mi sembra un procedimento troppo laborioso

Alla fine dove devi utilizzare tutto questo? In una windows app? script vba?

UPDATE:
win app o simili: conosci librerie come Interop o NPOI?
vba guarda qui

/Ciao
Modificato da scioCoder il 13 marzo 2019 19:01 -

Alessio
54 messaggi dal 10 aprile 2017
a meno di non fare tramite prg
le stesse cose che faccio a mano
rinomino
unzip
cerco
estraggo i dati che mi servono
chiudo
rinomino

mi chiedevo se c'è il modo di entrare nel merito del xml dell'excel senza fare tutto ciò
grz
lily
54 messaggi dal 10 aprile 2017
.ahhhhhhhhhh ahhhhhhhhhhhh Alessio Alessio che non sa questa cosa!?!?! ai ai ai ai
...ovviamente sto scherzando...

creo un file excel con macro ALESSIO.xlsm
lo rinomino in ALESSIO.zip
unzippo in una cartella
apro la cartella ALESSIO
dentro ho tutta la struttura

tre cartelle
_rels
docProps
xl

all'interno i vari file xml e ulteriori cartelle
.................................
alla fine della fiera vorrei
fare un "qualche cosa" che apre il file che m'interessa
si va a vedere l'occupazione massima righexcolonne
si carica righexcolonne in memoria
sono estremamente più veloce lavorare in mem piuttosto che cella per cella con excel
.................................





    Call LASTCOLUMNINONEROW(1, LastCol)
    Call LASTROWINONECOLUMN(LastRiga, "A")



Private Sub LASTCOLUMNINONEROW(LastRow As Long, LastCol As Long)
'
' LASTCOLUMNINONEROW Macro
'
    With ActiveSheet
        LastCol = Cells(LastRow, Cells.Columns.Count).End(xlToLeft).Column
    End With
    
End Sub

Private Sub LASTROWINONECOLUMN(LastRow As Long, LastCol As String)
'
' LASTROWINONECOLUMN Macro
'
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, LastCol).End(xlUp).Row
    End With
    
End Sub



grz
ciao
54 messaggi dal 10 aprile 2017
le librerie Interop le sto usando
mentre per sentito dire le NPOI
da cui un bellissimo intervento a questo Vostro indirizzo
https://forum.aspitalia.com/forum/post/409182/Libreria-NPOI.aspx

ci studio su
grz
buona serata
333 messaggi dal 05 novembre 2012
Fermi un attimo...sei un fiume in piena :)

Quale è lo scopo finale del tuo programmino? Sapere il numero massimo di righe e di colonne?

/Ciao

Alessio
54 messaggi dal 10 aprile 2017
non massimo generico
ma delimitato nel senso che se apro il file excel di nome pippo
potrebbe avere un formula nella cella O1048560 a priori non lo so il range non lo conosco
54 messaggi dal 10 aprile 2017
lo scopo del "programmino" è
- eredito una settantina di file excel (macro) che fanno "cose"
- un po' via vba
- un po' con formule
lo scopo è renderli più performanti
NON posso riscriverli
NON posso perderci troppo tempo
quindi mi limito a procedere per passi piccolissimi

.............
lo scopo ora come ora è aprire ogni singolo excel e guardarci dentro
alla fine vorrei costruirmi un db con le info in esso contenute
di certo NON mi metto a mano a spazzolarmi settanta file excel per capire quali sono e dove sono le info
quindi l'idea è
apro
mappo
elaboro
estraggo
scrivo
chiudo
passo al prossimo

a posteriori quando avrò i dati in forma "cristiana" entrerò nel merito specifico
piano piano butterò gli excel
più o meno tra vent'anni (ahahaha)

grz

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.