2017-05-19 3 views
0

abrufen Ich muss den letzten (am weitesten rechts liegenden Arbeitsblatt) Name in msgbox abrufen.Müssen den letzten Arbeitsblattnamen in msgbox

Ich benutzte Sheets (Sheets.Count), um das letzte Blatt zu bekommen. Aber es gibt nur die ersten Blätter Namen. Bitte hilf mir dabei.

Hier ist mein Code.

Sub ShowMRNumber() 
Dim xlApp As Excel.Application 
Dim xlBook As Excel.Workbook 
Dim xlSheet As Excel.Worksheet 

Set xlApp = New Excel.Application 
Set xlBook = xlApp.Workbooks.Open("location") 
Set xlSheet = xlApp.Sheets(Sheets.Count) 

MsgBox "MR No. is" & vbNewLine xlSheet.Name 
xlApp.Workbooks.Close 
End Sub 
+0

'Set xlApp = Neue Excel.Application' ist ein Störenfried. Wenn Sie nicht darauf achten, die Instanz, die Sie mit dieser Zeile erstellen, aufzugeben, erhalten Sie jedes Mal eine neue Instanz von Excel, wenn Sie diesen Code ausführen. Füge 'xlApp.Quit' zu deinem Sub hinzu. – Variatus

Antwort

1

Ihre Linie sagen

Set xlSheet = xlApp.Sheets(Sheets.Count) 

tatsächlich

Set xlSheet = xlBook.Sheets(xlBook.Sheets.Count) 

Mit xlApp.Sheets ist wahrscheinlich kein Problem sein sollte, so dass wahrscheinlich in die aktive Arbeitsmappe haben Verzug geraten würden innerhalb der xlApp Instanz von Excel, aber Sheets.Count (ohne a xlApp oder xlBook Qualifikationsmerkmal) hätte nicht auf eine Arbeitsmappe verwiesen, die in einer anderen Instanz von Excel geöffnet wurde - es würde sich auf die aktive Arbeitsmappe in der Instanz von Excel beziehen, in der der Code ausgeführt wurde.

+0

Danke. Es half. – Divya