No graba un documento Word

Re: No graba un documento Word

Postby Antonio Linares » Tue Mar 01, 2016 9:23 am

Carlos,

Prueba a buscar en google por:

VBA word saveas error windows 8

Que ordenador es ? Aqui comentan ese error en un Acer:

http://support.dataaccess.com/Forums/archive/index.php?t-53869.html

// Under 8.1 the ComSaveAs method fails - a Save dialog box is displayed and error 4399 is raised.
// The following alows Ctrl+V to be used to complete the file name form of the dialog.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: No graba un documento Word

Postby colthop » Tue Mar 01, 2016 9:55 am

Hola Antonio:

Buscare lo que me has dicho, el mío si es un Acer, pero el de un cliente no es un HP y también le pasa lo mismo.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: No graba un documento Word

Postby cnavarro » Tue Mar 01, 2016 10:24 am

Carlos, es lo que te iba a contestar ayer, me paso la primera vez que instalé Windows 8 ( no con el mismo tema que el tuyo, pero si parecido ), pero consideraba que ya lo habrías tenido en cuenta
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: No graba un documento Word

Postby colthop » Tue Mar 15, 2016 10:53 am

Hola Cristóbal y Antonio:

No he sabido arreglar el error me podéis orientar para hacerlo.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: No graba un documento Word

Postby cnavarro » Tue Mar 15, 2016 12:50 pm

Carlos, puedes proporcionarme un pequeño ejemplo ( con los valores en array, o en variables, da igual ) y una plantilla y lo pruebo mejor

Saludos
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: No graba un documento Word

Postby colthop » Tue Mar 15, 2016 1:13 pm

Hola Cristóbal en el primer post esta parte de la Función pero aquí te la pongo toda:

Code: Select all  Expand view  RUN

FUNCTION gestcua4()
store rutadato + "EMP" + zempr + "\dili" + zejer + ".doc" to fich
store hb_CurDrive() + ":\" + CurDir() + "\impranua\diligen.doc"     to fic1
if file (fich)
  CreaVent(120,350,"
oDlgwVen","oVentPrinc",LocaText( 1, 2,575),"NO")
  zIniBot = (zLar - 150) / 2
  @ 10*ProporV, 10*ProporH SAY tDlg001 VAR LocaText( 1, 1,725) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 330*ProporH,zProPorV*ProPorV CENTER
  @ 30*ProporV, 10*ProporH SAY tDlg002 VAR LocaText( 1, 2,367) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 330*ProporH,zProPorV*ProPorV CENTER
  @(zAnc-50)*ProPorV,(    zIniBot)*ProPorH BTNBMP xPul01 FILE zruta + "
sele.bmp" TOOLTIP LocaText( 2, 1,  1) OF oDlgwVen PIXEL SIZE  70*ProPorH,40*ProPorV FONT zFont ACTION gestcua413(1)
  @(zAnc-50)*ProPorV,( 80+zIniBot)*ProPorH BTNBMP xPul02 FILE zruta + "
canc.bmp" TOOLTIP LocaText( 2, 1,  2) OF oDlgwVen PIXEL SIZE  70*ProPorH,40*ProPorV FONT zFont ACTION gestcua421(3)
  @-1,0 BUTTON xPul91 PROMPT LocaText( 2, 1,  1) OF oDlgwVen ACTION gestcua413(1)  SIZE 0,0
  @-1,0 BUTTON xPul91 PROMPT LocaText( 2, 1,  1) OF oDlgwVen ACTION gestcua421(3)  SIZE 0,0
  xPul91:bGotFocus:={||xPul01:SetFocus()}
  xPul01:SetFocus()
else
  gestcua413(2)
endif
RETURN( NIL )

FUNCTION gestcua413(zOpc)
if zOpc = 1
  erase &fich
  oDlgwVen:End()
endif
store rutadato + "
EMP" + zempr + "\datowor3.dbf" to fiche
if !file (fiche)
  store "
ficheros\datowor3.dbf" to fiche2
  copy file &fiche2 to &fiche
endif
SELECT 1
use EMPRESA SHARE
OrdSetfocus("
empre01")
seek zempr
store apellidos to xnom
store cif       to xcif
store poblacion to xpob
store provincia to xpro
store cladir + "
" + direccion + ", nº" + alltrim(numdir) to xdir
SELECT 40
use &FICHE SHARE
go top
bloqfila ()
if eof()
  append blank
  replace empresa    with xnom
  replace nif        with xcif
  replace poblacion  with xpob
  replace domicilio  with xdir
  replace provincia  with xpro
  replace ejercicio  with zejer
  replace textuno    with LocaText( 1, 1,748)
  replace textdos    with LocaText( 1, 1,750)
  replace texttres   with LocaText( 1, 1,747)
  replace textcuatro with LocaText( 1, 1,749)
endif
replace dia with "
30"
replace mes with LocaText( 1, 1,784)
replace ano with str(val(zejer)+1,4,0)
dbunlock()
store empresa      to va001
store nif          to va002
store domicilio    to va003
store poblacion    to va004
store provincia    to va005
store ejercicio    to va006
store dia          to va007
store mes          to va008
store ano          to va009
store cargo        to va010
store numeuno      to va011
store textuno      to va012
store numedos      to va013
store textdos      to va014
store numetres     to va015
store texttres     to va016
store numecuatro   to va017
store textcuatro   to va018
store numecinco    to va019
store textcinco    to va020
CreaVent(330,420,"
oDlgwVen","oVentPrinc",LocaText( 1, 2,575),"NO")
@ 10*ProporV, 10*ProporH SAY tDlg001 VAR LocaText( 1, 1,897) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@ 30*ProporV, 10*ProporH SAY tDlg002 VAR LocaText( 1, 1,838) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@ 50*ProporV, 10*ProporH SAY tDlg003 VAR LocaText( 1, 1,423) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@ 70*ProporV, 10*ProporH SAY tDlg004 VAR LocaText( 1, 2, 30) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@ 90*ProporV, 10*ProporH SAY tDlg005 VAR LocaText( 1, 2, 51) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@110*ProporV, 10*ProporH SAY tDlg006 VAR LocaText( 1, 1,440) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@130*ProporV, 10*ProporH SAY tDlg007 VAR LocaText( 1, 1,518) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@130*ProporV,200*ProporH SAY tDlg008 VAR LocaText( 1, 2,309) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@130*ProporV,330*ProporH SAY tDlg009 VAR LocaText( 1, 2,309) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@150*ProporV, 10*ProporH SAY tDlg010 VAR LocaText( 1, 1,124) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@170*ProporV, 70*ProporH SAY tDlg011 VAR LocaText( 1, 2,329) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@190*ProporV, 70*ProporH SAY tDlg012 VAR LocaText( 1, 2,329) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 230*ProporH,zProPorV*ProPorV
@210*ProporV, 70*ProporH SAY tDlg013 VAR LocaText( 1, 2,329) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@230*ProporV, 70*ProporH SAY tDlg014 VAR LocaText( 1, 2,329) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 130*ProporH,zProPorV*ProPorV
@250*ProporV, 70*ProporH SAY tDlg015 VAR LocaText( 1, 2,329) OF oDlgwVen PIXEL COLOR escri01, fondo01 FONT zFont SIZE 230*ProporH,zProPorV*ProPorV
@ 10*ProporV,160*ProPorH GET gDlg001 VAR va001               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProPorH,zProPorV*ProPorV
@ 30*ProporV,160*ProPorH GET gDlg002 VAR va002               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 102*ProPorH,zProPorV*ProPorV
@ 50*ProporV,160*ProPorH GET gDlg003 VAR va003               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProPorH,zProPorV*ProPorV
@ 70*ProporV,160*ProporH GET gDlg004 VAR va004               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProporH,zProPorV*ProPorV
@ 90*ProporV,160*ProPorH GET gDlg005 VAR va005               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProPorH,zProPorV*ProPorV
@110*ProporV,160*ProporH GET gDlg006 VAR va006               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  38*ProporH,zProPorV*ProPorV
@130*ProporV,160*ProPorH GET gDlg007 VAR va007               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  22*ProPorH,zProPorV*ProPorV
@130*ProporV,230*ProporH GET gDlg008 VAR va008               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  86*ProporH,zProPorV*ProPorV
@130*ProporV,360*ProPorH GET gDlg009 VAR va009               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  38*ProPorH,zProPorV*ProPorV
@150*ProporV,160*ProPorH GET gDlg010 VAR va010               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProPorH,zProPorV*ProPorV
@170*ProporV, 10*ProPorH GET gDlg011 VAR va011               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  46*ProPorH,zProPorV*ProPorV
@170*ProporV,160*ProPorH GET gDlg012 VAR va012               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProPorH,zProPorV*ProPorV
@190*ProporV, 10*ProporH GET gDlg013 VAR va013               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  46*ProporH,zProPorV*ProPorV
@190*ProporV,160*ProporH GET gDlg014 VAR va014               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProporH,zProPorV*ProPorV
@210*ProporV, 10*ProporH GET gDlg015 VAR va015               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  46*ProporH,zProPorV*ProPorV
@210*ProporV,160*ProporH GET gDlg016 VAR va016               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProporH,zProPorV*ProPorV
@230*ProporV, 10*ProporH GET gDlg017 VAR va017               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  46*ProporH,zProPorV*ProPorV
@230*ProporV,160*ProporH GET gDlg018 VAR va018               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProporH,zProPorV*ProPorV
@250*ProporV, 10*ProporH GET gDlg019 VAR va019               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE  46*ProporH,zProPorV*ProPorV
@250*ProporV,160*ProporH GET gDlg020 VAR va020               OF oDlgwVen PIXEL COLOR escri02, fondo02 FONT zFont SIZE 246*ProporH,zProPorV*ProPorV
zIniBot = (zLar - 150) / 2
@(zAnc-50)*ProPorV,(    zIniBot)*ProPorH BTNBMP xPul01 FILE zruta + "
sele.bmp" TOOLTIP LocaText( 2, 1,  1) OF oDlgwVen PIXEL SIZE  70*ProPorH,40*ProPorV FONT zFont ACTION gestcua411()
@(zAnc-50)*ProPorV,( 80+zIniBot)*ProPorH BTNBMP xPul02 FILE zruta + "
canc.bmp" TOOLTIP LocaText( 2, 1,  2) OF oDlgwVen PIXEL SIZE  70*ProPorH,40*ProPorV FONT zFont ACTION gestcua412(2)
@-1,0 BUTTON xPul91 PROMPT LocaText( 2, 1,  1) OF oDlgwVen ACTION gestcua411()  SIZE 0,0
@-1,0 BUTTON xPul91 PROMPT LocaText( 2, 1,  1) OF oDlgwVen ACTION gestcua412(2)  SIZE 0,0
xPul91:bGotFocus:={||xPul01:SetFocus()}
gDlg001:SetFocus()
gDlg001:SetFocus()
RETURN (NIL)

FUNCTION gestcua412(zOpc)
oDlgwVen:End()
SaliMenu()
RETURN (NIL)

FUNCTION gestcua411()
bloqfila()
replace empresa     with va001
replace nif         with va002
replace domicilio   with va003
replace poblacion   with va004
replace provincia   with va005
replace ejercicio   with va006
replace dia         with va007
replace mes         with va008
replace ano         with va009
replace cargo       with va010
replace numeuno     with va011
replace textuno     with va012
replace numedos     with va013
replace textdos     with va014
replace numetres    with va015
replace texttres    with va016
replace numecuatro  with va017
replace textcuatro  with va018
replace numecinco   with va019
replace textcinco   with va020
dbunlock()
oWord:=TOleAuto():New( "
Word.Application" )
cPlantilla := (fic1)
oDoc :=oWord:Documents:Open(cPlantilla)    // abre el doc modelo
cViejo := "
[EMPRESA]"
cCampo := (empresa)
reemplace2 ()
cViejo := "
[NIF]"
cCampo := (nif)
reemplace2 ()
cViejo := "
[POBLACION]"
cCampo := (poblacion)
reemplace2 ()
cViejo := "
[PROVINCIA]"
cCampo := (provincia)
reemplace2 ()
cViejo := "
[DOMICILIO]"
cCampo := (domicilio)
reemplace2 ()
cViejo := "
[EJERCICIO]"
cCampo := (ejercicio)
reemplace2 ()
cViejo := "
[DIA]"
cCampo := (dia)
reemplace2 ()
cViejo := "
[MES]"
cCampo := (mes)
reemplace2 ()
cViejo := "
[ANO]"
cCampo := (ano)
reemplace2 ()
cViejo := "
[CARGO]"
cCampo := (cargo)
reemplace2 ()
cViejo := "
[NUMEUNO]"
cCampo := (numeuno)
reemplace2 ()
cViejo := "
[TEXTUNO]"
cCampo := (textuno)
reemplace2 ()
cViejo := "
[NUMEDOS]"
cCampo := (numedos)
reemplace2 ()
cViejo := "
[TEXTDOS]"
cCampo := (textdos)
reemplace2 ()
cViejo := "
[NUMETRES]"
cCampo := (numetres)
reemplace2 ()
cViejo := "
[TEXTTRES]"
cCampo := (texttres)
reemplace2 ()
cViejo := "
[NUMECUATRO]"
cCampo := (numecuatro)
reemplace2 ()
cViejo := "
[TEXTCUATRO]"
cCampo := (textcuatro)
reemplace2 ()
cViejo := "
[NUMECINCO]"
cCampo := (numecinco)
reemplace2 ()
cViejo := "
[TEXTCINCO]"
cCampo := (textcinco)
reemplace2 ()
oDoc := oWord:Get("
ActiveDocument")  // object (documento activo)
oDoc:Invoke( "
SaveAs", cFich )        // graba fichero
oDoc:Invoke('Close',0)               // cierra fichero
oDoc:=NIL
oWord:Quit()
oWord:=NIL
gestcua421(2)
RETURN (.T.)

FUNCTION gestcua421(Opc)
zOpc = Opc
clos data
oWord:=TOleAuto():New( "
Word.Application" )
oWord:Documents:Open(fich)
oWord:Visible := .T.
oWord:Set( "
WindowState", 1 )
oWord:=NIL
gestcua412(zOpc)
RETURN (NIL)

FUNCTION reemplace2()
cFich  := fich
cNuevo := (cFich)->(cCampo)
if VALTYPE (cNuevo) = "
C"  // tipo caracter
  cNuevo := alltrim (cNuevo)
endif
reemplace (oDoc, cViejo, cNuevo )
RETURN nil

STATIC FUNCTION REEMPLACE (oDoc, cViejo, cNuevo)
LOCAL oSelection, oTexto, oFind
oSelection := oDoc
oTexto := oSelection:Range
oFind  := oTexto:Find
oFind:Text:= cViejo
oFind:Forward:=.T.
oFind:Wrap:= INT(1)
oFind:Format:=.f.
oFind:MatchCase:=.f.
oFind:Execute()
while oFind:Found
  oTexto:Text:=cNuevo
  oFind:Execute()
enddo
RETURN nil
 


Solo queda el archivo Word y la base de datos que los puedes bajar de Aquí: http://www.colthop.es/diligen.doc y http://www.colthop.es/DATOWOR3.DBF

Un saludo

Carlos
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: No graba un documento Word

Postby cnavarro » Tue Mar 15, 2016 1:19 pm

Ok, voy a ver

Este ejemplo me funciona perfectamente, mira a ver si a ti te da error
Windows 10 - 64 bits
Code: Select all  Expand view  RUN

/*
Habria que probar tambien el method ExportAsFixedFormat
*/


#include "fivewin.ch"

Static rutadato := ".\"
Static zempr    := "
0001"
Static zejer    := "
2016"
Static fich
Static fich1
Static fiche
Static fiche2
Static fic1
Static cFich
Static oWord
Static cNuevo
Static cViejo
Static oDoc
Static cCampo
Static cPlantilla

Function Main()

   gestcua4()
   gestcua421()
   
   gestcua411()
   
Return nil


FUNCTION gestcua4()
//store rutadato + "
EMP" + zempr + "\dili" + zejer + ".doc" to fich
store hb_CurDrive() + "
:\" + CurDir() + "\EMP" + zempr + "\dili" + zejer + ".doc" to fich
store hb_CurDrive() + "
:\" + CurDir() + "\diligen.doc"     to fic1
store rutadato + "
EMP" + zempr + "\datowor3.dbf" to fiche
cFich := fich

RETURN( NIL )


FUNCTION gestcua421(Opc)

? fiche, fich, fic1, cFich
/*
oWord:=TOleAuto():New( "
Word.Application" )
oWord:Documents:Open(fich)
oWord:Visible := .T.
oWord:Set( "
WindowState", 1 )
oWord:=NIL
*/
RETURN (NIL)


FUNCTION gestcua411()
oWord:=TOleAuto():New( "
Word.Application" )
cPlantilla := ( fic1 )
oDoc := oWord:Documents:Open(cPlantilla)    // abre el doc modelo
cViejo := "
[EMPRESA]"
cCampo := "
EMPRESA01" //(empresa)
reemplace2 ()
cViejo := "
[NIF]"
cCampo := "
B11111111" //(nif)
reemplace2 ()
cViejo := "
[POBLACION]"
cCampo := "
POBLACION 01"  //(poblacion)
reemplace2 ()
cViejo := "
[PROVINCIA]"
cCampo := "
PROVINCIA 01" //(provincia)
reemplace2 ()
cViejo := "
[DOMICILIO]"
cCampo := "
DOMICILIO 01"  // (domicilio)
reemplace2 ()
cViejo := "
[EJERCICIO]"
cCampo := "
EJERCICIO 01"  //(ejercicio)
reemplace2 ()
cViejo := "
[DIA]"
cCampo := "
11"  // (dia)
reemplace2 ()
cViejo := "
[MES]"
cCampo := "
MARZO"  //(mes)
reemplace2 ()
cViejo := "
[ANO]"
cCampo := "
2016" //(ano)
reemplace2 ()
cViejo := "
[CARGO]"
cCampo := "
ADMINISTRADOR" //(cargo)
reemplace2 ()
cViejo := "
[NUMEUNO]"
cCampo := "
NUMERO UNO" //(numeuno)
reemplace2 ()
cViejo := "
[TEXTUNO]"
cCampo := "
TEXTO NUMERO UNO"  //(textuno)
reemplace2 ()
cViejo := "
[NUMEDOS]"
cCampo := "
NUMERO DOS" //(numedos)
reemplace2 ()
cViejo := "
[TEXTDOS]"
cCampo := "
TEXTO NUMERO DOS"  //(textdos)
reemplace2 ()
cViejo := "
[NUMETRES]"
cCampo := "
NUMERO TRES" //(numetres)
reemplace2 ()
cViejo := "
[TEXTTRES]"
cCampo := "
TEXTO NUMERO TRES"  //(texttres)
reemplace2 ()
cViejo := "
[NUMECUATRO]"
cCampo := "
NUMERO CUATRO" //(numecuatro)
reemplace2 ()
cViejo := "
[TEXTCUATRO]"
cCampo := "
TEXTO NUMERO CUATRO"  //(textcuatro)
reemplace2 ()
cViejo := "
[NUMECINCO]"
cCampo := "
NUMERO CINCO" //(numecinco)
reemplace2 ()
cViejo := "
[TEXTCINCO]"
cCampo := "
TEXTO NUMERO CINCO"  //(textcinco)
reemplace2 ()
oDoc := oWord:Get("
ActiveDocument")  // object (documento activo)
oDoc:Invoke( "
SaveAs", cFich )        // graba fichero
oDoc:Invoke('Close',0)               // cierra fichero
oDoc:=NIL
oWord:Quit()
oWord:=NIL
gestcua421(2)
RETURN (.T.)


FUNCTION reemplace2()
reemplace () // oDoc, cViejo, cNuevo )
RETURN nil

STATIC FUNCTION REEMPLACE() // (oDoc, cViejo, cNuevo)
LOCAL oSelection, oTexto, oFind
cNuevo := cCampo
oSelection := oDoc
oTexto := oSelection:Range
oFind  := oTexto:Find
oFind:Text:= cViejo
oFind:Forward:=.T.
oFind:Wrap:= INT(1)
oFind:Format:=.f.
oFind:MatchCase:=.f.
oFind:Execute()
while oFind:Found
  oTexto:Text:=cNuevo
  oFind:Execute()
enddo
RETURN nil
 

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: No graba un documento Word

Postby colthop » Wed Mar 16, 2016 8:41 am

Hola Cristóbal y demás:

Lo he simplificado mucho para empezar desde lo mas simple y llegar a donde quiero, pero desde aquí ya se bloquea:

He creado esta función que lo que lo tiene que hacer es crear un fichero llamado a.doc en la carpeta c:\colthop\cyewin y dentro el comentario ""OLE desde FW". pero pasa lo mismo se bloquea cuando esta en la línea SaveAs.

Code: Select all  Expand view  RUN

FUNCTION gestcua4()
oWord:=TOleAuto():New( "Word.Application" )
oWord:Documents:Add()
oDoc := oWord:Selection()
oDoc:Text := "OLE desde FW"+CRLF
oDoc := oWord:Get("ActiveDocument")  // object (documento activo)
oDoc:Invoke( "SaveAs","c:\colthop\cyewin\a.doc")
oDoc:Invoke('Close',0)               // cierra fichero
oDoc:=NIL
oWord:Quit()
oWord:=NIL

gestcua412()

RETURN .T.


Sería correcto o tiene algún fallo.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: No graba un documento Word

Postby hmpaquito » Wed Mar 16, 2016 9:12 am

Carlos,


Dos cosas:

PRIMERA:
La sintaxis creo que es oWord:SaveAs(cFile, xType)
Prueba a pasarle el xType.

SEGUNDA:
Tambien intenta hacer antes del saveas lo siguiente:
Code: Select all  Expand view  RUN
cFile:= "c:\colthop\cyewin\a.doc"
DELETE FILE (cFile)
n:= FCreate(cFile)
IF n != 0
   MsgInfo("Error de creacion")
ENDIF
cCad:= "Esto es una prueba"
IF FWrite(n, cCad) != Len(cCad)
   MsgInfo("Error de escritura")
ENDIF
FClose(n)


En general, me he encontrado algunas veces que el manejo OLE es muy dependiente de versiones... de office y de S.O. Lo que funciona en un sitio no lo hace en otro. Se trata de buscar algo que o bien funcione en todos sitios o bien se pueda parametrizar segun version.

Suerte.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: No graba un documento Word

Postby colthop » Wed Mar 16, 2016 9:51 am

Hola hmpaquito:

Al hacer tu segunda cosa me da el "Error de creación".

Algún consejo.

Un saludo.

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: No graba un documento Word

Postby colthop » Wed Mar 16, 2016 10:03 am

Hola hmpaquito:

Sigo revisando y aunque da el error de creación, después si existe el archivo a.doc con el Texto de prueba.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: No graba un documento Word

Postby hmpaquito » Wed Mar 16, 2016 10:24 am

Carlos,

Me he equivocado:

Prueba asi:

Code: Select all  Expand view  RUN
n:= FCreate(cFile)
IF n < 0    // o n == -1
   MsgInfo("Error de creacion")
ENDIF


Tenemos que determinar si el problema es que no se puede grabar en ese momento en esa carpeta un archivo con ese nombre.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: No graba un documento Word

Postby colthop » Wed Mar 16, 2016 10:40 am

Hola hmpaquito:

Con esto que he rectificado no da error y crea el archivo.

Con respecto a lo de momento es siempre no graba cuando es Windows 8 lo he puesto nada mas empezar la aplicación y también se bloquea. Nombre he usado muchos y ninguno funciona. Lugar he variado las carpetas donde grabarlo y tampoco.

Lo que si es curioso es que la misma aplicación cuando se trata de ficheros Excel si lo hace correctamente.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: No graba un documento Word

Postby hmpaquito » Wed Mar 16, 2016 10:54 am

Carlos,

Intenta un ejemplo lo mas sencillo posible. Este es del foro:

Code: Select all  Expand view  RUN

// Atencion !! Crea previamente un archivo test.doc
#define wdFormatDOSText 4

LOCAL oWord := CREATEOBJECT( "Word.Application" )
LOCAL oDoc := oWord:Documents:Open( "test.doc" )
oDoc:SaveAs( "test.txt", wdFormatDOSText )


Por cierto, ¿ has probado a grabar como .docx en vez de .doc ?

Sigue a ver hasta donde llegamos.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: No graba un documento Word

Postby colthop » Wed Mar 16, 2016 11:07 am

Hola hmpaquito:

He puesto lo que me has dicho y no lo graba y es ahí donde falla ya que si he probado con DOCX y el resto de cambios y cuando llega a la línea de SaveAS es donde se queda bloqueado.

Tu tienes la posibilidad de crear un documento WORD con Windowws 8

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: D.Fernandez and 38 guests