I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Private Sub Kommandoknap31_Click() On Error GoTo err_open Dim docname As String Dim objword As Word.Application Dim objdoc As Word.Document Const dir As String = "STI TIL WORDDOKUMENTET" Const ext As String = ".doc" docname = dir & "Vurdering af ansøger" & ext On Error Resume Next Set objword = GetObject(, "Word.Application") Err.Clear On Error GoTo err_open If objword Is Nothing Then Set objword = GetObject("", "Word.Application") End If objword.Visible = True AppActivate "Microsoft Word" objword.Documents.Open docname Exit Sub err_open: MsgBox "fejlkode: " & Err.Number End Sub
I see something went missing there :o) In a module Option Compare Database Option Explicit
Public 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 Const SW_HIDE = 0 Public Const SW_SHOW = 5
Me.txtWordDoc contains the name of the document you want to open-
den giver en fejlkode i 5174 når den skal åbn word - den åbner godt nok word men ikke doc...Private Sub Kommandoknap338_Click() On Error GoTo err_open Dim docname As String Dim objword As Word.Application Dim objdoc As Word.Document Const dir As String = "C:\Documents Const ext As String = "Vurdering af ansøger.doc" docname = dir & "Vurdering af ansøger" & ext On Error Resume Next Set objword = GetObject(, "Word.Application") Err.Clear On Error GoTo err_open If objword Is Nothing Then Set objword = GetObject("", "Word.Application") End If objword.Visible = True AppActivate "Microsoft Word" objword.Documents.Open docname Exit Sub err_open: MsgBox "fejlkode: " & Err.Number End Sub
Private Sub Kommandoknap338_Click() On Error GoTo err_open Dim docname As String Dim objword As Word.Application Dim objdoc As Word.Document Const dir As String = "C:\Documents and Settings\smallsystems\Skrivebord\marketing den. 23-03-04 Const ext As String = ".doc" docname = dir & "Vurdering af ansøger" & ext On Error Resume Next Set objword = GetObject(, "Word.Application") Err.Clear On Error GoTo err_open If objword Is Nothing Then Set objword = GetObject("", "Word.Application") End If objword.Visible = True AppActivate "Microsoft Word" objword.Documents.Open docname Exit Sub err_open: MsgBox "fejlkode: " & Err.Number End Sub
Det viste kodeeksempel blander 2 metoder sammen. Ved at lave reference til Word, får man muligheden for at arbejde med Word.Application-objektet. Grunden til at man ønsker dette, er at man derved kan benytte "Early binding":
Dim objword As New Word.Application
Denne ene sætning erstatter disse alle disse: On Error Resume Next Set objword = GetObject(, "Word.Application") Err.Clear On Error GoTo err_open If objword Is Nothing Then Set objword = GetObject("", "Word.Application") End If
Hvis man i stedet vælger at benytte "Late binding", som i dette eksempel, så kan man helt fjerne referencen til MS Word, hvis blot man skifter disse 2 sætninger: Dim objword As Word.Application Dim objdoc As Word.Document ud med disse: Dim objword As Object Dim objdoc As Object
Og da man altid bør begrænse antallet af referencer mest muligt for at undgå konflikter, forbedre performance samt undgå problemer med forskellige versioner på forskellige maskiner, så er denne metode ofte den mest optimale.
Det skal lige bemærkes, at når du fjerner referencen til Word, så fjerner du også code-compleation (altså at der ruller en liste med tilgængelige kommandoer frem efter et punktum). Derfor er det en hjælp, hvis man har referencen mens man udvikler, og når så koden er færdig, så fjerner man referencen og laver de 2-3 småændringer i koden. (Med mindre selvfølgelig, at Word-VBA-koderne ligger på rygraden, så man ikke behøver den hjælp :o)
Synes godt om
Ny brugerNybegynder
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.