Vai al contenuto
PLC Forum


Macro Vba Excel 2007 - Elaborazione Maro


Mauro76

Messaggi consigliati

Salve a tutti....

ho un problema su un progetto fatto in Excel 2007 dove ho fatto delle macro vba in cui ho usato una procedura "dir" per trovare dei file all'interno di una cartella.

sul mio pc dove ho installato Office 2007 Enterprice Funziona "il file excel l'ho salvato in modalità compatibilità' con office 2003, funziona correttamente.

dopo l'ho provato anche su Office 2003 e funziona.

Quando l'ho provato su Office 2007 Pro non funge.

perfavore avete un esempio di codice vba per cercare dei file ?

sul mio progetto ho creato un modulo di classe :

Private ind As Integer

Public tuttifile As Collection

Private Sub class_initialize()

ind = 0

End Sub

Public Sub esegui(percorso As String, sepcfile As String)

Dim unfile As String

Set tuttifile = New Collection

ChDir percorso

unfile = Dir(percorso & "\" & specfile)

While unfile <> ""

tuttifile.Add unfile

ind = ind + 1

unfile = Dir

Wend

End Sub

Public Function numerofile()

numerofile = ind

End Function

dopo ho usato la funzione esegui su un modulo :

Sub Presentazione_Rettangolo2_Clic()

On Error Resume Next

Dim cf As New CercaFile

i_c = 6

f_c = 26

i_t = 8

i_f = 0

trovatifile = 0

Range("x8:x60").Value = ""

Range("b8:b60").Value = ""

Range("m7").Value = 0

Range("x1").Value = 0

For i = i_c To f_c

If trovatifile = 0 Then

i_d = Range("u" & i)

cf.esegui i_d & "USERDATA\PM581\USERDAT", "*.dat"

If cf.numerofile > 0 Then

tovatifile = 1

Exit For

End If

End If

If Err.Number = 76 Then

i = i + 1

End If

Next i

If tovatifile = 1 Then

For i_f = 1 To cf.tuttifile.Count

Range("x" & i_t).Value = cf.tuttifile(i_f)

i_t = i_t + 1

Next i_f

'********************* ESTRZIONE FILE .DAT **********************

n_file = Range("x7").Value

est_fisso = ".DAT"

ind_elenco = 8

ind_f = 8

elenco = 0

For elenco = 1 To n_file

est = Range("v" & ind_elenco).Value

If est = est_fisso Then

t_file = Range("x" & ind_elenco).Value

Range("b" & ind_f).Value = t_file

ind_f = ind_f + 1

End If

ind_elenco = ind_elenco + 1

Next elenco

'*****************************************************************

info1 = MsgBox("Ricerca File eseguita.", vbExclamation, "VISUALIZZA FILE")

Exit Sub

End If

If trovatifile = 0 Then

info2 = MsgBox("Non è stato trovato nessun file", vbExclamation, "VISUALIZZA FILE")

End If

End Sub

su Office 2007 Pro la macro funziona a metà, ciòè : non funziona la parte di ricerca del file, tutto il resto funziona.

ditemi voi se è corretto o no grazie.

Link al commento
Condividi su altri siti


Senti l'ho provata con 2007 Pro e funziona, l'unico errore che ho trovato è il nome della variabile sepcfile che poi diventa unfile = Dir(percorso & "\" & specfile)...

Usando On Error Resume Next non ti intercetta l'errore, ma la routine non può funzionare...

Link al commento
Condividi su altri siti

  • 11 months later...

anche io ho avuto problemi con VBA su office, e la versione 2007/2010 è molto diversa dalle precedenti.

il consiglio che ti do è intanto di usare Access per i tuoi programmi, perlomeno è fatto apposta per essere programmato,

ma comunque ti ricordo che se vuoi fare programmi anche complessi il sistema migliore e che da la garanzia del funzionamento è Visual studio, con VisualBasic hai gli stessi comandi di VBA ed una grande disponibilità di oggetti, sia di componenti gia pronti, sia l'uso della framework, che la possibilità di l'installazione del tuo programma.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...