搜索并将工作表从一个工作簿复制到另一个工作簿
问题描述:
我有一个包含宏的工作簿(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
答
试试这个:
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”)的字符串
并只是为了我的知识:如果我想复制之前....但只有值 - 我需要在这个lign上使用哪个代码?然后sht.Copy之前:= ThisWorkbook.Sheets(1) – jmten
你不能这样做_during_'Copy()'方法。您必须在复制(在Copy()'方法之前)或粘贴(在Copy()'方法)表单之后执行。顺便说一句,你我想接受我的答案。谢谢 – user3598756
好的非常感谢你的帮助,我会用粘贴的。 – jmten