2015-10-23 4 views
2

Я импортирую конкретный лист в книгу в текущую книгу, с которой я работаю. Импорт прекращается последовательно, удаляя текущий лист перед импортом снова. Есть одна маленькая вещь, которая должна быть исправлена. Когда я отменить или выйти из GetOpenFilename приложения, она поставляется с:Сообщение об ошибке при нажатии «Выход» или «Отмена» в «Application.GetOpenFilename»

False.xlsx не был найден (...)

поэтому я добавил:

filespec = Application.GetOpenFilename() 
If filespec = False Then Exit Sub 

в Sub import_click() , но я не хочу, чтобы он дважды запрашивал файл. Однако, если я не включаю filespec = Application.GetOpenFilename(), он не работает. Вот код:

Sub import_click() 
    filespec = Application.GetOpenFilename() 

    If filespec = False Then Exit Sub 

    Call deletedatasheet 
    Call import 

    MsgBox "Data imported", vbInformation 

End Sub 

Private Sub import() 

Dim wsMaster As Worksheet 
Dim rd As Range 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

    If wsMaster Is Nothing Then 
     ThisWorkbook.Sheets.Add 
     Set wsMaster = ActiveSheet 
     Set rd = wsMaster.Range("A1") 
     wsMaster.Name = "Reviewed" 
     filespec = Application.GetOpenFilename() 
     Set wb = Workbooks.Open(Filename:=filespec) 
     Sheets("Reviewed").Activate 
     Cells.Copy rd 
     wb.Close 
    End If 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 


End Sub 

Sub deletedatasheet() 
    Dim ws As Worksheet 

    Application.DisplayAlerts = False 
    For Each ws In ThisWorkbook.Sheets 
     If ws.Name = "Reviewed" Then 
      ws.Delete 
     End If 
    Next 
    Application.DisplayAlerts = True 
End Sub 

Как успешно выйти или отменить GetOpenFilename заявление и попросить только для файла один раз?

ответ

2

переменная filespec должна быть общедоступной, если вы хотите использовать ее в другом подпрограмме. Добавьте эту строку до «Sub import_click()»: Public filespec As Variant и строку удаления/комментария filespec = Application.GetOpenFilename() in Sub import

+0

Отлично. Благодаря!! – Saud