FoxPro/Visual FoxPro - convertir archivo .rtf a .txt desde VFP9

 
Vista:
sin imagen de perfil

convertir archivo .rtf a .txt desde VFP9

Publicado por omar (20 intervenciones) el 19/07/2020 01:11:05
Hola buenas noches a todos los miembros del foro.
antes de hacer cualquier pregunta quisiera agradecer todo el aporte que ha hecho este foro por mi. gracias a ello crecí mucho en el aprendizaje el lo relacionado a vfp.
Bien, les comento tengo una aplicación que me convierte un archivo .RTF a .TXT, funciona bien, pero la PC en el que trabajo lo actualizaron de Ofice 2010 a 2019, desde este momento cada conversión que haga me tarda entre 10 a 15 segundo ya no es instantánea como solía realizarlo. aqui les dejo la rutina que utilizo:

esta rutina lo tengo en un .PRG

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
PROCEDURE convert_rtf_to_text_by_MsWord
*------------------------------------------------------
* tcSourceFile: Archivo de texto (rtf, doc) a convertir
* tcTargetFile: Nombre del archivo de destino (txt)
* 	Si se omite será igual a tcSourceFile
*	con la extensión txt
* No admite un archivo txt como tcSourceFile
* convert_rtf_to_text_by_MsWord devuelve .T. si encuentra el archivo convertido
* -----------------------------------------------------
LPARAMETERS tcSourceFile,tcTargetFile
TRY
	LOCAL LOEX AS EXCEPTION,;
		LCMESSAGE,;
		lREsult,;
		lcDocuments,;
		loFso as Object,;
		loWord as Object,;
		oWsh as Object,;
		loDoc as Object,;
		LOFOCUS AS OBJECT,;
		loWord_err as Exception
 	IF VARTYPE(m.tcTargetFile) # "C"
		tcTargetFile = ""
	ENDIF
 	oWsh = CREATEOBJECT("WScript.Shell")
	lcDocuments = oWsh.SpecialFolders("MyDocuments")
	owsh=null
 	loFso = NEWOBJECT("Scripting.FileSystemObject")
	DO WHILE .t.
		IF EMPTY(m.tcSourceFile)
			EXIT
		ENDIF
 		*WAIT "Convirtiendo " + m.tcSourceFile + " a txt..." WINDOW AT 20,20 NOWAIT
 		IF JUSTEXT(m.tcSourceFile) == "TXT"
			lcMessage = "SourceFile no puede ser un formato txt"
			EXIT
		ENDIF
 		IF !loFso.FileExists(m.tcSourceFile)
			lcMessage = m.tcSourceFile + " no existe"
			EXIT
		ENDIF
 		* Si no se pasó el nombre del archivo de destino
		IF EMPTY(m.tcTargetFile)
			tcTargetFile = ADDBS(JUSTPATH(m.tcSourceFile)) ;
					+ JUSTSTEM(m.tcSourceFile)
		ELSE
			tcTargetFile = ADDBS(JUSTPATH(m.tcTargetFile));
				+ JUSTSTEM(m.tcTargetFile)
 		ENDIF
 		TRY
			loWord = NEWOBJECT("Word.Application")
		CATCH TO loWord_err
		ENDTRY
		IF VARTYPE(loWord_err)="O"
			lcMessage = "No se pudo instanciar Microsoft Word ® "
			EXIT
		ENDIF
		loWord.Documents.Open(m.tcSourceFile)
		loDoc = loWord.ActiveDocument
 
		loDoc.SaveAs(m.tcTargetFile , 3)
		loDoc.Close()
		loWord.Quit()
 
		IF EMPTY(JUSTPATH(m.tcTargetFile))
			tcTargetFile = ADDBS(m.lcDocuments)+m.tcTargetFile
		ENDIF
		lResult = loFso.FileExists(FORCEEXT(m.tcTargetFile,".txt"))
 		EXIT
	ENDDO
 CATCH TO LOEX
	LOEX.USERVALUE = PROGRAM()
	* SHOWERROR(LOEX)  && rutina que muestra el error
 FINALLY
 	loFso = null
	loDoc = null
	loWord = null
 	WAIT CLEAR
	IF !EMPTY(M.LCMESSAGE)
		MESSAGEBOX(M.LCMESSAGE,0,PROGRAM())
	ENDIF
ENDTRY
RETURN m.lResult
SET DEFAULT TO D:\SIGAMM
ENDPROC



y desde aquí lo ejecuto desde con command bottom [b]



SET DEFAULT TO D:\SIGAMM\prg
lcSourceFile = "c:\Temp_des\cuerpo.rtf"
lcTargetFile = "c:\Temp_sigamm\cuerpo.txt"
IF convert_rtf_to_text_by_MsWord(lcSourceFile , lcTargetFile)
ENDIF


cualquier ayuda que me puedan brindar lea agradecería
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder