[VBA] Verwijzen naar mijn documenten

Pagina: 1
Acties:

  • xylonite
  • Registratie: Juli 2002
  • Laatst online: 21-12-2024

xylonite

Certified Prutser

Topicstarter
Ik heb ben met een aanpassing bezig in de normal.dot van MS Word 2000.
Ik heb een extra dropdown menu gemaakt tussen "bestand, opmaak etc." waar de standaard brieven die we op kantoor gebruiken meteen geopend kunnen worden.
Nu verwijs ik naar een rechtstreekse locatie maar ik wil dit veranderen naar "mijn documenten", omdat bij iedere gebruiker(Win XP) de mijn documenten op een andere locatie staat.

Wie kan mij vertellen of ik en zo ja hoe ik kan verwijzen naar de documenten locatie ipv naar b.v. "C:\Documents and Settings\...user...\mijn documenten\sjablonen\document.dot"

bvd

Greetingz Jeroen

MCSE, MCSA | http://www.linkedin.com/in/jeroens


Verwijderd

options.DefaultFilePath(wdUserTemplatesPath) & "\document.dot"

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Verwijderd schreef op 01 september 2004 @ 09:40:
options.DefaultFilePath(wdUserTemplatesPath) & "\document.dot"
Op die manier krijg je de directory waar de gebruiker zijn word templates staan.
Als je echt de "Mijn documenten" directory in de Windows Explorer wilt hebben, dan is de volgende code wel handig:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Option Explicit

Private Const S_OK As Long = 0
Private Const SHGFP_TYPE_CURRENT As Long = &H0
Private Const MAX_PATH As Long = 260
Const CSIDL_COOKIES As Long = &H21
Const CSIDL_PERSONAL As Long = &H5

Private Declare Function SHGetFolderPath Lib "shfolder" _
   Alias "SHGetFolderPathA" _
  (ByVal hwndOwner As Long, _
   ByVal nFolder As Long, _
   ByVal hToken As Long, _
   ByVal dwFlags As Long, _
   ByVal lpszPath As String) As Long

Public Sub ShowCookies()

   Dim lpszRootFolder As String

   lpszRootFolder = GetFolderPath(CSIDL_COOKIES)
   MsgBox "Cookies folder: " & lpszRootFolder
   lpszRootFolder = GetFolderPath(CSIDL_PERSONAL)
   MsgBox "Documents folder: " & lpszRootFolder
End Sub

Private Function GetFolderPath(CSIDL As Long) As String

   Dim sPath As String
   Dim sTmp As String

  'fill pidl with the specified folder item
   sPath = Space$(MAX_PATH)

   If SHGetFolderPath(0&, _
                      CSIDL, _
                      0&, _
                      SHGFP_TYPE_CURRENT, _
                      sPath) = S_OK Then

       GetFolderPath = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
   End If

End Function

' Some other special folders that may be of interest:
' CSIDL_DESKTOP &H0
'CSIDL_PROGRAMS &H2
'CSIDL_STARTUP &H7
'CSIDL_RECENT &H8
'CSIDL_TEMPLATES &H15

  • xylonite
  • Registratie: Juli 2002
  • Laatst online: 21-12-2024

xylonite

Certified Prutser

Topicstarter
Ik heb het alleen voor MS Word nodig.
Ik heb het nu dmv de volgende code opgelost.
Het enige nadeel is dat op deze manier de normal.dot in dezelfde map moet staan als de document sjablonen maar dat was toch al het geval.

code:
1
2
3
4
     Documents.Add Template:=Options.DefaultFilePath(wdUserTemplatesPath) & "\Ziektekosten.dot", _
        NewTemplate:=False, DocumentType:=0
    Selection.NextField.Select
End Sub


Bedankt allemaal voor de snelle reacties

[ Voor 30% gewijzigd door xylonite op 01-09-2004 11:06 ]

MCSE, MCSA | http://www.linkedin.com/in/jeroens


Verwijderd

bij nader inzicht kan je gewoon documents.add "document.dot" gebruiken zonder de map te hoeven definiëren.

overigens kan je tientallen speciale mappen terugvinden met api zoals aangegeven door lister ofwel met behulp van het shell object:

code:
1
2
3
GetFolderPath = _
      CreateObject("shell.application"). _
      NameSpace(5).Items.Item.Path


welke cijfers je moet gebruiken (vb. 5=ssfPERSONAL) kan je terugvinden in de objectbrowser (F2 in vbe), na een verwijzing gezet te hebben naar de microsoft shell controls and automation (niet benodigd om bovenvermelde code te kunnen uitvoeren)