चेक करें कि क्या फ़ाइल को पथ एक्सेल कॉलम पर सही है


1

मेरे पास कई कॉलम के साथ एक एक्सेल फाइल है, कॉलम में से एक में एक रिमोट फ़ोल्डर (या स्थानीय, कोई फर्क नहीं पड़ता) में एक छवि के लिए एक पथ है।

\\ xxx.xxx.xxx.xxx \ folder \ image.jpg

मैं जांचना चाहता हूं कि क्या सभी URL या PATH फाइल सही हैं।

यदि कोई गलत है या वास्तविक फ़ाइल की ओर इशारा नहीं करता है (या पता खराब है) तो उसे लाल रंग में हाइलाइट करें (या किसी तरह संकेत दें)।

आशा है कि यह समझ में आता है। मुझे पता है कि मैं इसे मैक्रोज़ या वीबीए के साथ कर सकता हूं लेकिन मुझे सिंटैक्स नहीं पता है।

धन्यवाद!

जवाबों:


3

फ़ाइल पथ मान्य है या नहीं, यह जांचने के लिए आप UDF ( उपयोगकर्ता निर्धारित फ़ंक्शन ) का उपयोग कर सकते हैं ।

Excel में, Visual Basic Editor (VBE) चालू करने के लिए ALT+ मारा ।F11

VBA प्रोजेक्ट एक्सप्लोरर »इन्सर्ट» मॉड्यूल में कहीं भी राइट-क्लिक करें।

नीचे दिए गए कोड को कॉपी और पेस्ट करें

Function FileExist(path As String) As Boolean
    If Dir(path) <> vbNullString Then FileExist = True
End Function

अब, अपने स्प्रैडशीट दृश्य पर वापस जाएं। किसी भी सेल में जाएं और टाइप करें:

=FileExist(A1)

जहाँ A1सेल संदर्भ है जो फ़ाइल पथ रखता है

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

यहाँ छवि विवरण दर्ज करें

इसके अतिरिक्त, आप सेल के मूल्य के आधार पर हाइलाइट करने के लिए सशर्त स्वरूपण या VBA का उपयोग कर सकते हैं


बूलियन चर के डिफ़ॉल्ट पर निर्भरता को दूर करने के लिए डरपोक चाल:FileExist=Len(Dir(path))>0
SeanC

@ सीनशेयर वी लेकिन मैं क्यों करूंगा?

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

नेटवर्क ड्राइव को मैप करने के लिए कुछ भी स्पष्ट रूप से निष्पादन को धीमा कर देगा। मैं ईमानदारी से बेहतर (आसान) समाधान के बारे में नहीं सोच सकता, शायद कोई और कर सकता है। वैकल्पिक, इसके लिए संपूर्ण नेटवर्क ड्राइव को एक txt फ़ाइल या सरणी में मैप करना और एक अलग दृष्टिकोण का उपयोग करके पथ की खोज करने के लिए मेमोरी में काम करना होगा। यह बहुत अधिक जटिल और उन्नत होता।

@mehow बेशक हां एक रिमोट ड्राइव पर खोज करने में बहुत कुछ लगता है, लेकिन मैं एक बार फॉर्मूला चलाने के बारे में सोच रहा हूं। हर बार की तरह नहीं। वैसे भी, आपने मेरे प्रश्न को हल किया ताकि आप जीतें: पी
खलनायक

0

यह पता लगाया। मुझे यकीन है कि अन्य लोग इसे पढ़ने जा रहे हैं जैसा मैंने आज किया। आपको दो मॉड्यूल (हाइपरलिंक निकालने के लिए एक और फ़ाइल पथ निर्देशिका का परीक्षण करने के लिए एक) की आवश्यकता होगी

मॉड्यूल 1 (हाइपरलिंक के लिए)

    Function HLink(rng As Range) As String
    'extract URL from hyperlink
     'posted by C.F. Stotch! - shoutout to Richard K!
      If rng(1).Hyperlinks.Count Then HLink = rng.Hyperlinks(1).Address
    End Function

मॉड्यूल 2 (निर्देशिका परीक्षण के लिए)

     Function FileOrDirExists(PathName As String) As Boolean 'used to test filepaths of commmand button   links to see if they work - change their color if not working
  'Macro Purpose: Function returns TRUE if the specified file
   Dim iTemp As Integer

 'Ignore errors to allow for error evaluation
On Error Resume Next
iTemp = GetAttr(PathName)

 'Check if error exists and set response appropriately
Select Case Err.Number
Case Is = 0
    FileOrDirExists = True
Case Else
    FileOrDirExists = False
End Select

 'Resume error checking
   On Error GoTo 0
    End Function

'' '' '' और '' क्या है जब आप कमांड में बटन या कैसे आप चाहते हैं के माध्यम से, आप अपने जहाज में शामिल होने और इसे सक्रिय करने का प्रयास करेंगे। वर्कशीट सक्रिय होने पर मैंने इसे ऑटो चलाया है :) चीयर्स!

     Private Sub TestFilesExist()
   Dim xCheck As Integer
  'starting in the 3rd row....
 xCheck = 3
   On Error GoTo 0
    'Debug.Print Range("A" & xCheck).Value
    While xCheck < 36

       'xPather - checks if Z1 is a good path and then either highlights the actual cell in A column red if bad, or no fill if good.
      Dim sPath As String
      Dim XPather As String

'need a cell to put the hyperlink addresses into during the loop check as was not able to find the hyperlink address straight out of the cell containing the hyperlink. Extraction if you will. :)

ThisWorkbook.Sheets(1).Range("Z1").Value = "=HLink(A" & xCheck & ")"
XPather = ThisWorkbook.Sheets(1).Range("Z1").Value

Debug.Print XPather

 'Tests if directory or file exists
If FileOrDirExists(XPather) = False Then
    Range("A" & xCheck).Interior.ColorIndex = 3
Else
    Range("A" & xCheck).Interior.ColorIndex = xlNone
End If

    xCheck = xCheck + 1
    Wend

    End Sub
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.