2014-12-02 12 views
6

मुझे नेटवर्क फ़ाइल सर्वर पर होस्ट किए गए फ़ोल्डर VBA के माध्यम से पहुंचने की आवश्यकता है। फ़ोल्डर केवल सेवा खाते (सामान्य उपयोगकर्ता खातों से अलग) के माध्यम से लिखित में पहुंच योग्य है जिसके लिए मेरे पास उपयोगकर्ता नाम और पासवर्ड है।एक्सेस साझा नेटवर्क फ़ोल्डर

यूआई के माध्यम से मैं उस फ़ोल्डर को देख सकता हूं और इसे स्थानीय ड्राइव के रूप में मैप कर सकता हूं लेकिन इसे लिखित में एक्सेस करने के लिए मुझे विंडोज़ से लॉग ऑफ करना होगा और सेवा खाते के माध्यम से लॉगऑन करना होगा।

क्या सामान्य उपयोगकर्ता सत्र के दौरान नेटवर्क फ़ोल्डर तक पहुंचने का कोई तरीका है लेकिन वीबीए कोड में हार्डकोडिंग उपयोगकर्ता नाम और पीडब्ल्यूडी है?

मैं के साथ स्थानीय ड्राइव के रूप में फ़ोल्डर मानचित्रण की कोशिश किया था:

Set WshNetwork = CreateObject("WScript.Network") 
WshNetwork.MapNetworkDrive "S:", "\\corp-server\HostingFolder", False, Username, pwd 

लेकिन काम नहीं किया ("एस" ड्राइव मैप नहीं गया था)। यदि इसके बजाय मैं वही करता हूं लेकिन उपयोगकर्ता नाम और पासवर्ड प्रदान किए बिना:

Set WshNetwork = CreateObject("WScript.Network") 
WshNetwork.MapNetworkDrive "S:", "\\corp-server\HostingFolder" 

यह पूरी तरह से काम करता है।

अब आश्चर्यचकित हो रहा है कि मैं क्या करने की कोशिश कर रहा हूं वास्तव में संभव है? यदि नहीं, तो क्या कोई विकल्प है?

धन्यवाद

उत्तर

5

आप अपने परीक्षण में मूल्य का this answer मिल सकती है।

अनिवार्य रूप से, मैं कुछ चीज़ें जाँच करेगा ...

  1. यकीन है कि आप पहले से ही इस संसाधन वर्तमान उपयोगकर्ता के प्रवेश का उपयोग कर से कनेक्ट नहीं कर रहे हैं। enter image description here

  2. सुनिश्चित करें कि आप अपने उपयोगकर्ता नाम में domain\username सिंटैक्स का उपयोग कर रहे हैं: आप कर रहे हैं, तो आप निम्नलिखित की तरह एक त्रुटि संदेश मिल सकता है।

अन्यथा मुझे लगता है कि आप सही ट्रैक हैं। मैंने ऊपर दिए गए लिंक के आधार पर कुछ नमूना कोड एक साथ रखा है, और फ़ाइलों के एक सूची के माध्यम से एक अलग उपयोगकर्ता नाम के तहत नेटवर्क शेयर से सफलतापूर्वक कनेक्ट करने में सक्षम था।

(टिप है कि आप वास्तव में एक ड्राइव को मैप करने के लिए एक कनेक्शन स्थापित करने की जरूरत नहीं है ध्यान दें।)

निम्नलिखित कोड एक बहुत जल्दी (कार्य) VBA नमूना के कार्यान्वयन Access network share from within VBScript eg FileSystemObject

में सूचीबद्ध है
Public Sub TestNetShareName() 

    Dim NetworkObject As Object 
    Dim FSO As Object 
    Dim Directory As Object 
    Dim Filename As Object 
    Dim ServerShare As String 
    Dim UserName As String 
    Dim Password As String 

    ServerShare = "\\corp-server\HostingFolder" 
    UserName = "mydomain\myuser" 
    Password = "freddie123" 

    Set NetworkObject = CreateObject("WScript.Network") 
    Set FSO = CreateObject("Scripting.FileSystemObject") 

    NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password 

    Set Directory = FSO.GetFolder(ServerShare) 
    For Each Filename In Directory.Files 
     Debug.Print Filename.Name 
    Next 

    Set Filename = Nothing 
    Set Directory = Nothing 
    Set FSO = Nothing 

    NetworkObject.RemoveNetworkDrive ServerShare, True, False 

    Set NetworkObject = Nothing 

End Sub 
+0

ग्रेट सामान, धन्यवाद! चूंकि मैं वर्तमान में घर से काम कर रहा हूं, मैं केवल वीपीएन के माध्यम से अपना कोड आज़मा सकता हूं और काम नहीं करता ("गलत उपयोगकर्ता नाम या पासवर्ड" त्रुटि लौटाता हूं)। उपयोगकर्ता नाम में डोमेन के साथ और बिना प्रयास किया। मैं एक्सप्लोरर के माध्यम से लक्ष्य फ़ोल्डर खोलकर उपरोक्त अपनी त्रुटि (एकाधिक कनेक्शन) को पुन: उत्पन्न करने में भी सक्षम था। मुझे अब कार्यालय में वापस परीक्षण करने की आवश्यकता है, लेकिन यह मेरे लिए बिल्कुल अच्छा लगता है और "जरूरी" काम करना चाहिए। अगर आपको लगता है कि कुछ और है तो मैं बस मुझे बता सकता हूं अन्यथा सोमवार को बात करते हैं! – cfugge

+0

यह मेरे लिए पूरी तरह से काम किया। कोडिंग के एक बहुत साफ टुकड़े के लिए बहुत धन्यवाद। – cfugge

+0

अरे यह कोड कमाल है। कम से कम मालिश करने के साथ पहली बार काम किया। चीयर्स! –

संबंधित मुद्दे