Avatar billede benson Nybegynder
13. september 2005 - 08:17 Der er 5 kommentarer og
1 løsning

VBA | gemme fil fra anden pc på en delt mappe på en Win2K server.

Hejsa !

Som der står har jeg brug for at flere brugere fra forskellige lokationer (men med adgang til IP på server), via et VBA i Excel, skal gemme en fil på en delt mappe på en win2K server.

Mit problem er jo at det ser ud som om man skal være oprettet som bruger på den server for at få adgang. Så derfor har jeg 2 spørgsmål.

1. Kan det lade sig gøre at oprette et share på en Win2K server, uden det kræver oprettelse af brugere ?

2. Hvis Nej til 1. Kan det lade sig gøre at programmere brugeradgangen (brugernavn og kodeord) i mit VBA script, således brugeren får gemt sin fil ?

Forslag modtages gerne. :D

MVH Benson
Avatar billede capaj Nybegynder
13. september 2005 - 14:47 #1
Hej Benson,

1) Ja. Giv den nødvendige adgang/permissions til "everyone"
2) Det er muligt men bør vel undgås..
Avatar billede benson Nybegynder
13. september 2005 - 14:54 #2
Jamen den er sat til at "alle" har fuld adgang i forvejen. Men det kunne tyde på at det er alle de brugere der er oprettet på Win2k maskinen ?
Avatar billede capaj Nybegynder
13. september 2005 - 15:17 #3
Hmm - jeg var måske for hurtig.. Har du prøvet at give rettigheder til "Guest"-gruppen på den aktuelle server?
Avatar billede benson Nybegynder
13. september 2005 - 15:21 #4
jepper... det virker også fint hvis man i forvejen er logget på det delte drev som gæst. (dvs. gennem stifinder f.x).
Men mine bruger skal helst ikke besværliges med at indtaste brugernavne og kodeord. Alt dette skal løses fra det regneark de bruger (dvs. VBA makroen).
Avatar billede capaj Nybegynder
13. september 2005 - 15:39 #5
OK,

vedlægger lidt udokumenteret kode (VB class file) du kan prøve at innkludere i dit projekt (Er ikke 100 om du kan afvikle fra det via VBA??)

User og PW er hardcoded i klassen.....

<Class File>

Option Explicit
'-- Classen mapper og disconnecter et netværksdrev.



Private Declare Function WNetAddConnection2 Lib "mpr.dll" Alias _
      "WNetAddConnection2A" (lpNetResource As NETRESOURCE, _
      ByVal lpPassword As String, ByVal lpUserName As String, _
      ByVal dwFlags As Long) As Long

Private Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias _
      "WNetCancelConnection2A" (ByVal lpName As String, _
      ByVal dwFlags As Long, ByVal fForce As Long) As Long


Private Type NETRESOURCE
  dwScope As Long
  dwType As Long
  dwDisplayType As Long
  dwUsage As Long
  lpLocalName As String
  lpRemoteName As String
  lpComment As String
  lpProvider As String
End Type





Private Const NO_ERROR = 0
Private Const CONNECT_UPDATE_PROFILE = &H1
' The following includes all the constants defined for NETRESOURCE,
' not just the ones used in this example.
Private Const RESOURCETYPE_DISK = &H1
Private Const RESOURCETYPE_PRINT = &H2
Private Const RESOURCETYPE_ANY = &H0
Private Const RESOURCE_CONNECTED = &H1
Private Const RESOURCE_REMEMBERED = &H3
Private Const RESOURCE_GLOBALNET = &H2
Private Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
Private Const RESOURCEDISPLAYTYPE_GENERIC = &H0
Private Const RESOURCEDISPLAYTYPE_SERVER = &H2
Private Const RESOURCEDISPLAYTYPE_SHARE = &H3
Private Const RESOURCEUSAGE_CONNECTABLE = &H1
Private Const RESOURCEUSAGE_CONTAINER = &H2
' Error Constants:
Private Const ERROR_ACCESS_DENIED = 5&
Private Const ERROR_ALREADY_ASSIGNED = 85&
Private Const ERROR_BAD_DEV_TYPE = 66&
Private Const ERROR_BAD_DEVICE = 1200&
Private Const ERROR_BAD_NET_NAME = 67&
Private Const ERROR_BAD_PROFILE = 1206&
Private Const ERROR_BAD_PROVIDER = 1204&
Private Const ERROR_BUSY = 170&
Private Const ERROR_CANCELLED = 1223&
Private Const ERROR_CANNOT_OPEN_PROFILE = 1205&
Private Const ERROR_DEVICE_ALREADY_REMEMBERED = 1202&
Private Const ERROR_EXTENDED_ERROR = 1208&
Private Const ERROR_INVALID_PASSWORD = 86&
Private Const ERROR_NO_NET_OR_BAD_PATH = 1203&

Public Function MappDrev(MapShare)
      Dim NetR As NETRESOURCE
      Dim ErrInfo As Long
      Dim MyPass As String, MyUser As String

      NetR.dwScope = RESOURCE_GLOBALNET
      NetR.dwType = RESOURCETYPE_DISK
      NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
      NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
     
      NetR.lpRemoteName = MapShare
      'feks.: \\10.10.10.3\folderX
     
      'NetR.lpComment = "Optional Comment"
      'NetR.lpProvider =    ' Leave this undefined
      MyPass = "PW"
      MyUser = "USERNAME"

      ' If the MyPass and MyUser arguments are null (use vbNullString), the
      ' user context for the process provides the default user name.
      ErrInfo = WNetAddConnection2(NetR, MyPass, MyUser, _
      CONNECT_UPDATE_PROFILE)
     
      MappDrev = ErrInfo
End Function

Public Function DisMappDrev(strLocalName As String)
      Dim ErrInfo As Long
      ErrInfo = WNetCancelConnection2(strLocalName, _
      CONNECT_UPDATE_PROFILE, False)
      DisMappDrev = ErrInfo
End Function

</Class File>


Class kaldes f.eks. som:
    Dim Mapp As New NetworkMapper
    Call Mapp.MappDrev(InputFileShare)
Avatar billede benson Nybegynder
22. marts 2007 - 08:45 #6
Hold da helt op.... lang tid siden.

Capaj vil du lægge et svar så får du lidt point for arbejdet. Jeg fik dog aldrig løst opgaven og er siden startet i andet arbejde :)

Og undskyld for den store forsinkelse.
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
Kurser inden for grundlæggende programmering

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