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
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
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.