Avatar billede h_s Forsker
17. oktober 2006 - 09:02 Der er 5 kommentarer og
1 løsning

Låse formular ved hjælp af Makro

Hej

Jeg skal bruge hjælp til at låse en formular. Jeg har prøvet at optage den, men så snart jeg låser formularen, mister jeg mulighed for at optage.

Er der nogen der kan fortælle mig koden?
17. oktober 2006 - 09:27 #1
Koden for at beskytte dokumentet er:

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True

når der er tale om en formular.
17. oktober 2006 - 09:34 #2
... og evt med tildeling af password:

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="Password"
Avatar billede h_s Forsker
17. oktober 2006 - 13:50 #3
Jeg får følgende fejl:

Object required

Jeg har prøvet at skrive "MyWordApp." foran uden held.
Hvad kan der være galt?
Avatar billede rvm Nybegynder
17. oktober 2006 - 15:05 #4
Prøv at indsætte koden her, så kikker vi på det :-)
Avatar billede h_s Forsker
02. november 2006 - 20:14 #5
Her er hele koden:

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

Public Sub cmdÅbenReferat()
'Åben Word-doc Referat

'---------------------Dette er deklartioner af konstante variabler------------------------------------------------
'Kontrol af om der er skrevet navn i C3 og dato i H3
    Set x = Worksheets("Info").Range("C3")
    Set y = Worksheets("Info").Range("H3")
    Const Bogmærke As String = "Navn"
    Const Kunobeller As String = "C:\Kunobeller\"    'Mappe hvor programmet ligger i
    Const Referater As String = "C:\Kunobeller\Referater\"    'Dette er mappen hvor den gemmer wordfilen
    Const Skabeloner As String = "C:\Kunobeller\Skabeloner\"    'Dette er mappen hvor den finder skabelonen
    Const DotName As String = "kunobeller.dot"    'Dette er navnet på skabelonen
    Const CellStr As String = "C3"    'Dette er feltet hvor den finder navnet på eleven
    '-----------------------------------------------------------------------------------------------------------------

    If x = "" Then

        'Hvis "C3" er " ", så kommer der en meddelse om at man skal skrive barnets navn
        Blank = MsgBox(Prompt:="Husk at skrive barnets navn!", Title:="Meddelelse", Buttons:=vbInformation)
        Worksheets("Info").Select
        Range("C3").Select
    Else
        If y = "" Then
            'Hvis "H3" er " ", så kommer der en meddelse om at man skal skrive dato
            Blank = MsgBox(Prompt:="Husk at skrive undersøgelsesdato!", Title:="Meddelelse", Buttons:=vbInformation)
            Worksheets("Info").Select
            Range("H3").Select
        Else

            'Vises "Er du sikker"
            OK = MsgBox(Prompt:="Er du sikker?", _
                        Title:="Gem", Buttons:=vbQuestion + vbYesNo)
            If OK = vbNo Then

            Else
                'Kontrol af at de nødvendige mapper findes
              If Dir(Kunobeller, vbDirectory) = "" Then MkDir (Kunobeller)
              If Dir(Referater, vbDirectory) = "" Then MkDir (Referater)

                'Ser efter om der findes et Word-dokument med samme navn som Excel-dokumentet
                'Hvis der gør så åbnes det i stedet for at gemme
                If Dir(Referater & Split(ActiveWorkbook.Name, ".")(0) & ".doc") <> "" Then
                    result = ShellExecute(0, "open", Referater & Split(ActiveWorkbook.Name, ".")(0) & ".doc", "", "", vbNormalFocus)

                Else

                    '----------------Her går den igang med at fortælle at den skal bruge word til at udfører de næste ting------------

                    'Dim MyWordApp As Word.Application
                    Set MyWordApp = CreateObject("Word.Application")
                    With MyWordApp
                        .Visible = True    'True når du vil følge med
                        .Documents.Add Skabeloner & DotName    'Rettet.

                        '-----------------Her kommer så der hvor den laver bogmærket ud fra variablerne----------------------------------
                        '--------------------------Slut med den nemmeudgave nu laver vi rigtig programering :-)---------------------------

                        '---------------------------------Vi opretter lige lidt variabler-------------------
                        Dim celler, arrceller, bogmark, arrbog

                        celler = "b2,h2,c3,h3,c4,h4,c5,e5,h5,h7,h5,h6,h7,h8,h2,c3,c5,c4,h4,c3,c6,h4,h5"
                        arrceller = Split(celler, ",")
                        bogmark = "Trin,Institution,Navn,Undersøgtdato,Fødselsdato,Barnetspædagog,AlderIMdr,Køn,UdspurgtAf,UdspurgtAf2,BarnetspædagogUnderskrift,BarnetspædagogUnderskriftTitel,Hjælper,HjælperTitel,VInstitution,VNavn,VAlderIMdr,VFødselsdato,VPædagog,PNavn,PStøtteperiode,PPædagog,POpfølgningAf"
                        arrbog = Split(bogmark, ",")

                        For t = LBound(arrceller) To UBound(arrceller)

                            If .ActiveDocument.Bookmarks.Exists(arrbog(t)) Then      'her undersøger den om bogmærket findes (Fødselsdato)
                                .ActiveDocument.Bookmarks(arrbog(t)).Select          'her vælger den bogmærket (Fødselsdato)
                                .Selection.Text = Worksheets("Info").Range(arrceller(t)).Text    'her henter den variablen fra cellen(C4)
                                .Selection.Bookmarks.Add arrbog(t)                    'her indsætter den variablen i bogmærket fødselsdato
                            End If
                        Next

                        'her opretter jeg navnet på filen som der skal gemmes. Du kan selv lege lidt med den----
                        gemmenavn = Format(y, "YYYY") & "-" & Format(y, "MM") & "-" & x    'Worksheets("Info").Range(CellStr).Text

                        '- Så fortæller vi at den skal gemme i mappen DOTDOCPATH som er en konstant med stien til mappen oppe fra konstantvariabler
                        '- variabel som vi lige har lavet, altså gemmenavn
                        MyWordApp.ActiveDocument.SaveAs Referater & gemmenavn, , , , False    'Rettet, erstat selv med navn osv.


HER SKAL DEN LÅSE FORMULAREN




                        'Viser Messegebox
                        Gemt = MsgBox(Prompt:=Referater & Format(y, "YYYY") & "-" & Format(y, "MM") & "-" & x.Text, Title:="Filen er gemt", Buttons:=vbOKOnly)
                        If .ActiveDocument.Bookmarks.Exists("Start") Then      'her undersøger den om bogmærket findes (Fødselsdato)
                            .ActiveDocument.Bookmarks("Start").Select
                        End If

                    End With

                    '-----------------MAN KAN FÅ DEN TIL AT LADE WORD STÅ ABENT HVIS MAN SLETTER NEDENSTÅENDE-------
                    'MyWordApp.Quit

                    '----------------OG RYDER LIDT OP MED AT LUKKE VARIABLEN MYWORDAPP
                    Set MyWordApp = Nothing
                End If
            End If
        End If
    End If
End Sub
Avatar billede h_s Forsker
21. november 2006 - 21:22 #6
Projekt opgivet!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester