Condividi tramite

Codice VBA Word per scegliere automaticamente la codifica testo

Anonimo
2025-01-28T21:18:18+00:00

Buonasera.

Vorrei crearmi un pezzetto di codice VBA per settarmi automaticamente (ora già so come farlo valere per un solo documento) la scelta del tipo codifica caratteri all'apertura di word stesso.

In sostanza spesso mi creo dei documenti word che contengono liste di nome di file, compreso tutto il path, col comando DOS che reidirizza su file...
Però come sapete spesso i nomi delle directory/files hanno caratteri poco digeribili da Word, tipo le accentate.

Ho visto che la codifica che più si avvicina a ciò che mi occorre è quella MS-DOS, ma di default Word usa Windows (predefinita):

Ho provato a cercare in giro su internet ma non trovo nulla che possa riportare codice VBA.

Microsoft 365 e Office | Word | Per il lavoro | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

2 risposte

Ordina per: Più utili
  1. Anonimo
    2025-01-30T09:10:20+00:00

    Grazie della risposta, mi hai dato uno spunto, ma non riesco a farlo funzionare...

    Ho questa macro all'apertura di word, che se si tratta di un determinato documento entra in funzione e setta alcuni parametri del documento stesso, che è quello dove salvo i nomi file completi di percorso.

    Option Explicit

    Private Sub Document_Open()

    If ActiveDocument.Name Like "*nomefile*\*" Then 
    
        **ActiveDocument.TextEncoding = msoEncodingTurkish**  ' QUESTA DOVREBBE ESSERE L'ISTRUZIONE PER LA CODIFICA DEL CARATTERE
    

    ' Qui poi setto i parametri del foglio word: Dimensioni e margini

        With Selection.PageSetup 
    
            .LineNumbering.Active = False 
    
            .Orientation = wdOrientLandscape 
    
            .TopMargin = CentimetersToPoints(0.5) 
    
            .BottomMargin = CentimetersToPoints(0.5) 
    
            .LeftMargin = CentimetersToPoints(1.25) 
    
            .RightMargin = CentimetersToPoints(1.3) 
    
            .Gutter = CentimetersToPoints(0) 
    
            .HeaderDistance = CentimetersToPoints(1.25) 
    
            .FooterDistance = CentimetersToPoints(1.25) 
    
            .PageWidth = CentimetersToPoints(43.17) 
    
            .PageHeight = CentimetersToPoints(55.87) 
    
            .FirstPageTray = wdPrinterDefaultBin 
    
            .OtherPagesTray = wdPrinterDefaultBin 
    
            .SectionStart = wdSectionNewPage 
    
            .OddAndEvenPagesHeaderFooter = False 
    
            .DifferentFirstPageHeaderFooter = False 
    
            .VerticalAlignment = wdAlignVerticalTop 
    
            .SuppressEndnotes = False 
    
            .MirrorMargins = False 
    
            .TwoPagesOnOne = False 
    
            .BookFoldPrinting = False 
    
            .BookFoldRevPrinting = False 
    
            .BookFoldPrintingSheets = 1 
    
            .GutterPos = wdGutterPosLeft 
    
        End With
    

    Perchè continua a ripresentare la finestra per la scelta della codifica?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2025-01-29T10:10:35+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao Massimo,

    MS-DOS utilizza tabelle codici diverse. È possibile provare la tabella codici 850 (msoEncodingOEMMultilingualLatinI) o la tabella codici 437 (msoEncodingOEMUnitedStates). Se non sei sicuro di quale utilizzare, crea file di esempio con lettere come ä, ö, ü, é, è, ê, ç, à o lettere greche sul sistema legacy e verifica se funzionano. Se non hai bisogno di queste lettere speciali, la scelta della tabella codici non è molto importante.

    In VBA, provare a impostare il parametro Encoding su msoEncodingOEMMultilingualLatinI e verificare se funziona:

    Documenti.Apri Nome File:=[FILE_NAME], Codifica:=msoCodificaOEMMultilingualLatinI

    Ricordarsi di sostituire FILE_NAME con il nome effettivo nell'ambiente.

    La risposta è stata utile?

    0 commenti Nessun commento