2014-02-28 1 views
2

Я сопоставил местоположение интрасети с помощью проводника файлов. т.е. отображается http://intranet.XXXXXXX.com/mydir/ М: \Функция VBA Dir, не работающая над Excel 2010

Я использую функцию Dir, чтобы проверить, если файл присутствует в этом месте:

Dim FileExists as Boolean 

FileExists = Dir("M:\myfile") <> "" 

If FileExists Then MsgBox "File found in M:" 

Я бегу, что макрос на Excel 2007 и она отлично работает. Однако, когда я запускаю его в Excel 2010, Dir("M:\myfile") всегда возвращает «", даже если файл присутствует в указанном месте. Я не могу найти решение, которое будет работать на обеих версиях Excel. Есть идеи?

+0

посмотреть на [FileSystemObject] (http://stackoverflow.com/questions/3233203/how-do-i-use-filesystemobject-in-vba) вместо этого. Путь более интуитивный, чем глупая функция 'dir' – Brad

+0

, она должна быть' Dir ("M: \ myfile \") 'NOT' Dir ("M: \ myfile") ' – Qbik

ответ

0

Вот как использовать FSO, чтобы делать то, что вы хотите:

Option Explicit 

Dim FullPath  As String 

Function test_it() 
    FullPath = "C:\temp\form1.txt" 
    Debug.Print Does_File_Exist 
End Function 

Private Function Does_File_Exist() As Boolean 
Dim oFs   As New FileSystemObject 
Dim oFile  As File 

    Set oFs = New FileSystemObject 
    If oFs.FileExists(FullPath) Then 
     MsgBox "Found file: " & FullPath 
    Else 
     MsgBox "File not found: " & FullPath 
    End If 

    Set oFs = Nothing 
End Function 
+0

Я новичок в VBA для Excel. Я скопировал ваш код в VBA и просто изменил путь. Затем я создал макрос для вызова функции. Я получаю ошибку в первой строке Option Compare Database («ожидаемый текст или двоичный код»). Мне кажется, что ваш код не для VBA для Excel, не так ли? – user3366899

2

Вы можете добавить расширение файла в качестве символа подстановки в конце FilePath. Я пробовал в excel 2010, и это сработало для меня.

Dim FileExists As Boolean 
    FileExists = Dir("D:\myfile" & "*.txt") <> "" 

    If FileExists Then MsgBox "File found in M:" 
+0

Спасибо, Сантош. На самом деле вместо «myfile» у меня есть полное имя и расширение файла, который я пытаюсь найти. Я не работаю над этим отображаемым модулем M: = http://intranet.XXXX.com/mydir/ – user3366899

+0

Забыл сказать, что исходный макрос работает для любого другого диска, такого как C: \ или даже сопоставленные сетевые устройства. – user3366899

+0

@ user3366899 Путь, к которому вы пытаетесь получить доступ, Является ли это citrix enviornment? – Santosh

1

Я обнаружил, что если я использую полное сетевое имя, оно работает первым. Это было не только в VBA, но и некоторые ярлыки - они вернулись «Файл не найден».

Изменение из сопоставленного ярлыка, например.

Y:\Projects\Proj1\File1.xlsx 

до полной отображаемой дорожки, например.

\\server\Department\Projects\Proj1\File1.xlsx 

Исправлена ​​проблема

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

  • Нет связанных вопросов^_^