WSS.- Esta semana he estado probando como desde un formulario de Sharepoint de una lista crear y vincular datos a un documento word.
Lo primero que he hecho a sido modificar el aspx que está dentro de la lista.
Dentro del documento hay diferentes zonas de interes, en este caso, la que me interesaba es el webpart de los campos, ya que son estos los que quiero pasar al documento de word.
Publicando este webpart, le he añadido un link al documento de word, que antes he subido dentro de la lista. Cuando me refiero a esto, no es una lista de documentos si no a la carpeta donde están alojados los 4 aspx que se encargan de la entrada, edición etc... de los datos de la lista.
Al formulario le he añadio este javascript, que crea el documento y añade los valores a las variables:
function loadworddoc()
{
var oApplication=new ActiveXObject("Word.Application");
var i;
var doc;
var fld;
i = document.URL.lastIndexOf("/");
doc = document.URL.substring(0,i).concat("/Inf.doc");
oApplication.Documents.Open(doc);
for (ifld = 0; ifld < frm.ifldMax; ifld++)
{
fld = frm.rgfld[ifld];
for (i=0;i {
if (document.forms(0).elements(i).name == ("urn:schemas-microsoft- com:office:office#" + fld.stName))
{
oApplication.ActiveDocument.Variables(fld.stName).Value = "";
}
}
}
oApplication.Run("Actualiza");
oApplication.Visible=true
}
Dentro del documento de word, añadimos los variables. Para añadirlas, dentro del documento que utilizamos como plantilla, en insertar--> campo --> En categoría elegimos automatización y dentro de esta DocVariable, en nombre de la variable tiene que ser el mismo nombre del campo de la lista de Sharepoint.
Hay que tener en cuenta que para los tipos hidden (o Dropdownlist en .net) no recoge los datos que introducimos de esta manera... No me he metido en profundidad en esto pero es algo que lo tengo como pendiente.
Ahora cada vez que hacemos clic en ese link se abrirá el documento de word que tenemos como plantilla y pasaremos los datos que contienen los campos de las listas.
También he utilizando el rollup de Carlos Segura Sanz (http://www.ideseg.com) . Solo añado lo que seria el xls, por que considero que es donde está todo el tema...
script language="javascript"
function loadworddoc()
{
var oApplication=new ActiveXObject("Word.Application");
var i;
var doc;
i = document.URL.lastIndexOf("/");
doc = document.URL.substring
(0,i).concat"/Lists/Proveedores/Inf.doc");
oApplication.Documents.Open(doc);
oApplication.ActiveDocument.Variables("campo1").Value = ' ="campo1"/>';
oApplication.ActiveDocument.Variables("campo2").Value = ' ="campo2"/>';
oApplication.ActiveDocument.Variables("campo3").Value = ' ="campo3"/>';
oApplication.Run("Actualiza");
oApplication.Visible=true
}
/script
table
tr
td
a href="javascript:loadworddoc()"
img src="_layouts/images/icdoc.gif" border="0"
/a
td
td
p Informe de Aceptación /p
/td
/tr
/table
El actualiza es una macro que está dentro del documento de word para actualizar los datos del word, ya que si no no se refrescan los datos.
Lo primero que he hecho a sido modificar el aspx que está dentro de la lista.
Dentro del documento hay diferentes zonas de interes, en este caso, la que me interesaba es el webpart de los campos, ya que son estos los que quiero pasar al documento de word.
Publicando este webpart, le he añadido un link al documento de word, que antes he subido dentro de la lista. Cuando me refiero a esto, no es una lista de documentos si no a la carpeta donde están alojados los 4 aspx que se encargan de la entrada, edición etc... de los datos de la lista.
Al formulario le he añadio este javascript, que crea el documento y añade los valores a las variables:
function loadworddoc()
{
var oApplication=new ActiveXObject("Word.Application");
var i;
var doc;
var fld;
i = document.URL.lastIndexOf("/");
doc = document.URL.substring(0,i).concat("/Inf.doc");
oApplication.Documents.Open(doc);
for (ifld = 0; ifld < frm.ifldMax; ifld++)
{
fld = frm.rgfld[ifld];
for (i=0;i
if (document.forms(0).elements(i).name == ("urn:schemas-microsoft- com:office:office#" + fld.stName))
{
oApplication.ActiveDocument.Variables(fld.stName).Value = "";
}
}
}
oApplication.Run("Actualiza");
oApplication.Visible=true
}
Dentro del documento de word, añadimos los variables. Para añadirlas, dentro del documento que utilizamos como plantilla, en insertar--> campo --> En categoría elegimos automatización y dentro de esta DocVariable, en nombre de la variable tiene que ser el mismo nombre del campo de la lista de Sharepoint.
Hay que tener en cuenta que para los tipos hidden (o Dropdownlist en .net) no recoge los datos que introducimos de esta manera... No me he metido en profundidad en esto pero es algo que lo tengo como pendiente.
Ahora cada vez que hacemos clic en ese link se abrirá el documento de word que tenemos como plantilla y pasaremos los datos que contienen los campos de las listas.
También he utilizando el rollup de Carlos Segura Sanz (http://www.ideseg.com) . Solo añado lo que seria el xls, por que considero que es donde está todo el tema...
script language="javascript"
function loadworddoc()
{
var oApplication=new ActiveXObject("Word.Application");
var i;
var doc;
i = document.URL.lastIndexOf("/");
doc = document.URL.substring
(0,i).concat"/Lists/Proveedores/Inf.doc");
oApplication.Documents.Open(doc);
oApplication.ActiveDocument.Variables("campo1").Value = '
oApplication.ActiveDocument.Variables("campo2").Value = '
oApplication.ActiveDocument.Variables("campo3").Value = '
oApplication.Run("Actualiza");
oApplication.Visible=true
}
/script
table
tr
td
a href="javascript:loadworddoc()"
img src="_layouts/images/icdoc.gif" border="0"
/a
td
td
p Informe de Aceptación /p
/td
/tr
/table
El actualiza es una macro que está dentro del documento de word para actualizar los datos del word, ya que si no no se refrescan los datos.


0 Comments:
Publicar un comentario en la entrada
Links to this post:
Crear un enlace
<< Home