2016-11-02 5 views
1

Я хочу кусок кода, который позволит мне открыть 3 документа, которые находятся в папке, - и каждый раз, когда документы открываются, я хочу, чтобы там было окно сообщения, в котором отображается имя файла. Я хотел сделать этот цикл через структуру «Для каждого следующего».Открытие нескольких документов через структуру «Для каждой». VBA

Я знаю, что application.documents.open filename: = "ссылка на документы" - это код, который мне нужно использовать, но у меня возникают проблемы с его объединением.

Option Explicit 

Sub openthrice() 

    Application.Documents.Open FileName:="C:\Users\John\Desktop\New folder\Doc1.docx" 
End Sub 
+0

читать на [FileSystemObject] (https://msdn.microsoft.com/en-us/library/aa711216%28v=vs.71%29.aspx?f=255&MSPPError=-2147217396). Этот удобный небольшой класс предоставляет функциональность, которую вы ищете. –

+0

http://stackoverflow.com/a/10382861/1383168 – Slai

ответ

0

Попробуйте это как стартер для 10, он будет открыть файл и отобразить путь к файлу в окне сообщения, вернусь к вам с дальнейшим упрощением ...

Dim StrFile As String 

StrFile = Application.GetOpenFilename 
Workbooks.Open (StrFile), UpdateLinks:=False 
MsgBox StrFile 
+0

Я так потерялся, чтобы даже вставить это, потому что каждый раз, когда я запускаю код, я автоматически получаю сообщение об ошибке, указывающее метод или элемент данных, не может быть найден. Мне нужно это в каждом следующем цикле, и у меня есть тонна сложности. –

0

Этот метод требует ссылки на Модель объекта хоста Windows Script. Чтобы добавить выбор Инструменты, а затем Ссылки из меню VBA. Ссылки указаны в алфавитном порядке.

' Requires reference: Windows Script Host Object Model. 
Sub FindFile() 
    Const ROOT_DIR As String = "C:\MI\Example" ' Update with your folder. 
    Dim fso As FileSystemObject     ' Used to read from file system. 
    Dim fle As File        ' Used to loop over files. 

    ' Ready object variable for use. 
    Set fso = New FileSystemObject 

    ' Loop over files. 
    For Each fle In fso.GetFolder(ROOT_DIR).Files 

     If fle.Name Like "*.docx" Then Application.Documents.Open fle.Name 
    Next 


    ' Release object vars before they leave scope. 
    Set fso = Nothing 
End Sub 

FileSystemObject мощный класс, предоставленный корпорацией Майкрософт. Он позволяет вашему коду взаимодействовать с файловой системой Windows.

EDIT

Ошибка определяемый пользователем тип не определен означает, что компилятор не распознает один ваши типы данных. В этом случае он не знает, что такое FileSystemObject, поэтому он не может создать переменную fso этого типа. Для его исправления требуется ссылка, упомянутая выше. В нем содержится определение, указывающее VBA, что такое fso, и как оно работает.

Из полосы меню вы можете нажать Инструменты >>рекомендации и двойная проверка для Windows Script Host Object Model проверяется (выбранные ссылки должны быть на вершине, остальные перечислены в алфавитном порядке).

References Dialog

+0

Благодарим вас за это, но я получаю сообщение об ошибке, определяющее не определенный пользователем тип пользователя. –

+0

Знаете ли вы, какая строка возвращает ошибку? Вы могли добавить ссылку? –

+0

Dim fso Поскольку FileSystemObject возвращает ошибку. Определенный пользователем тип не определен. Я смог добавить свою рекомендацию да, но я не могу передать это. –

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

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