2016-11-19 70 views
0

我有一个包含宏的工作簿(wb1)。我通过在msgbox中选择它来打开一个文件(wb)。搜索并将工作表从一个工作簿复制到另一个工作簿

我想循环遍历所有的wb页面,并且如果sheet.name如“xxx”将表格的副本保存在第一张表格之前的wb1中。

Sub GetFile() 

    Dim fNameAndPath As Variant, wb As Workbook 
    Dim wb1 As ThisWorkbook 

    fNameAndPath = Application.GetOpenFilename(FileFilter:="All Files (*.*),*.*", _ 
     Title:="Sélectionner le fichier des extractions Magnitude sur la Phase IAS CONSO") 

    If fNameAndPath = False Then Exit Sub 

    Set wb = Workbooks.Open(fNameAndPath) 

    For Each Sheet In wb.Sheets 

     If LCase(Sheet.Name) Like "*Sheet1*" Then 
      Range("A2").Select 
      'ActiveSheet.Delete 
     End If 

    Next Sheet 

回答

0

试试这个:

Option Explicit 

Sub GetFile() 
    Dim fNameAndPath As Variant 
    Dim sht As Worksheet 

    fNameAndPath = Application.GetOpenFilename(FileFilter:="All Files (.),.", Title:="Sélectionner le fichier des extractions Magnitude sur la Phase IAS CONSO") 
    If fNameAndPath = False Then Exit Sub 

    Set wb = Workbooks.Open(fNameAndPath) 
    For Each sht In wb.Sheets 
     If LCase(sht.Name) Like "*sheet1*" Then sht.Copy Before:=ThisWorkbook.Sheets(1) 
    Next sht 
    wb.Close False '<--| close the newly opened workbook without saving it 
End Sub 

也注意到我改变:

If LCase(sht.Name) Like "*Sheet1*" 

到:

If LCase(sht.Name) Like "*sheet1*" 

否则检查就再也没有回到True因为它会比较一个全部小写字母(LCase(sht.Name))到一个带有一个大写字符(“S”)的字符串

+0

并只是为了我的知识:如果我想复制之前....但只有值 - 我需要在这个lign上使用哪个代码?然后sht.Copy之前:= ThisWorkbook.Sheets(1) – jmten

+0

你不能这样做_during_'Copy()'方法。您必须在复制(在Copy()'方法之前)或粘贴(在Copy()'方法)表单之后执行。顺便说一句,你我想接受我的答案。谢谢 – user3598756

+0

好的非常感谢你的帮助,我会用粘贴的。 – jmten

相关问题