2010-09-28 10 views
5

En un documento de Word ya abierto seleccionar todo el texto
copia el texto seleccionado al portapapeles
cheque navegador por defecto abierto en dirección web correcta
si no se abre el navegador por defecto en la dirección web "http://thisaddress.com"
dar el foco al navegador pegar texto del portapapeles en la caja de entrada llamado "INPUT1"Copia de documento de MS Word a una caja de entrada de la página web

o alguna otra forma de obtener el contenido del documento MSWORD a una entrada de la página web?

Actualmente, el flujo de trabajo implica que un secretario inicie sesión en el sitio web, luego complete un formulario web, cambie a su documento MS Word abierto, seleccione todo, copie el documento WP, luego regrese al formulario web y pegue en una entrada caja, luego presionando enviar. Lo que quiero hacer idealmente es tener un botón en MS Word que abra el navegador a la página web correcta y luego copie y pegue el documento en el cuadro de entrada correcto en la página (de hecho, será el único campo de formulario de texto).

El código de MS Word VBA es:

Option Explicit 

Enum W32_Window_State 
    Show_Normal = 1 
    Show_Minimized = 2 
    Show_Maximized = 3 
    Show_Min_No_Active = 7 
    Show_Default = 10 
End Enum 

Private Declare Function ShellExecute Lib "shell32.dll" _ 
    Alias "ShellExecuteA" (ByVal hWnd As Long, _ 
    ByVal lpOperation As String, ByVal lpFile As String, _ 
    ByVal lpParameters As String, ByVal lpDirectory As String, _ 
    ByVal nShowCmd As Long) As Long 

Function OpenURL(URL As String, WindowState As W32_Window_State) As Boolean 

' Opens passed URL with default application, or Error Code (<32) upon error 

    Dim lngHWnd As Long 
    Dim lngReturn As Long 

    lngReturn = ShellExecute(lngHWnd, "open", URL, vbNullString, _ 
     vbNullString, WindowState) 

    OpenURL = (lngReturn > 32) 
End Function 

Sub TestMacro() 
    Application.ActiveDocument.Select 
    Selection.Copy 
    OpenURL "http://localhost:8500/index.cfm?wordContent=" & Selection, W32_Window_State.Show_Maximized 
End Sub 

y en la forma de manipulación ColdFusion

<html> 
<head> 
</head> 

<body> 
<form id="form1"> 
    <Textarea ID="txtArea" rows=6><cfoutput>#url.wordContent#</cfoutput></textarea> 
</form> 

</body> 
</html> 

Sólo le gustaría encontrar la manera de no abrir una nueva ventana del navegador si uno ya está abierto .

+0

¿Cuál es la dirección de formulario web? – ocodo

+0

¿La aplicación web es parte de su solución? puedes modificarlo? –

+0

Actualicé mi respuesta con más pistas, compruébalo. –

Respuesta

2

En caso de que usted puede modificar la aplicación web, puede hacer lo siguiente:

  1. EM -Word: copia el contenido al portapapeles.
  2. MS-Word: Abrir dirección URL como "http://thisaddress.com/SomePage?pasteClipboard=true"
  3. CiertaPágina: si pasteClipboard cadena de consulta parámetro == true, a continuación, añadir una función de JavaScript para obtener los datos del portapapeles en su campo de formulario.

Actualización:

En su macro sólo tiene que llamar Selection.Copy, y de abrir la URL mediante el navegador por defecto comprobar este enlace http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_23225744.html

Utilizando el código desde el enlace anterior, hice una prueba macro como:

Sub TestMacro() 
    Application.ActiveDocument.Select 
    Selection.Copy 
    OpenURL "http://thisaddress.com/SomePage?pasteClipboard=true", W32_Window_State.Show_Maximized 
End Sub 

Espero que haya sido útil.

Actualización 2:

sólo tiene que utilizar W32_Window_State.Show_Default, Aquí está la macro completo:

Option Explicit 

Enum W32_Window_State 
    Show_Normal = 1 
    Show_Minimized = 2 
    Show_Maximized = 3 
    Show_Min_No_Active = 7 
    Show_Default = 10 
End Enum 

Private Declare Function ShellExecute Lib "shell32.dll" _ 
    Alias "ShellExecuteA" (ByVal hWnd As Long, _ 
    ByVal lpOperation As String, ByVal lpFile As String, _ 
    ByVal lpParameters As String, ByVal lpDirectory As String, _ 
    ByVal nShowCmd As Long) As Long 

Function OpenURL(URL As String, WindowState As W32_Window_State) As Boolean 

' Opens passed URL with default application, or Error Code (<32) upon error 

    Dim lngHWnd As Long 
    Dim lngReturn As Long 

    lngReturn = ShellExecute(lngHWnd, "open", URL, vbNullString, _ 
     vbNullString, WindowState) 

    OpenURL = (lngReturn > 32) 
End Function 

Sub TestMacro() 
    Application.ActiveDocument.Select 
    Selection.Copy 
    OpenURL "http://thisaddress.com/SomePage?pasteClipboard=true", W32_Window_State.Show_Default 
End Sub 
+0

Sí, la aplicación web está bajo mi control. ¿Alguna otra pista para 1 y 2 por favor? – Saul

+0

Muy cerca de allí, y gracias por su ayuda. Esto abre una nueva ventana del navegador cada vez. ¿Hay alguna forma de modificar esto para que se abra un nuevo navegador solo si el navegador no está abierto todavía? – Saul

+0

Creo que W32_Window_State.Show_Default es lo que está buscando, de cualquier forma que actualicé la respuesta con el código de macro completo. –

0

Otra opción es analizar el control de Internet Explorer desde dentro de Word utilizando un control.

Here es un ejemplo.

Nota, esto sólo funcionará con IE (a menos que existan versiones de DLL de Firefox, etc.)

+0

Eso es un buen enlace Ben, pero tiene que ser un navegador cruzado. – Saul

Cuestiones relacionadas