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