[英]After document is opened in Excel, copying data from first tab with caveat
我有一个需要打开的工作簿,然后从第一个选项卡复制数据,然后将其粘贴到创建脚本的原始工作簿中。
我遇到的问题是工作簿和第一个选项卡将被命名为相同的名称。 因此,如果工作簿名称为OpenPOs-100255-08292012.xls
则选项卡将为OpenPOs-100255-08292012
。 下周,尽管excel工作表将是OpenPOs-200211-12495312.xls
,这意味着选项卡将是OpenPOs-200211-12495312
。
使用我现在正在使用的代码,有没有办法使它适用于这种情况? 我想过要使"Sheet 1"
成为当今的标签? 我曾考虑过使用wsPOR.Sheets(wsPOR),但我有一种感觉,它将作为错误返回。 有人可以帮忙吗?
Sub Update_TNOOR()
Dim wsTNO As Worksheet
Dim wsTND As Worksheet
Dim wsTNA As Worksheet
Dim wbPOR As Workbook 'New Workbook
Dim wbOOR As Workbook 'ThisWorkbook
Dim lastrow As Long, lastrow2 As Long, fstcell As Long
Dim strFile As String, NewFileType As String, filename As String
Set wsTNO = Sheets("Tel-Nexx OOR")
Set wsTND = Sheets("Tel-Nexx Data")
Set wsTNA = Sheets("Tel-Nexx Archive")
Set wbOOR = ThisWorkbook
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
lastrow = wsTND.Range("A" & Rows.Count).End(xlUp).Row + 1
wsTND.Range("A2:P" & lastrow).Delete
strFile = Application.GetOpenFilename()
NewFileType = "Excel Files 2007 (*.xls)"
Set wbPOR = Application.Workbooks.Open(strFile)
lastrow = wbPOR.Sheets("Sheet1").Range("A" & wbPOR.Sheets("Sheet1").Rows.Count).End(xlUp).Row
wbPOR.Sheets("Sheet1").Range("A4:N" & lastrow).Copy wbOOR.Sheets("Tel-Nexx Data").Range("A2")
wbPOR.Save
wbPOR.Close
End Sub
根据我上面的评论,您的代码从strFile = Application.GetOpenFilename()
到wbPOR.Close
变为:
strFile = Application.GetOpenFilename()
NewFileType = "Excel Files 2007 (*.xls)"
Set wbPOR = Application.Workbooks.Open(strFile)
Dim wsPOR As Worksheet
Set wsPOR = wbPOR.Sheets(Replace(wbPOR.Name, ".xls", ""))
lastrow = wsPOR.Range("A" & wsPOR.Rows.Count).End(xlUp).Row
wsPOR.Range("A4:N" & lastrow).Copy wbOOR.Sheets("Tel-Nexx Data").Range("A2")
wbPOR.Save
wbPOR.Close
使用这个问题的答案,并将其替换为sheets()
参考
以我的答案为例,您的wbPOR.Sheets("Sheet1").
会成为
wbPOR.Sheets(left(strFile ,instrrev(strFile ,".")-1)).
如果您扩展到较新的excel版本,这也将具有与其他扩展一起使用的优势。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.