2015-05-04 5 views
0

мне нужна формула, которая будет выводить что-то вроде этого:функция Excel VBA, которая проверяет, если имя файла содержит значение

Если имя файла в определенной папке содержит (так как имя файла будет иметь дополнительную строку после символа @) , поэтому, если имя файла содержит значение ячейки AB1, добавьте полное имя файла в ячейку AC1.

Возможно ли это с VBA?

Большое спасибо

+0

Приведите правильный пример – AHC

+1

Похоже, что вы захотите использовать аналогичный оператор. https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx – FairlyLegit

ответ

3

Это выполнимо в VBA?

Несомненно. Вот функция VBA помощник Я использую все время:

Public Function Contains(ByVal string_source As String, ByVal find_text As String, Optional ByVal caseSensitive As Boolean = False) As Boolean 

    Dim compareMethod As VbCompareMethod 

    If caseSensitive Then 
     compareMethod = vbBinaryCompare 
    Else 
     compareMethod = vbTextCompare 
    End If 

    Contains = (InStr(1, string_source, find_text, compareMethod) <> 0) 

End Function 

Я также использую это один всякий раз, когда у меня есть более чем одно значение для проверки - она ​​работает лучше, чем делать If {check1} Or {check2} Or {check3}..., потому что он возвращается, как только он находит совпадение , поэтому {check42} не получить оценку, если {check1} вернулся True:

Public Function ContainsAny(ByVal string_source As String, ByVal caseSensitive As Boolean, ParamArray find_strings() As Variant) As Boolean 

    Dim find As String, i As Integer, found As Boolean 

    For i = LBound(find_strings) To UBound(find_strings) 

     find = CStr(find_strings(i)) 
     found = Contains(string_source, find, caseSensitive) 

     If found Then Exit For 
    Next 

    ContainsAny = found 

End Function 
+0

Благодарю вас, но я очень новичок в этом. Где бы я поместил путь к папке и где имя столбца и т. Д.? – tgifred

+0

'string_source' будет именем файла,' find_text' будет значением ячейки 'AB1'. –

1

Рассмотрим:

Sub qwerty() 
    Dim FileSpec As String, FileName As String 
    Dim v As String 
    FileSpec = "C:\TestFolder\2013\Fed taxes\qwerty31416.xlsm" 
    ary = Split(FileSpec, "\") 
    FileName = ary(UBound(ary)) 
    v = Range("AB1").Value 
    If InStr(1, FileName, v) > 0 Then 
     Range("AC1").Value = FileName 
    End If 
End Sub 

enter image description here

Смежные вопросы