2017-04-26 39 views
0

我有一本通過控制按鈕導入工作表的工作簿。目前工作簿正在切換到新導入的工作表,並且我想阻止這種情況發生,因此工作簿將保留在工作表上。防止工作簿切換到新導入的工作表

這裏是我的代碼:

Sub ImportSheet() 
    Dim sImportFile As String, sFile As String 
    Dim sThisBk As Workbook 
    Dim vfilename As Variant 
    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 
    Set sThisBk = ActiveWorkbook 
    sImportFile = Application.GetOpenFilename(_ 
    FileFilter:="Microsoft Excel Workbooks, *.xls; *.xlsx", Title:="Open Workbook") 
If sImportFile = "False" Then 
    MsgBox "No File Selected!" 
    Exit Sub 

Else 
    vfilename = Split(sImportFile, "\") 
    sFile = vfilename(UBound(vfilename)) 
    Application.Workbooks.Open Filename:=sImportFile 
    Set wbBk = Workbooks(sFile) 
    With wbBk 
     If SheetExists(sWSName) Then 
      Set wsSht = .Sheets(sWSName) 
      wsSht.Copy after:=sThisBk.Sheets("Sheet3") 
     Else 
      MsgBox "There is no sheet with name :Raw_Data in:" & vbCr & .Name 
     End If 
     wbBk.Close SaveChanges:=False 
    End With 
End If 
Application.ScreenUpdating = True 
Application.DisplayAlerts = True 
End Sub 

Private Function SheetExists(sWSName) As Boolean 
    Dim ws As Worksheet 
    On Error Resume Next 
    sWSName = InputBox("Enter sheet name") 
    Set ws = Worksheets(sWSName) 
    If Not ws Is Nothing Then SheetExists = True 
End Function 

我不能工作了其中的代碼,它被轉換,也許我需要在把一些代碼,使其保持靜態的進口?

在此先感謝

+0

我認爲它會在您複製工作表時自動發生。你可以通過在你的子文件末尾選擇原始表單來解決這個問題。 – Luuklag

+0

好主意,它做到了! – Porkball21

回答

1

添加到您的聲明塊

Dim sThisSht As Worksheet 

而這其中還設置sThisBk

Set sThisSht = ActiveWorksheet 

然後你恢復ScreenUpdating = True之前,添加此回到開始時設置的活動紙張:

sThisSht.Activate 
+0

太好了,非常感謝! – Porkball21

相關問題