+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Lettura dimensioni file durante la scrittura con VBA excel

  1. #1
    ginopizza non è in linea Scolaretto
    Post
    100

    Lettura dimensioni file durante la scrittura con VBA excel

    Ciao

    Sto cercando di monitorare la dimensione di un file di testo generato da un comando DOS, mentre viene scritto.
    Per leggere la dimensione mentre viene scritto uso il seguente codice (Parziale) :


    codice:
    Set fs = CreateObject("Scripting.FileSystemObject")
    
    'lettura dimensione file risultante
    Set f = fs.Getfile("c:\TEMP\PIPPO.txt")
    F_SIZE_1 = f.Size
    Ripetendo la lettura ad intervalli di 2- 3 secondi, quando le 2 letture sono uguali , dovrebbe
    significare che il file è stato scritto per intero e quindi procedo con il resto del programma.

    Il tutto funzionava fino a WIN 7 , con WIN 10 , la lettura delle dimensioni del file mentre viene scritto sono sempre = 0 fino a quando non è completo e solo allora la dimensione viene letta correttamente.
    Dipende da qualche impostazione di windows e/o office ?
    In effetti anche file explorer non mostra la dimensione aggiornata , ma solo quando il file è completo compare la giusta dimensione.
    Cosa ne pensate ?

    Ciao

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,036
    Blogs
    5
    Penso che il metodo non va affatto bene. Primo perché la dimensione potrebbe non essere aggiornata con certezza (e infatti non lo è con tutti i sistemi operativi) e poi perché questo lavoro si fa in altro modo.

    Bisognerebbe capire cosa scrive il file (per vedere quali metodi - migliori e più ortodossi - possono essere usati) ma, in ogni caso, dovresti provare ad aprire in scrittura in modo esclusivo. Avresti un errore finchè non è stato completamente scritto e potresti intercettare l'errore per provare nuovamente.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    ginopizza non è in linea Scolaretto
    Post
    100
    Ciao AntonioG.

    Grazie per lo spunto , ho provato a cercare l'errore rinominando il file durante la scrittura :

    codice:
    'dopo il comando DOS per scrivere il file di testo
    
    
    inizio = Timer
    
    Do While file_status <> "close"
    
    'timing
    
    Start = Timer
    Pause = 5 'pausa in secondi
    Do While Timer < Start + Pause
    Loop
    
    
    On Error Resume Next
    Name "c:\TEMP\PIPPO.txt" As "c:\TEMP\PIPPO.txt"
    Num = Err.Number
    
    If Num = 75 Then
    file_status = "open"
    Else
    file_status = "close"
    End If
    
    Loop
    
    fine = Timer
    
    MsgBox "finito !! in secondi=> " & fine - inizio
    
    
    End Sub
    ti sembra affidabile ?
    Ultima modifica di ginopizza; 10-02-2019 20:12  Motivo: impaginazione codice

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi