2017-02-02 1 views
0

Ich habe eine Zeichenfolge "sFile", die den Namen der Arbeitsmappe mit der Erweiterung speichert.Aktivieren der Arbeitsmappe

Ich möchte diese Arbeitsmappe aktivieren, in einer Zeichenfolge gespeichert.

Und dann schließen Sie es.

-Code verwende ist:

Dim wbk as workbook 
Set wbk = Workbooks(sFile) 
wbk.Activate 
wbk.close 

Aber das ist nicht working.Please Hilfe.

+0

Die Arbeitsmappen() Ansatz verwendet nicht die Erweiterung, nur den Namen der Arbeitsmappe. Verwenden Sie entweder den Namen oder schneiden Sie die Erweiterung mit Replace() aus der Zeichenfolge heraus. Edit: mit der Erweiterung funktioniert auch, ist aber nicht zwingend erforderlich. – Zerk

Antwort

0

Sie müssen sehen, ob Sie Set wbk = Workbooks(sFile) gelingen, wil es nur funktionieren, wenn die Arbeitsmappe ist geöffnet.

Wenn es nicht erfolgreich ist (wbk Is Nothing), dann müssen Sie die Arbeitsmappe öffnen.

-Code

Option Explicit 

Sub SetWB_toOpenWorkbook() 

Dim wbk As Workbook 
Dim sFile As String 
Dim FilePath As String 

' just an example of my file name (clean with extension) 
sFile = "SO_1.xlsm" 

' set the Dektop path 
FilePath = "C:\Users\" & Environ("USERNAME") & "\Desktop\" 

On Error Resume Next 
Set wbk = Workbooks(sFile) 
On Error GoTo 0 
If wbk Is Nothing Then ' if not open, then open the workbook 
    Set wbk = Workbooks.Open(FilePath & sFile) 
End If 

' just for my tests, put the workbook name in "A1" in "Sheet1" 
wbk.Worksheets("Sheet1").Range("A1").Value = wbk.Name 

wbk.Activate 
wbk.Close True 

End Sub 
+0

Ein übersichtlicher Prozess mit guter Fehlererfassung! Da das Ziel in der Frage jedoch darin besteht, das Arbeitsbuch zu schließen, erscheint es nicht überflüssig, diese Schritte zu durchlaufen. – Zerk

+0

@Zerk am wahrscheinlichsten, aber ich versuche normalerweise, Antworten zu geben, als ob ich diesen Code verwenden müsste (meistens ist es oveerkill) –

+0

Ich änderte es in meinem Code nur in 3-4 Linien. Es funktionierte. Vielen Dank Shai :) –

1

Wie in den Kommentaren erwähnt, dauert es nur den Namen (nicht Pfad) - dies sollte es für Sie tun:

Dim wbk as workbook 
Set wbk = Workbooks(right(sFile,Instrrev(sFile,"\")+1)) 
wbk.Activate 
wbk.close 
Verwandte Themen