繁体   English   中英

在Excel中打开文档后,请从第一个选项卡中复制警告

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM