Avatar billede Slettet bruger
24. juni 2004 - 15:07 Der er 6 kommentarer og
1 løsning

VBA get template-path

Jeg er i gang med en template, der har connection til en database, der ligger i samme folder.. problemet er, at templaten skal ligge på er server, hvor dem, der skal hente den, har mappet mappen med forskellige drev.. det kan altså være, at den ene skal have K:\ som sti, og en anden skal have F:\.. da det er en template, bliver den hentet ned på computeren, selvom den bliver åbnet fra serveren (og den bliver åbnet direkte fra serveren)...

Jeg vil altså gerne kunne finde den folder, som indeholder templaten og databasen, så jeg kan lave min connection..

håber i kan hjælpe

/1..
Avatar billede bak Forsker
24. juni 2004 - 18:26 #1
Mit forslag ville være at gemme UNC versionen af stien i en af Templatens egenskaber.
Når man så åbner en ny mappe baseret på templaten, kan denne værdi hentes igen.
UNC-versioner er ligeglad med bogstaverne med bruger hele stien til det mappede drev.
Nedenstående kode indsættes i et alm modul i fx. Person.xls.
Templaten åbner og makroen InsertUNCPath køres. Templaten gemmes så og er klar til brug.

Når du ønsker at hive stien til templaten ud af din nye projektmappe kan du bruge den nederste makro GetTemplateFolder.
Bemærk at alt kun virker rigtig med netværksdrev.

Option Explicit
Declare Function WNetGetConnection32 Lib "MPR.DLL" Alias _
  "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal _
  lpszRemoteName As String, lSize As Long) As Long

Dim lpszRemoteName As String
Dim lSize As Long
Const NO_ERROR As Long = 0
Const lBUFFER_SIZE As Long = 255

Function GetNetPath(stPath As String) As String
    Dim stDriveLetter As String, stRest As String, cbRemoteName As Long
    Dim lStatus&
    stDriveLetter = Left(stPath, 2)
    stRest = Mid(stPath, 3, Len(stPath) - 1)
    cbRemoteName = lBUFFER_SIZE
    lpszRemoteName = lpszRemoteName & Space(lBUFFER_SIZE)
  ' Return the UNC path (\\Server\Share).
    lStatus& = WNetGetConnection32(stDriveLetter, lpszRemoteName, _
      cbRemoteName)
  ' Verify that the WNetGetConnection() succeeded. WNetGetConnection()
  ' returns 0 (NO_ERROR) if it successfully retrieves the UNC path.
    If lStatus& = NO_ERROR Then
      ' Display the UNC path.
      GetNetPath = Application.Trim(lpszRemoteName) & stRest
    Else
      ' Unable to obtain the UNC path.
      GetNetPath = stPath
    End If
End Function

Sub InsertUNCPath()
ActiveWorkbook.BuiltinDocumentProperties.Item(6).Value = GetNetPath(ActiveWorkbook.Path)
End Sub

Sub GetTemplateFolder()
TemplatePath = ActiveWorkbook.BuiltinDocumentProperties.Item(6).Value
'bla. bla.
'din egen kode
End Sub
Avatar billede Slettet bruger
24. juni 2004 - 19:24 #2
tak for svaret.. jeg vil vende tilbage i morgen, når jeg har set på det..
Avatar billede Slettet bruger
01. juli 2004 - 10:13 #3
jeg ved godt, jeg ikke har fået set på det endnu, jeg ved, det virker, så jeg modificerer scriptet ved lejlighed, så det passer til mig.. kan ikke se, hvorfor du ikke skal have point nu.. så du må gerne lægge en svar...
Avatar billede Slettet bruger
02. juli 2004 - 14:54 #4
min endelige løsning blev sådan her:

Declare Function WNetGetConnectionA Lib "MPR.DLL" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, lSize As Long) As Long
Dim lpszRemoteName As String
Const BUFFER_SIZE As Long = 255

sub calendar()

lpszRemoteName = lpszRemoteName & Space(BUFFER_SIZE)
If WNetGetConnectionA(Left(ActiveWorkbook.Path, 2), lpszRemoteName, 255) = 0 Then
    ActiveWorkbook.BuiltinDocumentProperties.Item(6).value = Application.Trim(lpszRemoteName) & Mid(ActiveWorkbook.Path, 3, Len(ActiveWorkbook.Path) - 1) & "\"
End If

stConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ActiveWorkbook.BuiltinDocumentProperties.Item(6) & "TCC_Test_requests_System_Testing.mdb;"

end sub


takker for hjælpen!!

/1
Avatar billede Slettet bruger
02. juli 2004 - 14:54 #5
og smid lige et svar, hvis du vil have points...
Avatar billede bak Forsker
02. juli 2004 - 16:37 #6
ok,ok :-)
Avatar billede Slettet bruger
03. juli 2004 - 20:41 #7
værs'go...
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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