Excel 导入图纸更改图纸名称
我正在使用此VBA从不同文件导入大量图纸名:Excel 导入图纸更改图纸名称,excel,vba,rename,Excel,Vba,Rename,我正在使用此VBA从不同文件导入大量图纸名: Sub ImportSheets() Dim sPath As String Dim sFname As String Dim wBk As Workbook Dim wSht As Variant Application.EnableEvents = False Application.ScreenUpdating = False sPath = InputBox("Enter a fu
Sub ImportSheets()
Dim sPath As String
Dim sFname As String
Dim wBk As Workbook
Dim wSht As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
sPath = InputBox("Enter a full path to workbooks")
ChDir sPath
sFname = InputBox("Enter a filename pattern")
sFname = Dir(sPath & "\" & sFname & ".xl*", vbNormal)
wSht = InputBox("Enter a worksheet name to copy")
Do Until sFname = ""
Set wBk = Workbooks.Open(sFname)
Windows(sFname).Activate
Sheets(wSht).Copy After:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = ActiveSheet.Range("A9")
wBk.Close False
sFname = Dir()
Loop
ActiveWorkbook.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
现在,net sheetname是A9中写入的任何值,是否有方法可以更改它,以便将工作表重命名为其导入的文件名?
替代的解决方案可能是将其重命名为“导入”和后缀,但我不知道如何添加后缀1-1000 ect 要与Excel文件同名,只需尝试以下操作:
ActiveSheet.Name = wBk.Name
如果要与要从中复制的工作表同名, 这是您需要的代码,而不是
ActiveSheet.Name=ActiveSheet.Range(“A9”)
:
ActiveSheet.Name = Worksheets(wSht).Name
它将采用完全正确的名称。甚至是ActiveSheet.Name=wSht
,只要您通过InputBox
准确地指定它即可
通常,在尝试复制相应的工作表之前,您可以检查它是否存在,并且仅在存在时进行复制。这是一种方法(其他方法请参见下面的链接):
If WorksheetExists(wSht) Then
Sheets(wSht).Copy After:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = ActiveSheet.Range("A9")
End If
Function WorksheetExists(sName As String) As Boolean
WorksheetExists = Not WorksheetFunction.IsErr(Evaluate("'" & sName & "'!A1"))
End Function
要获得导入+计数器,请在代码中尝试以下操作:
Option Explicit
Public Sub TestMe()
Dim importName As String
Dim cnt
Do Until cnt = 10
cnt = cnt + 1
importName = "Import" & cnt
Debug.Print importName
Loop
End Sub
只需确保始终递增工作表的名称即可
ActiveSheet.Name = left(sFname, instrrev(sFname, chr(46))-1)
可能想验证
wSht
的内容,但是:工作表名称中不允许包含所有内容。@Mat'smugh-这似乎太过分了,我宁愿制作一个try catch
,并显示一条漂亮的错误消息。或者,是的<代码>出错时继续下一步,并检查错误号
和MsgBox
,以防出错。关键是要做点什么来解决wSht可能无效的问题;-)@Mat'sMug-按照OP代码的逻辑,最好的情况是检查他正在复制的文件的工作表集合中是否存在wSht
。如果存在,则它是有效的工作表名称。