0

開いて最初のタブからデータをコピーし、スクリプトが作成された元のワークブックに貼り付ける必要があるワークブックがあります。

私が直面している問題は、ワークブックと最初のタブの名前が同じになることです。したがって、ワークブック名​​が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
4

2 に答える 2

1

上記の私のコメントに基づいて、コード from strFile = Application.GetOpenFilename()toは次のように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
于 2012-09-13T18:18:21.150 に答える
-1

この質問からの回答を使用し、それをsheets()参照に置き換えます

私の答えを例として使用すると、あなたwbPOR.Sheets("Sheet1").は次のようになります

wbPOR.Sheets(left(strFile ,instrrev(strFile ,".")-1)).

これには、新しい Excel バージョンに拡張する場合に、他の拡張機能を使用できるという利点もあります。

于 2012-09-13T17:57:12.173 に答える