Adahm
Utente standard
- Professione: Consulente di Processo
- Software: CatiaV5 / Inventor21
- Regione: Lombardia
Ciao a tutti,
ho in archivio qualche migliaio di file di grosse dimensioni, perché sono stati generati da un Template "corrotto" e avrei la necessità di sistemarli.
Ho visto che copiando tutti i fogli di un file corrotto, in un file nuovo partendo da un Template "pulito", quest'ultimo ha delle dimensioni accettabili (meno di 1MB contro i 10MB del file corrotto).
Per questo motivo ho provato a scrivere una routine che possa fare questa operazione automaticamente, ma non riesco a farla funzionare. Per un po' sono riuscito a copiare i Fogli nel nuovo file, ma adesso non funziona più e non capisco in cosa sbaglio.
Qualcuno sa dirmi dove sbaglio o se il problema si può risolvere in altro modo?
Grazie
Di seguito il codice che sto cercando di far funzionare:
ho in archivio qualche migliaio di file di grosse dimensioni, perché sono stati generati da un Template "corrotto" e avrei la necessità di sistemarli.
Ho visto che copiando tutti i fogli di un file corrotto, in un file nuovo partendo da un Template "pulito", quest'ultimo ha delle dimensioni accettabili (meno di 1MB contro i 10MB del file corrotto).
Per questo motivo ho provato a scrivere una routine che possa fare questa operazione automaticamente, ma non riesco a farla funzionare. Per un po' sono riuscito a copiare i Fogli nel nuovo file, ma adesso non funziona più e non capisco in cosa sbaglio.
Qualcuno sa dirmi dove sbaglio o se il problema si può risolvere in altro modo?
Grazie
Di seguito il codice che sto cercando di far funzionare:
Codice:
Public Sub ReducingFileSize()
' Riduce le dimensioni dei file corrotti, copiandone i fogli in un file nuovo che sovrascriverà i file corrotti
On Error GoTo Err_ReducingFileSize:
Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument
' Se non è un file di tipo drawing esce
If oDrawDoc.DocumentType <> kDrawingDocumentObject Then
MsgBox "Il documento attivo non è un disegno", vbCritical, "Documento non compatibile"
Exit Sub
End If
' Apre un file nuovo
Dim sStandard As String
sStandard = "\\ap03\PrismaTech\ConfigurazioniCAD\Inventor\Templates\Standard.idw"
Dim oNewDrawDoc As DrawingDocument
Set oNewDrawDoc = ThisApplication.Documents.Add(kDrawingDocumentObject, sStandard, True) ', [CreateVisible] As Boolean )
' Cicla su ogni foglio del file e li copia nel file nuovo
Dim oSheet As sheet
For Each oSheet In oDrawDoc.Sheets
Call oSheet.Activate
' Da questa riga non riesco a farlo funzionare, il resto del codice non è testato
Call oSheet.CopyTo(oNewDrawDoc)
Next
' Registra il percorso e il nome del file originale
Dim sFullFileName As String
sFullFileName = oDrawDoc.fullFilename
' Cancella il primo Foglio
For Each oSheet In oNewDrawDoc.Sheets
Call oSheet.Delete
Exit For
Next
' Aggiorna il documento
Call oNewDrawDoc.Update
' Chiude il file originale
Call oDrawDoc.Close(False)
' Salva il nuovo documento sovrascrivendo il file originale
Call oNewDrawDoc.SaveAs(sFullFileName, False)
Err_ReducingFileSize:
Debug.Print Err.Description
Resume Next
End Sub