2012-07-26 13 views
5

मैं नवीनतम डाउनलोड सीएसवी फ़ाइल खोजने के लिए किसी दिए गए निर्देशिका के माध्यम से लूप करने की कोशिश कर रहा हूं। कुछ कारणों से मेरा डिर फ़ंक्शन कोई फ़ाइल नहीं मिलेगा भले ही फ़ाइल मौजूद है। मैं वीबीए से पूरी तरह से परिचित नहीं हूं इसलिए शायद मुझे डिर फ़ंक्शन करने के लिए कुछ प्रकार का संदर्भ याद आ रहा है, लेकिन मुझे कुछ भी ऑनलाइन नहीं मिल रहा है जो मुझे बताता है कि मुझे इसकी आवश्यकता है। सभी उदाहरण और मंच डिर का उपयोग करते हैं जैसे मैं करता हूं, लेकिन मैं काम पर नहीं आ सकता। यहाँ कोड, कृपया मुझे बताओ कि आप देख सकते है कि अगर मैं गलत क्या कर रहा हूँ है:एक्सेल 2010 वीबीए में काम नहीं कर रहा

Public Function Get_File() as string 
    Dim filePath As String 

    ChDir ("..") 
    filePath = CurDir 
    'Goes back to Documents directory to be in same directory as macro 
    ChDir (filePath & "\Documents") 
    filePath = filePath & "\Downloads\test.txt" 
    filePath = getLatestFile(filePath) 

    Get_File = filePath 
End Function 

Public Function getLatestFile(pathToFile As String) As String 
    Dim StrFile As String 
    Dim lastMod As Variant 
    Dim nextMod As Variant 
    Dim lastFileName As String 

    StrFile = Dir(pathToFile) 
    lastFileName = StrFile 
    lastMod = FileDateTime(StrFile) 
    While Len(StrFile) > 0 
     Debug.Print StrFile 
     StrFile = Dir 
     nextMod = FileDateTime(StrFile) 
     If nextMod > lastMod Then 
      lastFileName = StrFile 
      lastMod = nextMod 
     End If 
    Wend 

    getLatestFile = lastFileName 
End Function 

test.txt फ़ाइल मेरी डाउनलोड फ़ाइल में है और FilePath स्ट्रिंग प्रिंट बाहर सही रास्ता हो सकता है, लेकिन मैं रखना एक त्रुटि हो रही है जिसमें यह फ़ाइल नहीं मिल रही है। यह Dir (pathToFile) के पहले उपयोग में विफल रहता है। किसी भी तरह की सहायता का स्वागत किया जाएगा।

+0

त्रुटि नहीं DIR के साथ है। त्रुटि इस पंक्ति के साथ है 'lastMod = FileDateTime (StrFile)' आपको पूरा पथ प्रदान करना होगा। इसी प्रकार दूसरों के लिए। –

उत्तर

5

Dir() केवल पथ के फ़ाइल नाम को लौटाता है, यानी, यह फ़ोल्डर भाग वापस नहीं करता है। उदाहरण के लिए,

Dir("C:\MyPath\MyFile.txt") 

रिटर्न MyFile.txt नहीं C:\MyPath\MyFile.txt

+0

ठीक है, उसने ऐसा किया। उत्तर देने के लिए धन्यवाद, मुझे पता नहीं था कि यह Dir के लिए मामला था। एक्सेल में सहायता अनुभाग बताता है कि लेकिन मुझे किसी कारण से माना जाता है कि यह पूरे पथ को वापस कर देगा। इससे मुझे कई और घंटे बचाए। – derigible

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