Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola,
Tengo unas macros que generan unos ficheros en texto plano.
El problema es que me generan los ficheros con codificación UTF-8 y lo que necesito es que sean ANSI.
He probado a cambiar la opción "Juego de caracteres al Exportar" en Propiedades de Documento, pero sigue exportándolos en UTF-8.
Qué podría hacer?
Gracias.
Saludos.
Alexis como estas?
Espero que este blog de la comunidad te sea util, saludos
Hola Alexis,
Prueba esto a ver si te vale:
SUB WriteFileInANSI
sFileName = "C:\MyFile.txt"
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2 'Specify stream type - we want To save text/string data.
fsT.Charset = "ascii" 'Specify charset For the source text data.
fsT.Open 'Open the stream And write binary data To the object
fsT.WriteText "special characters: äöüß"
fsT.SaveToFile sFileName, 2 'Save binary data To disk
END SUB
Un saludo,
H
Muchas gracias a los dos.
Ya he probado muchas posibles soluciones, tanto cambiando configuraciones del documento y usuario como en las propias macros, pero sigue creando los ficheros en UTF-8.
Leí un post externo que decía que Qlikview solo es capaz de crear ficheros con codificación UTF-8. Es cierto?
Alguien ha podido crear algún fichero con otra codificación diferente a UTF-8?
Gracias.
Saludos.
Hola Alexis,
He hecho la prueba y a mí me funciona bien... Tengo 2 rutinas, una que me crea un fichero en ANSII (WriteFileInANSI) y otra que me crea un fichero en UTF-8 (WriteFileInUTF8):
SUB WriteFileInANSI
sFileName = "C:\HCTR\PROYECTOS\ENERGYA_VM\__POC_ENERGYA\DAT\MiArchivoANSI.txt"
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2 'Specify stream type - we want To save text/string data.
fsT.Charset = "ascii" 'Specify charset For the source text data.
fsT.Open 'Open the stream And write binary data To the object
fsT.WriteText "special characters: äöüß"
fsT.SaveToFile sFileName, 2 'Save binary data To disk
END SUB
SUB WriteFileInUTF8
sFileName = "C:\HCTR\PROYECTOS\ENERGYA_VM\__POC_ENERGYA\DAT\MiArchivoUTF8.txt"
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2 'Specify stream type - we want To save text/string data.
fsT.Charset = "utf-8" 'Specify charset For the source text data.
fsT.Open 'Open the stream And write binary data To the object
fsT.WriteText "special characters: äöüß"
fsT.SaveToFile sFileName, 2 'Save binary data To disk
END SUB
Al ejecutarlas se crean los 2 ficheros: MiArchivoANSI.txt y MiArchivoUTF8.txt, con una serie de caracteres dentro que en ANSI se escriben (o interpretan) tal cual y en UTF-8 no: "special characters: äöüß".
Si abro los ficheros con un editor de texto avanzado sí que sabe en qué formato se han guardado:
MiArchivoANSI.txt
MiArchivoUTF8.txt
¡Espero que te ayude!
Saludos,
H
Alexis
mira la Macro
hay que declarar 3 variables:
Public Sub ConvertInterFaceFileUTF8toANSI()
Dim StrText
Dim adReadAll
Dim adSaveCreateOverWrite
Dim adTypeBinary
Dim adTypeText
Dim adWriteChar
Dim DestDir
Dim UTF8FName
Dim ANSIFName
DestDir = ActiveDocument.GetVariable("vInterfaceFileDirectory").getcontent.string
UTF8FName = ActiveDocument.GetVariable("vInterFaceUTF8FileName").getcontent.string
ANSIFName = ActiveDocument.GetVariable("vInterfaceFileName").getcontent.string
adReadAll = -1
adSaveCreateOverWrite = 2
adTypeBinary = 1
adTypeText = 2
adWriteChar = 0
'//Set TextStream = CreateObject("ADODB.Stream")
With CreateObject("ADODB.Stream")
.Open
.Type = adTypeBinary
.LoadFromFile DestDir & UTF8FName
.Type = adTypeText
.Charset = "utf-8"
strText = .ReadText(adReadAll)
.Position = 0
.SetEOS
.Charset = "_autodetect" 'Use current ANSI codepage.
.WriteText strText, adWriteChar
.SaveToFile DestDir & ANSIFName, adSaveCreateOverWrite
.Close
End With
End sub
Saludos,