Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Numero de copias impresas desde word

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Numero de copias impresas desde word Responder citando

Hola amigos, aqui abusando de su paciencia. me podría indicar alguien como hacer que se impriman n copias desde word ?
Código:

void __fastcall TForm_hazfacmace::manda_a_word(TStringList *campos_z, TStringList *valores_z)
{
  Variant vWord, vDocumentos, vDocumento, vSeleccion, vBuscar;
  int ii_z=0;
  String arch_z, sPath, sFicheroPlantilla, sFicheroGenerado;
  arch_z = formatofact_z;
  sPath = ExtractFilePath( Application->ExeName );
  sFicheroPlantilla = arch_z;
  sFicheroGenerado  = sPath + "factura2.doc";
  ///-------> Area de llamado a Word <vWord>Checked );
    vWord.OlePropertySet( "Visible", false);
    //--- Abre el documento que usaremos como plantilla
    vDocumentos = vWord.OlePropertyGet( "Documents" );
    vDocumento = vDocumentos.OleFunction( "Open",
          sFicheroPlantilla.c_str(),  // Documento
          false,                      // Confirmar conversiones
          true,                       // Modo se solo lectura
          false,                      // Añadir al menu de ficheros recientes
          ""                          // Clave del documento
    );
    //--- Selecciona todo el documento para reemplazar
    vSeleccion = vWord.OlePropertyGet( "Selection" );
    vSeleccion.OlePropertyGet( "Range" ).OleProcedure( "SetRange", 0, 0 );
    vBuscar = vSeleccion.OlePropertyGet( "Find" );
    vBuscar.OleProcedure( "ClearFormatting" );
    vBuscar.OlePropertyGet( "Replacement" ).OleProcedure( "ClearFormatting" );
    //--- sustituimos una palabra
    // Aqui podemos meter el bucle que va a ir reemplanzando palabras
    for( ii_z = 0; ii_z <campos_z>Count; ii_z++) {
       //vSeleccion.OleProcedure("HomeKey", 6,0); // 6=wdStory 0=wdMode //principio documento        vSeleccion = vWord.OlePropertyGet( "Selection" );
       //vSeleccion= vWord.OlePropertyGet( "Selection" );
       //vSeleccion.OlePropertyGet( "Range" ).OleProcedure( "SetRange", 0, 0 );
       vBuscar.Exec( Procedure( "Execute" )
          <<campos_z>Strings[ii_z]+"}}"               // Texto a buscar
          << VT_EMPTY                   // Coincidir mayusculas y minusculas
          << VT_EMPTY                   // Solo palabras completas
          << VT_EMPTY                   // Usar caracteres comodin
          << VT_EMPTY                   // Suena como
          << VT_EMPTY                   // Todas las formas de la palabra
          << true                       // Hacia adelante
          << VT_EMPTY                   // Wrap
          << VT_EMPTY                   // Format
          <<valores_z>Strings[ii_z].Trim().c_str()   // Reemplazar con...
          << 2                          // 2 = reemplazar todo
       );
    }
    //--- salvamos automaticamente si procede y cerramos Word
    vDocumento.OleProcedure( "SaveAs", sFicheroGenerado.c_str() );
    vDocumento.OleProcedure("PrintOut");
    vDocumento.OleProcedure( "Save");
    vDocumento.OleProcedure( "Close", 0xFFFFFFFF);
    vWord.OleProcedure( "Quit" );
    IOleMessageFilter::Revoke(); // Si existe algún dato pendiente le pregunta la acción al usuario
    vWord = vDocumentos = vDocumento = vSeleccion = vBuscar = Unassigned;
}
//---------------------------------------------------------------------------


aqui me falta :

Código:

 // estoy inventando aqui:
vDocumento.OleProcedure("Number of copies 3");
vDocumento.OleProcedure("PrintOut");


Gracias.
_________________
La caja decía, requiere Win95 o superior así que instalé Linux.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Código:
Variant np = Variant::NoParam();
vWord.OleProcedure("PrintOut", np, np, np, np, np, np, np, 2 /*Nº de copias*/);

(Lo he probado con la versión 6 en Word 2007)
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Crying or Very sad
buaaaaa, usando builer 5++ y word 2003 no ha funcionado, solo imprime la primera copia.
Voy a intentar mandar
de una en una. Gracias
_________________
La caja decía, requiere Win95 o superior así que instalé Linux.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: siempre si Responder citando

Siempre si, Leo tiene toda la razón del mundo, por eso es un master.
Código:

      Variant np = Variant::NoParam();
      vWord.OleProcedure("PrintOut", np, np, np, np, np, np, np, 3 );

funciona perfecto, lo que pasaba es que tengo una impresora virtual pdf generator y allí no se veian las copias. Pero ya mandándolo directo a la impresora pues ya funciona.

Gracias
_________________
La caja decía, requiere Win95 o superior así que instalé Linux.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.