FoxPro/Visual FoxPro - Archivo Word

 
Vista:
Imágen de perfil de Analia

Archivo Word

Publicado por Analia (186 intervenciones) el 15/02/2011 21:22:46
Hola !!, tengo que hacer que me busque un determinado nonbre de archivo en word o un archivo en formato JPG y que al hacer click sobre el se habra el archivo en el programa que corresponda.
Prove con el siguiente codigo y nada :

oForm = THISFORM
oForm.AddObject('oWordDoc','OleControl','WordDocument')
oForm.oWordDoc.Visible = .t.
oForm.oWordDoc.DoVerb(0)
SELECT busqueda
locfile busqueda.nombre

Les agradeceria que me pudieran ayudar
Saludos.
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
sin imagen de perfil

RE:Archivo Word

Publicado por Angel Ricardo Piedrabuena (87 intervenciones) el 16/02/2011 11:31:15
Hola Analia
para la busqueda de archivos sugiero que uses el componente Filer.dll que se incluye desde las primeras versiones de Visual FoxPro y nos brinda, justamente, un motor de búsqueda de archivos y de texto.
Este componente DLL no tiene una interfaz de usuario. Se puede crear una instancia del objeto Filer en un programa, y buscar archivos sin la intervención del usuario.
Una vez instanciado, se especifican las condiciones de búsqueda de archivos y/o texto, y se ejecuta el método Find(). Este método retorna un objeto colección con sus propiedades, que permiten obtener información de los archivos que cumplen las condiciones de la búsqueda; y métodos que permiten editar o eliminar estos archivos.

Ejemplo

1. Búsqueda del archivo "Customer.dbf":

LOCAL loFiler AS 'Filer.FileUtil'

*-- Creo el objeto
loFiler = CREATEOBJECT('Filer.FileUtil')
*-- Indico la ruta
loFiler.SearchPath = HOME(1)
*-- Indico el archivo o mascara (Ej: *.dbf)
loFiler.FileExpression = 'Customer.dbf'
*-- Indico que busque en subcarpetas
loFiler.SubFolder = 1
*-- Busco...
loFiler.Find(0)

IF loFiler.Files.Count > 0
? TRANSFORM(loFiler.Files.Count) + ' archivo/s encontrado/s'
?
FOR lnCant = 1 TO loFiler.Files.Count
WITH loFiler.Files.Item(lnCant)
? 'Archivo ' + TRANSFORM(lnCant)
? 'Ruta: ' + .Path
? 'Nombre: ' + .Name
? 'Tamaño: ' + TRANSFORM(.Size)
? 'Creado: ' + TRANSFORM(DATETIME(1899,12,30) + .DateTime * 86400)
? 'Modificado: ' + TRANSFORM(DATETIME(1899,12,30) + .LastWriteTime * 86400)
? 'Ultimo acceso: ' + TRANSFORM(DATETIME(1899,12,30) + .LastAccessTime * 86400)
?
ENDWITH
ENDFOR
ELSE
? 'El archivo no se encontró.'
ENDIF
loFiler = NULL
en cuanto a word, hay dos formas de abrir archivos de Word desde Visual FoxPro.

1. Mediante el objeto Shell.Application

lcFile = GETFILE("DOC")
loShell = CREATEOBJECT("Shell.Application")
loShell.ShellExecute(lcFile)
RELEASE loShell

2. Mediante Automation

lcFile = GETFILE("DOC")
loWord = CREATEOBJECT("Word.Application")
loWord.Documents.Open(lcFile)
loWord.Application.Visible = .T.
RELEASE loWord

saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Analia

RE:Archivo Word

Publicado por Analia (186 intervenciones) el 16/02/2011 16:13:24
Hola !!, y en cuanto ha archivo JPG y que quiero abrirlos en Photoshop ?
desde ya te agradesco tu ayuda.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de XXX
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Archivo Word

Publicado por XXX (1541 intervenciones) el 16/02/2011 17:03:28
Algotra cosita mas que quieras????????????
La investigacion refuerza el comocimiento........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Archivo Word

Publicado por Juan Manuel Cruz (512 intervenciones) el 17/02/2011 10:29:04
La opción más práctica es la sugerencia "Shell.Application" de Ángel Ricardo. Vale para todo tipo de archivos, siempre y cuando la asociación de tipos de fichero sea correcta en el sistema operativo.

De paso, verifica si te funciona el corrector ortográfico :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

copiar contenido de un .doc a un campo memo

Publicado por Celso Omar (31 intervenciones) el 25/05/2014 21:08:22
hola buenas tardes como estas:
Recurro a tu experiencia y conocimiento para solicitar tu valiosa ayuda. tengo un formulario entre las cual tengo un edit que esta asociada a un campo memo de un dbf, a este edit necesito cargar el contenido de un archivo .rtf el cual ya lo pase a formato .doc, el archivo se llama "datospersonales" y el nombre es fijo no varia lo que varia es el contenido que me interesa copiarlo al campo memo del edit1 que tengo en el formulario.
desde ya agradezco tu ayuda.
Saludos Cordiales.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

copiar contenido de un .doc a un campo memo

Publicado por Fidel José (558 intervenciones) el 26/05/2014 13:31:25
Si el ".doc" significa que es un archivo con formato Microsoft Word y tienes Microsoft Word instalado, puedes utilizar este Procedure "TextFormWord".

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
*<Llamada>
lcFile=TextFromWord("datospersonales.doc", ,.T.,.T.)
SELECT MiTabla
REPLACE MICAMPO_memo with FILETOSTR(lcFile)
*</Llamada>
 
***************************************************
PROCEDURE TextFromWord
LPARAMETERS xcDocument,xcFileDest,xlQuitblank,xlAddSpace
***************************************************
* Nombre Original: PROCEDURE Extrae_texto_word
***************************************************
* PUblicada por ARiel en Comunidad
* Adaptada por Fidel.
*********************************
* xcDocument: Ruta y nombre de archivo (puede omitirse)
* xcFileDest: Ruta y nombre de un archivo de salida (Puede omitirse)
* xlQuitBlank: Quitar espacios en blanco Alltrim()
* xlAddSpace:  Agrega una linea en blanco entre parágrafos.
********************************************************************
* LPARAMETERS xcDocument,xcFileDest,xlQuitblank,xlAddSpace
*********************************************************************
 
LOCAL lnAsc,lcObten,i,j,lcChar,llAdd,WordApp,oWord,nfop
LOCAL ARRAY gaimp(33)
gaImp[1]=153
gaImp[2]=161
gaImp[3]=166
gaImp[4]=169
gaImp[5]=171
gaImp[6]=174
gaImp[7]=187
gaImp[8]=188
gaImp[9]=189
gaImp[10]=190
gaImp[11]=191
gaImp[12]=193
gaImp[13]=196
gaImp[14]=201
gaImp[15]=203
gaImp[16]=205
gaImp[17]=207
gaImp[18]=209
gaImp[19]=211
gaImp[20]=214
gaImp[21]=218
gaImp[22]=220
gaImp[23]=225
gaImp[24]=228
gaImp[25]=233
gaImp[26]=235
gaImp[27]=237
gaImp[28]=239
gaImp[29]=241
gaImp[30]=243
gaImp[31]=246
gaImp[32]=250
gaImp[33]=252
 
 
IF EMPTY(xcDocument)
	xcDocument= GETFILE('DOC')
ENDIF
IF EMPTY(xcDocument)
	RETURN ""
ENDIF
 
WordApp = CREATEOBJECT("word.application")
IF VARTYPE(WordApp)#"O"
	RETURN
ENDIF
xcFileDest=EVL(xcFileDest,ADDBS(FULLPATH(""))+JUSTSTEM(xcDocument)+".txt")
 
IF FILE(xcFileDest)
	DELETE FILE &xcFileDest
ENDIF
WAIT WINDOW "Abriendo "+JUSTFNAME(xcDocument)+"..." AT 12,15 nowait
 
WordDoc = WordApp.Documents.Open(xcDocument)
WordDoc.Select
oWord=WordApp.ActiveDocument
 
nParagraph=oWord.paragraphs.count
lcDe="/"+TRANSFORM(nParagraph)
LOCAL ARRAY gaParag(nParagraph),gaChar(1),gaColec(1)
 
 
FOR i=1 TO nParagraph
	WAIT WINDOW "Importando parágrafo "+TRANSFORM(i)+lcDe+"..." AT 12,15 nowait
	lcTexto=oWord.Paragraphs(i).Range.text
 
	lcObten=""
	FOR j=1 TO LEN(lcTexto)
		lcChar=SUBSTR(lcTexto,j,1)
		lnASc=ASC(lcChar)
		llAdd=.T.
		DO case
 
			CASE BETWEEN(lnAsc,32,126)
 
 
			CASE ASCAN(gaImp,lnAsc)#0
 
			OTHERWISE
 
				llAdd=.F.
		ENDCASE
		IF llAdd
			LcObten=lcObten+lcChar
		ENDIF
 
 
 
	NEXT
 
	gaParag[i]=IIF(xlQuitBlank,ALLTRIM(lcObten),lcObTen)
NEXT
WAIT WINDOW "Cerrando Microsoft Word ®..." AT 12,15 nowait
WordDoc.Close()
WordDoc = null
WordApp.QUIT
WordApp = null
WAIT WINDOW "Escribiendo archivo..." AT 12,15 nowait
nfop=Fcreate(xcFileDest)
FOR i=1 TO nParagraph
	IF !EMPTY(gaParag[i])
		=FPUTS(nfop,gaParag[i])
		IF xlAddSpace
			=FPUTS(nfop,"")
		ENDIF
	ENDIF
 
NEXT
 
=FCLOSE(nfop)
WAIT clear
 
RETURN xcFileDest
ENDPROC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

copiar varios archivos .txt en un solo archivo .txt

Publicado por celso omar (31 intervenciones) el 30/05/2014 23:47:17
hola como estas:
Disculpa la demora ante todo te agradezco la repuesta que me diste me sirvió de mucho, tengo otra consulta para hacerte. Tengo la aplicación que me convierte la dbf que voy cargando durante el día en archivo .txt por cada registro que voy cargando, esto los guardo en una carpeta diario al final del dia tengo unos 80 a 100 archivos txt an la carpeta.
ahora bien hay posibilidad de que cada archivo de texto que voy generando los vaya a cargar en un solo .txt asi tengo un respaldo de todos los archivos que voy generando para luego enviarlas por e-mail.
con esta rutina pude copiar 2 archivo en uno pero a medida que voy cargando se van pisando y la información anterior se pierde
strtofile(filetostr("Archivo1.txt") + filetostr("Archivo2.txt"), "Destino.txt")
tengo entendido que con additive se evita que se pisen los archivos pero no hubo forma de aplicarlos en esta rutina.

una vez mas te agradezco por tu ayuda y espero puedas darme una mano en este tema.
un abraso.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

copiar varios archivos .txt en un solo archivo .txt

Publicado por Fidel José (558 intervenciones) el 31/05/2014 00:57:32
Hay cosas que no cuentas:
1) Cuál es el destino de los txt. Tal vez se incorporen a tablas de un repositorio.
2) Cuál es el verdadero problema: tener tantos archivos o despachar por email 100 archivos. Con un zip solucionas el problema del despacho.
3) No mencionas si los txt se forman en base a campos delimitados, o son SDF.
4) Pregunto, no sería mejor utilizar CURSORTOXML() y XMLTOCURSOR() ?

Si quieres genererar un solo archivo con todos los txt generados, te recomiendo estudiar las funciones de bajo nivel: fopen(), fcreate(), fgets() fSeek y fPuts()
De todos modos, tienes que pensar en el destino de la información. Si se incorpora a tablas en un repositorio, los diversos bloques deben tener marcas para poder separarse luego. Si no, no habrá forma de saber cuando termina un archivo y cuándo comienza otro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

copiar varios archivos .txt en un solo archivo .txt

Publicado por celso omar (31 intervenciones) el 31/05/2014 01:15:42
hola gracias por la prontísima respuesta:
Te paso a comentar lo del zip esta bien que pasa en una carpeta tengo todos los txt generados 100 o mas en este caso seria c:\dias\1,2,3,4...31. ahora la necesidad mia es recopilar tdo los ccontenidos de cada .txt del dia q corresponde y pasarlos a un solo archivo en el cual esta hubicado en c:\resumen\30-05-2014.txt este archivo necesito generarlo para posteriormente generar una estadistica, por eso a medida que se vayan generando los .txt necesito pasarlos a este archivo sin que se pisen los mismos. el contenido deestos txt son los encabezados de uno e-mail que me llegan so superan los 20 reglones, no tengo problemas en generar los archivos .txt el incombeniente q tengo es copiar el contenido de los .txt q se van generando en un solo archivo en este caso estahubicado en c:\resumen\30-05-2014.txt.
no se si me especifique bien o no.
gracias una vez mas por pronta respuesta. te mando un abraso.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 45
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

copiar varios archivos .txt en un solo archivo .txt

Publicado por OMAR (23 intervenciones) el 06/05/2020 03:27:42
Hola como estas aqui te dejo un rutina que a mi me funciona:

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
tcNewFile=ChrTran"NOMBRE DE NUEVO ARCHIVO GENERADO+".txt"&&debes colocar el nombre que quieras
lcDir1=C:\DESTINO DEL ARCHIVO&& Carpeta de destino para guardar archivo generado
* Buscar carpeta
lcdir="C:\TEMP_SIGAMM" &&GETDIR(FULLPATH(""),"Carpeta de txt","Juntando Archivos",48)
IF EMPTY(lcDir)
	RETURN
ENDIF
LOCAL ARRAY lafiles (1)
*Obtiene todos los archivos de la carpeta con extensión "txt"
lnFiles=ADIR(laFiles,ADDBS(lcdir)+"nombre del archivo.txt")       &&ingresa el nombre del archivo ,txt que deseas seleccionar
IF lnFiles=0
	MESSAGEBOX("No hay archivos txt en "+lcdir)
	RETURN
ENDIF
* Apertura o creación del archivo de destino en bajo nivel
lcTarget=ADDBS(lcDir1)+FORCEEXT(tcNewFile,".txt")
IF !FILE(lcTarget)
	lnTarget=FCREATE(lcTarget)
ELSE
	lnTarget=FOPEN(lcTarget,12)
ENDIF
IF lnTarget = -1
	MESSAGEBOX("No se pudo abrir o crear el archivo de destino")
	RETURN
ENDIF
* Proceso de agreagado.
FOR i=1 TO lnFiles
	lcSource=ADDBS(lcDir)+laFiles[i,1]
	IF UPPER(lcSource)==UPPER(lcTarget)
		LOOP
	ENDIF
	lnSource=FOPEN(lcsource)
	IF lnSource= -1
		MESSAGEBOX("No se pudo abrir "+lcSource)
		RETURN
	ENDIF
	FSEEK(lnTarget,0,2)
	=FPUTS(lnTarget,+"                                        INICIO DEL ARCHIVO")
	DO WHILE !FEOF(lnSource)
		=FPUTS(lnTarget,FGETS(lnsource))
	ENDDO
	=FCLOSE(lnSource)
	=FPUTS(lnTarget," ")
	=FPUTS(lnTarget,"**************************"+"SEPARACIÓN  DE ARCHIVOS"+"**************************")
	=FPUTS(lnTarget," ")
ENDFOR
=FCLOSE(lnTarget)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar