2011-04-13 10 views
16

विस्तारित विशेषताओं सहित डिस्क पर फ़ाइलों से सभी फ़ाइल विशेषताओं को कैप्चर करने के लिए एक्सेल वीबीए का उपयोग करने का प्रयास करना।विस्तारित फ़ाइल विशेषताओं को प्राप्त करने के लिए वीबीए का उपयोग

  • फ़ाइल पथ
  • फ़ाइल नाम
  • फ़ाइल का आकार
  • निर्माण दिनांक
  • : बुनियादी विशेषताओं (कि फाइल सिस्टम से आते हैं) फ़ाइलें लूप करने के लिए इसे पाने के लिए और कब्जा करने में सक्षम था दिनांक अंतिम एक्सेस
  • अंतिम संशोधन तिथि
  • फ़ाइल प्रकार

भी बढ़ाया गुण है कि फाइल ही से आते हैं पर कब्जा करना चाहते हैं:

  • लेखक
  • कीवर्ड
  • टिप्पणियाँ
  • अंतिम लेखक
  • श्रेणी
  • विषय

और अन्य प्रोप erties जो फ़ाइल पर राइट क्लिक करते समय दिखाई दे रही हैं।

लक्ष्य फ़ाइल सर्वर पर सभी फ़ाइलों की विस्तृत सूची बनाना है।

उत्तर

21

आप लूप कहते हैं .. तो यदि आप वर्तमान दस्तावेज़ के बजाय इसे एक डीआईआर के लिए करना चाहते हैं;

Dim sFile As Variant 
Dim oShell: Set oShell = CreateObject("Shell.Application") 
Dim oDir: Set oDir = oShell.Namespace("c:\foo") 

For Each sFile In oDir.Items 
    Debug.Print oDir.GetDetailsOf(sFile, XXX) 
Next 

जहां XXX उदाहरण के लिए लेखक के लिए एक अटैचमेंट कॉलम इंडेक्स 9 है। अपने संदर्भ के लिए उपलब्ध अनुक्रमणिका सूचीबद्ध करने के लिए आप लूप के साथ प्रतिस्थापित कर सकते हैं;

for i = 0 To 40 
    debug.? i, oDir.GetDetailsOf(oDir.Items, i) 
Next 

एक एकल फाइल/विशेषता के लिए जल्दी:

Const PROP_COMPUTER As Long = 56 

With CreateObject("Shell.Application").Namespace("C:\HOSTDIRECTORY") 
    MsgBox .GetDetailsOf(.Items.Item("FILE.NAME"), PROP_COMPUTER) 
End With 
+1

माइक्रोसॉफ्ट साइट भी देखें: http://technet.microsoft.com/en-us/library/ee176615.aspx –

+2

यहां निर्देशित लोगों के लिए यह थोड़ा पुराना है। अब 288 विशेषताएं हैं जिनका आप उपयोग कर सकते हैं। उदाहरण के लिए, फ़ाइल संस्करण 271. सभी को देखने के लिए लूप के लिए अद्यतन करें। http://msdn.microsoft.com/en-us/library/windows/desktop/bb787870(v=vs.85).aspx – TrialAndError

+0

आगे अपडेट: कुछ पिछली गर्मियों में (2017) 6 से ऊपर के सभी सूचकांक हैं अमान्य, केवल खाली तार लौट रहा है। –

7

आप इसे .BuiltInDocmementProperties के साथ प्राप्त कर सकते हैं।

उदाहरण के लिए:

Public Sub PrintDocumentProperties() 
    Dim oApp As New Excel.Application 
    Dim oWB As Workbook 
    Set oWB = ActiveWorkbook 

    Dim title As String 
    title = oWB.BuiltinDocumentProperties("Title") 

    Dim lastauthor As String 
    lastauthor = oWB.BuiltinDocumentProperties("Last Author") 

    Debug.Print title 
    Debug.Print lastauthor 
End Sub 

सभी क्षेत्रों तो आप इस के साथ उपयोग कर सकते हैं के लिए इस पेज देखें: http://msdn.microsoft.com/en-us/library/bb220896.aspx

आप ग्राहक के इस बाहर करने के लिए प्रयास कर रहे हैं (यानी Excel के साथ बंद कर दिया और कोड, एक .NET प्रोग्राम से चल रहा कोड), आपको DSOFile.dll का उपयोग करने की आवश्यकता है।

+0

मेरा प्रश्न बहुत स्पष्ट नहीं था। मैं डिस्क पर फ़ाइलों से फ़ाइल विशेषताओं को कैप्चर करने की कोशिश कर रहा हूं। ऐसा लगता है कि यह खुले दस्तावेज़ से गुणों को पढ़ रहा है। मैं डिस्क पर फ़ाइल से गुण कैसे प्राप्त करूं? –

+0

आह, इसे एक्सेल-वीबीए टैग किया गया था, इसलिए मैंने सोचा कि आप इसे क्लाइंट के अंदर से करना चाहते हैं। क्लाइंट के बाहर (यानी डिस्क से पढ़ना) के लिए, आप DSOFile का उपयोग करेंगे।डीएलएल (मेरे उत्तर में अंतिम पैराग्राफ)। –

+0

टैग को बदल दिया क्योंकि इसका एक्सेल के साथ कुछ लेना देना नहीं है। –

2
'vb.net 
'Extended file stributes 
'visual basic .net sample 

Dim sFile As Object 
     Dim oShell = CreateObject("Shell.Application") 
     Dim oDir = oShell.Namespace("c:\temp") 

     For i = 0 To 34 
      TextBox1.Text = TextBox1.Text & oDir.GetDetailsOf(oDir, i) & vbCrLf 
      For Each sFile In oDir.Items 
       TextBox1.Text = TextBox1.Text & oDir.GetDetailsOf(sFile, i) & vbCrLf 
      Next 
      TextBox1.Text = TextBox1.Text & vbCrLf 
     Next