2010-09-28 6 views
5

Dans un document Word déjà ouvert sélectionner tout le texte
copier le texte sélectionné dans le presse papier
Vérification du navigateur par défaut ouvert à l'adresse Web correcte
si pas ouvrir le navigateur par défaut à l'adresse Web « http://thisaddress.com »
donner le focus au navigateur coller du texte de presse-papiers dans la boîte d'entrée appelée « input1 »Copie du document MS Word à une boîte d'entrée de page Web

ou d'une autre façon d'obtenir le contenu du document Msword à une entrée de page Web?

Actuellement le workflow implique une secrétaire se connectant au site Web, puis remplissant un formulaire Web, passant à leur document MS Word ouvert, sélectionnant tout, copiant le document WP, puis revenant au formulaire Web et le collant dans une entrée boîte, puis frapper soumettre. Ce que je veux faire idéalement avoir un bouton dans MS Word qui ouvre le navigateur à la bonne page Web puis copie et colle le document dans la zone de saisie correcte sur la page (en fait, ce sera le seul champ de formulaire textarea).

Le MS Word code VBA est:

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 

et sous la forme de traitement de coldfusion

<html> 
<head> 
</head> 

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

</body> 
</html> 

voudrais juste travailler sur la façon de ne pas ouvrir une nouvelle fenêtre du navigateur si on est déjà ouvert .

+0

Quelle est l'adresse de formulaire Web? – ocodo

+0

L'application Web fait-elle partie de votre solution? pouvez-vous le modifier? –

+0

J'ai mis à jour ma réponse avec d'autres indices, vérifiez-la. –

Répondre

2

Si vous pouvez modifier l'application Web, vous pouvez effectuer les opérations suivantes:

  1. MS -Word: copier le contenu dans le presse-papiers.
  2. MS-Word: Open Url comme "http://thisaddress.com/SomePage?pasteClipboard=true"
  3. UnePage: si true requête de param chaîne pasteclipboard ==, puis ajouter une fonction javascript pour obtenir les données du presse-papiers dans votre champ de formulaire.

Mise à jour:

Dans votre macro vous appelez simplement Selection.Copy, et d'ouvrir l'URL à l'aide de vérifier le navigateur par défaut ce lien http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_23225744.html

En utilisant le code du lien précédent, je fait un test macro comme:

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

J'espère que cela a été utile.

Mise à jour 2:

Il suffit d'utiliser W32_Window_State.Show_Default, Voici la pleine macro:

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

Oui, l'application Web est sous mon contrôle. D'autres indices à 1 et 2 s'il vous plaît? – Saul

+0

Très près de là, et merci pour votre aide. Cela ouvre une nouvelle fenêtre de navigateur à chaque fois. Est-il possible de modifier cela pour qu'un nouveau navigateur ne soit ouvert que si le navigateur n'est pas déjà ouvert. – Saul

+0

Je pense que W32_Window_State.Show_Default est ce que vous cherchez, de toute façon j'ai mis à jour la réponse avec le code macro complet. –

0

Une autre option consiste à examiner Internet Explorer à partir de Word à l'aide d'un contrôle.

Here est un exemple.

Remarque, cela ne fonctionne qu'avec IE (à moins que des versions dll de Firefox, etc.)

+0

C'est un bon lien Ben, mais il doit être cross-navigateur. – Saul

Questions connexes