Anpassa en formulärmall med hjälp av ett skript

Obs!:  Vi vill kunna erbjuda dig bästa möjliga supportinnehåll så fort som möjligt och på ditt språk. Den här sidan har översatts med hjälp av automatiserad översättning och kan innehålla grammatiska fel eller andra felaktigheter. Vår avsikt är att den här informationen ska vara användbar för dig. Vill du berätta för oss om informationen är till hjälp längst ned på sidan? Här är artikeln på engelska som referens.

Om du är bekant med att skriva skript kan du lägga till ett skript i Microsoft Office InfoPath-formulärmall med hjälp av Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript) skriptspråk. Lägga till skript kan du anpassa formulärmallen utöver vad som är tillgängliga med regler, formler, dataverifiering eller villkorsstyrd formatering. Du kan till exempel lägga till ett skript som skapar och skickar ett e-postmeddelande när en användare växlar vy i ett formulär som baseras på din formulärmall. Du kan konfigurera en formulärmall för att skapa och skicka ett e-postmeddelande med ett skript.

I den här artikeln

Översikt

Att tänka på kompatibilitet

Ange skriptspråk för en formulärmall

Visa ett meddelande varje gång en händelse inträffar

Lägga till ett skript som körs när en användare sparar formulärdata

Lägga till ett skript som körs när en användare skickar formulärdata

Lägga till ett skript som körs när användaren klickar på en knapp

Lägga till ett skript som körs när befintliga formulär sammanfogas

Lägga till ett skript för att uppdatera befintliga formulär

Lägga till ett skript för andra händelser

Översikt

Du kan anpassa InfoPath-formulärmall med hjälp av regler, formler, dataverifiering och villkorsstyrd formatering. Även om de här funktionerna är mycket flexibelt och kan hantera en mängd olika aktiviteter, är vissa aktiviteter utöver funktionerna i de här funktionerna. Du kan inte till exempel använda regler för att skicka ett e-postmeddelande när en användare anger ett värde i en textruta i ett formulär. Om du vill anpassa formulärmallen på ett sätt som är lite mer funktionerna i de här funktionerna och du kan skriva skript med hjälp av skriptspråk JScript eller VBScript, du kan lägga till ett skript som körs när en användare öppnar ett nytt formulär eller ändrar fritt isting formulär som baseras på din formulärmall.

När du lägger till ett skript i en formulärmall startar på Microsoft Skriptredigeraren (MSE), där du kan lägga till, redigera och felsöka skript i en formulärmall och markören placeras i dina valda händelse. En händelsehanterare läggs automatiskt till skriptet. En händelsehanterare är funktionskod i ett InfoPath-formulärmall som svarar på en användare eller en ändring av XML-data i ett formulär. Om du vill spara sina formulär på flera platser i nätverket för användarna kan du lägga till ett skript till OnSaveRequest -händelsehanterare. När du har lagt till ett skript ska köras när användaren sparar ett formulär som baseras på din formulärmall startar Skriptredigeraren och lägger till något av följande koder till skriptet.

Obs!: Koden läggs beror på ditt skriptspråk som du valt.

JScript

//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation();
// Write the code to be run after saving here.
eventObj.ReturnStatus = true;
}

VBScript

'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)
' Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation
' Write the code to be run after saving here.
eventObj.ReturnStatus = True
End Sub

Du kan sedan lägga till kod i lämpliga platser i händelse hanterare som sparar formuläret till olika nätverksplats. När en användare sparar ett formulär som baseras på formulärmallen, körs InfoPath koden i OnSaveRequest -händelsehanterare.

Obs!: Den här artikeln finns en avancerad vy över hur du skapar skript i en formulärmall. Mer information om Microsoft Script finns Editor och specifika objekt, metoder, händelser och egenskaper som används i InfoPath i Referensinformation för InfoPath-utvecklare.

Händelsehanterare läggs automatiskt för alla utom något av följande inträffar.

Händelsehanterare

Beskrivning

Steg för att skapa

OnAfterChange

Den här händelsen körs när en användare ändrar värdet i den angivna kontrollen som är bunden till ett fält. Du kan till exempel visa ett anpassat åtgärdsfönster HTML när en användare markerar ett objekt i en listruta i verktygsfältet. Den här händelsen körs efter händelsen OnValidate .

Högerklicka på en kontroll i en formulärmall eller ett fält i åtgärdsfönstret Datakälla, peka Programming på snabbmenyn och klicka På efter Ändringshändelse.

OnAfterImport

Den här händelsen körs när användaren har infogats flera formulär i ett formulär.

Lägga till manuellt OnAfterImport händelsehanterare deklaration direkt script-fil med hjälp av Microsoft Skriptredigeraren. Den här händelsehanterare kan inte skapas i designläge.

OnBeforeChange

Den här händelsen körs när en användare ändrar värdet i en kontroll och innan värdet läggs till i det angivna fältet som är bunden till kontrollen. Du kan till exempel förhindra att en användare från att lägga till en extra rad innan du fyller i den sista raden i en upprepande tabell.

Högerklicka på en kontroll i en formulärmall eller ett fält i åtgärdsfönstret Datakälla, peka på Programming på snabbmenyn och klicka På före händelsen.

Vid klickning

Den här händelsen körs när användaren klickar på en knapp som är associerad med den här händelsen. Den här händelsen är tillgänglig när du lägger till en knapp i formulärmallen. Du kan till exempel utföra komplicerade beräkningar med hjälp av värdena i fälten i den huvudsakliga datakällan när användaren klickar på knappen.

Dubbelklicka på knappkontrollen och klicka sedan på Redigera formulärets kod på fliken Allmänt i dialogrutan Egenskaper.

OnContextChange

Den här händelsen körs när fokus ändras i formuläret. Den här evenemanget går till exempel när en användare navigerar från en textruta till en datumväljare eller när en användare växlar vy. Den här händelsen inträffar när alla händelser har inträffat.

Peka på programmeringVerktyg-menyn och sedan klicka På kontexten ändra händelsen.

OnLoad

Den här händelsen körs varje gång en användare skapar ett nytt formulär eller öppnar ett befintligt formulär som baseras på din formulärmall. Till exempel kan du kopiera en lista över objekt från en sekundär datakälla till huvudsakliga datakällan när en användare öppnar formuläret.

Peka på programmeringVerktyg-menyn och klicka sedan på På händelsen.

OnMergeRequest

Den här händelsen körs när formulär som baseras på formulärmallen sammanfogas. Du kan till exempel visa antalet formulär som har sammanfogats för att ge en användare en status under sammanslagning.

Klicka på FormuläralternativVerktyg-menyn. Klicka på Avancerat i listan kategori. Markera kryssrutan Koppla med anpassad kod under Koppla formulär, och klicka sedan på Redigera.

OnSaveRequest

Den här händelsen körs när en användare sparar ett formulär som baseras på din formulärmall. Du kan till exempel spara formulär som baseras på formulärmallen till mer än en plats när en användare sparar formuläret. InfoPath lägger till två ytterligare rader med kod i den här händelsen: en linje som sparas i formuläret och en annan rad som meddelar om InfoPath har sparats i formuläret.

Klicka på FormuläralternativVerktyg-menyn. Klicka på Öppna och spara i listan kategori. Markera kryssrutan Spara med anpassad kod under funktioner för Spara, och klicka sedan på Redigera.

OnSign

Den här händelsen körs när en användare gäller en digital signatur i ett formulär. Till exempel kan du lägga till ytterligare data till den digitala signaturen i ett formulär för utgiftsrapport när en användare loggar den.

Peka på ProgrammingVerktyg-menyn och klicka sedan På logga händelsen.

OnSubmitRequest

Den här händelsen körs när en användare skickar hans eller hennes formulärdata. Du kan till exempel skicka formulärdata till en säker webbtjänst när användaren klickar på SkickaArkiv-menyn. Eftersom InfoPath inte stöder en dataanslutning till en säker webbtjänst, måste du lägga till en anpassad dataanslutning som fungerar med din säker webbtjänst.

Klicka på Skicka alternativVerktyg-menyn. Markera kryssrutan Tillåt användare att skicka det här formuläret, klicka på Utför anpassad åtgärd med kod för och klicka sedan på Redigera kod.

OnSwitchView

Den här händelsen körs när en användare öppnar ett formulär som baseras på din formulärmall eller växlar till en annan vy i formuläret. När en användare växlar till en specifik vy och kan du skapa ett e-postmeddelande som innehåller data från fält i formulärets primära datakälla.

Klicka på ProgrammingVerktyg-menyn och sedan klicka På Växla vy händelsen.

OnValidate

Den här händelsen körs när en användare ändrar värdet i en kontroll som är bunden till ett fält. När användaren ändrar värdet i en viss kontroll, beräknar du ett nytt värde för en annan kontroll med hjälp av det nummer som användaren angav och ett tal som är i skriptet. Den här händelsen inträffar när OnBeforeChange händelsehanterare körs.

Högerklicka på en kontroll i en formulärmall eller ett fält i åtgärdsfönstret Datakälla, peka på Programming på snabbmenyn och klicka På efter Validera händelse.

OnVersionUpgrade

Den här händelsen körs när en användare öppnar ett befintligt formulär och versionsnummer för en formulärmall som används av det befintliga formuläret är äldre än versionsnumret för en formulärmall i dialogrutan Publicera plats. När en användare öppnar ett befintligt formulär, kontrollerar InfoPath versionsnumret av formulärmallen som är associerad med det befintliga formuläret. Om formulärmallen har ett nyare versionsnummer, körs InfoPath händelsehanterare OnVersion när användaren öppnar det befintliga formuläret. Anta till exempel att lägga till ett nytt fält i en befintlig formulärmall och publicera det igen, och du vill använda det nya fältet ska läggas till den primära datakällan om en användare öppnar ett befintligt formulär. Den här händelsen lägger till det nya fältet huvudsakliga datakällan när en användare öppnar ett befintligt formulär.

Klicka på FormuläralternativVerktyg-menyn. Klicka på versionshantering i listan kategori. Klicka på Använd anpassad händelse i listan på version uppgradera och klicka sedan på Redigera.

Överst på sidan

Att tänka på kompatibilitet

Du kan inte lägga till skript i en webbläsarkompatibel formulärmall. Du kan lägga till skript i en formulärmall vars formulär ska fyllas i i InfoPath. Du kan anpassa en webbläsarkompatibel formulärmall endast med hjälp av förvaltad kod.

Överst på sidan

Ange skriptspråk för en formulärmall

Om du vill anpassa en formulärmall med hjälp av skript kan du använda Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript). Som standard konfigureras InfoPath om du vill lägga till skript med hjälp av JScript. Om formulärmallen innehåller inte skript eller hanterad kod, och du föredrar att använda VBScript som språk, kan du ändra skriptspråk för formulärmallen till VBScript. Du kan inte använda båda skriptspråk i samma formulärmall.

Om formulärmallen innehåller redan skript i ett språk och du vill använda andra språk, måste du spara det befintliga skriptet så att du kan konvertera skriptet till det andra språket ta bort skriptet från formulärmall mellan Formuläralternativ dialogrutan rutan och Lägg sedan till det konverterade skriptet i formulärmallen. InfoPath kan inte konvertera skript till ett nytt språk. Ändrar skriptspråk i dialogrutan Formuläralternativ påverkas bara den här formulärmallen. Andra formulärmallar har JScript som standard skriptspråk.

  1. Klicka på FormuläralternativVerktyg-menyn.

  2. Klicka på Programming i listan kategori i dialogrutan Formuläralternativ.

  3. Klicka på VBScript under programmeringsspråket i formuläret mall kod språklistan.

    Meddelanden: 

    • När du ange skriptspråk och skapa en eller flera händelsehanterare för en formulärmall kan ändra du inte skriptspråk för formulärmallen.

    • Om du har installerat Microsoft Visual Studio 2005 Tools for Applications är standardspråket Microsoft Visual Basic .NET. Du kan fortfarande använda den här proceduren för att ändra skriptspråk till VBScript.

Överst på sidan

Visa ett meddelande varje gång en händelse inträffar

Om du vill veta vad händelsehanterare körs som svar på en åtgärd eller händelse du lägga till tillfälliga koden om du vill visa en meddelanderuta när händelsehanteraren körs. Du bör använda den här koden för att bestämma när en händelsehanterare körs. När du lägger till den här koden kan använda du förhandsversionen av att visa ett formulär som baseras på formulärmallen och publicera en formulärmall och sedan skapa en ny formulärmall. Vissa händelsehanterare köras endast om du skapar ett formulär när du har publicerat formulärmallen. Du kan sedan använda en funktion som du tror kan köra händelsehanterare. När händelsehanteraren körs visas en meddelanderuta.

När du ta reda på vilka åtgärder eller händelser kör händelsehanterare, ta bort koden och sedan fortsätta designa en formulärmall. Om du inte ta bort den här koden och sedan publicera formulärmallen kan kan användarna se den här meddelanderutan när händelsehanterare körs.

  1. Lägga till en händelsehanterare.

  2. Om du vill lägga till kod i JScript, Skriv XDocument.UI.Alert (”fältet händelse namn händelse körde”); Ersätt med namnet på din händelsehanterare. Om du lägger till den här koden händelsehanterare OnValidate kan skriver du till exempel XDocument.UI.Alert (”fältet OnValidate händelsehanterare körde”);

  3. Om du vill lägga till kod i VBScript anger XDocument.UI.Alert (”fältet händelse namn händelse körde”) till exempel om du lägger till den här koden OnSaveRequest -händelsehanterare, skriver du XDocument.UI.Alert (”fältet OnSaveRequest händelsehanterare körde”)

  4. Om du vill testa koden klickar du på FörhandsgranskaArkiv-menyn eller tryck på CTRL + SKIFT + B och utföra en användaråtgärd som som kan starta händelsen. När inträffar med koden för ska en meddelanderuta visa meddelandet.

    Obs!: Vissa händelser kan kräva att publicera en formulärmall och sedan skapa ett formulär som baseras på formulärmallen innan du kan utföra en användaråtgärd att starta händelsen.

  5. Ta bort den kod som du använde för att visa meddelanderutan innan du publicerar en formulärmall och användarna kan fylla i formulär som baseras på formulärmallen.

Överst på sidan

Lägga till ett skript som körs när en användare sparar formulärdata

  1. Klicka på FormuläralternativVerktyg-menyn.

  2. Klicka på Öppna och spara i listan kategori i dialogrutan Formuläralternativ.

  3. Markera kryssrutan Spara med anpassad kod under funktioner för Spara, och klicka sedan på Redigera. Microsoft Skriptredigeraren startar med markören i OnSaveRequest -händelsehanterare.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSaveRequest(eventObj)
    {
    // Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation();
    // Write the code to be run after saving here.
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSaveRequest(eventObj)
    ' Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation
    ' Write the code to be run after saving here.
    eventObj.ReturnStatus = True
    End Sub
  4. Gör något eller båda av följande:

    • Om du vill lägga till ett skript som körs innan InfoPath sparar formuläret Ersätt kommentar Write the code to be run before saving here.med kod.

    • Om du vill lägga till ett skript som körs när InfoPath sparar formuläret Ersätt kommentar Write the code to be run after saving here. med kod.

  5. Om du vill testa dina ändringar klickar du på Förhandsgranska i verktygsfältet Standard eller trycker på CTRL+SKIFT+B.

    Obs!: Om händelsehanteraren körs när du har skapat ett formulär som baseras på din formulärmall, publicera formulärmallen genom att klicka på PubliceraArkiv-menyn och slutföra Publiceringsguiden. När du har publicerat formulärmallen skapa ett formulär och utföra en åtgärd som kör händelsehanterare.

Överst på sidan

Lägga till ett skript som körs när en användare skickar formulärdata

  1. Klicka på Skicka alternativVerktyg-menyn.

  2. I dialogrutan Leveransalternativ markerar du kryssrutan Tillåt användare att skicka det här formuläret.

  3. Klicka på Utför anpassad åtgärd med hjälp av koden och klickar sedan på Redigera kod. Microsoft Skriptredigeraren startar med markören i OnSubmitRequest -händelsehanterare.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSubmitRequest(eventObj)
    {
    // If the submit operation is successful, set
    // eventObj.ReturnStatus = true;
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSubmitRequest(eventObj)
    ' If the submit operation is successful, set
    ' eventObj.ReturnStatus = True
    ' Write your code here
    End Sub
  4. Ersätt kommentar If the submit operation is successful, set eventObj.ReturnStatus = true Write your code here med kod.

  5. Om du vill testa dina ändringar klickar du på Förhandsgranska i verktygsfältet Standard eller trycker på CTRL+SKIFT+B.

Överst på sidan

Lägga till ett skript som körs när användaren klickar på en knapp

  1. Lägga till en ny knapp i en vy i en formulärmall och dubbelklicka sedan på knappen.

    Obs!: Om du lägger till skript till en befintlig knapp dubbelklickar du på knappen befintliga i stället.

  2. Klicka på fliken Allmänt.

  3. Klicka på Redigera formulärets kod. Microsoft Skriptredigeraren startar med markören i händelsehanterare OnClick för knappen.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function Button Name::OnClick(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub Button Name_OnClick(eventObj)
    ' Write your code here
    End Sub
  4. Ersätt kommentar Write your code here med kod.

  5. Om du vill testa dina ändringar klickar du på Förhandsgranska i verktygsfältet Standard eller trycker på CTRL+SKIFT+B.

Överst på sidan

Lägga till ett skript som körs när befintliga formulär sammanfogas

  1. Klicka på FormuläralternativVerktyg-menyn.

  2. Klicka på Avancerat i listan kategori i dialogrutan Formuläralternativ.

  3. Under Koppla formulär, markerar du kryssrutan Aktivera koppling av formulär.

  4. Markera kryssrutan Koppla med anpassad kod och klicka sedan på Redigera. Microsoft Skriptredigeraren startar med markören i händelsehanterare OnMergeRequest .

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnMergeRequest(eventObj)
    {
    // Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM);
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnMergeRequest(eventObj)
    ' Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM)
    eventObj.ReturnStatus = True
    End Sub
  5. Ersätt kommentar Write the code that handles each form being merged here. med kod.

  6. Om du vill testa koden i den här händelsen publicera formulärmallen, skapa flera formulär som baseras på formulärmallen och koppla formulärmallarna.

    Obs!: Länkar till mer information om att publicera en formulärmall i avsnittet Se även.

Överst på sidan

Lägga till ett skript för att uppdatera befintliga formulär

Om du har uppdaterat en tidigare publicerad formulärmall och du vill uppdatera de befintliga formulär som baseras på mallen kan du lägga till skript till den uppdaterade formulärmallen som körs när en användare öppnar en av de befintliga formulär. När en användare öppnar ett befintligt formulär, kontrollerar InfoPath versionsnumret för den associerade formulärmallen på publiceringsplatsen. Om versionsnummer för formulärmallen på publiceringsplatsen är senare än versionsnumret i det befintliga formuläret körs som anger att den har uppdaterats, InfoPath koden i händelsen ska uppdatera det befintliga formuläret.

  1. Klicka på FormuläralternativVerktyg-menyn.

  2. Klicka på versionshantering i listan kategori i dialogrutan Formuläralternativ.

  3. Klicka på Använd anpassad händelse i listan på version uppgradera och klicka sedan på Redigera. Microsoft Skriptredigeraren startar med markören i OnVersionUpgrade händelsehanterare.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnVersionUpgrade(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnVersionUpgrade(eventObj)
    ' Write your code here
    End Sub
  4. Ersätt kommentar Write your code here med kod.

  5. Att testa koden i den här händelsen, publicera formulärmallen, skapa flera formulär som baseras på formulärmallen, ändra och publicera en uppdaterad version av formulärmallen och sedan öppna ett befintligt formulär som baseras på den tidigare versionen av formulärmallen.

    Obs!: Länkar till mer information om att publicera en formulärmall i avsnittet Se även.

Överst på sidan

Lägga till ett skript för andra händelser

Den här proceduren kan användas för att lägga till följande händelsehanterare i formulärmallen:

  • OnAfterChange

  • OnBeforeChange

  • OnContextChange

  • OnLoad

  • OnSwitchView

  • OnSign

  • OnValidate

  • Peka på ProgrammingVerktyg-menyn och klicka sedan på händelsen som ska läggas till händelsehanterare. Microsoft Skriptredigeraren startar med markören i händelsehanterare som du har valt.

  • Ersätt kommentar Write your code here med kod.

Överst på sidan

Utöka dina Office-kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×