2009-04-06 13 views
2

Ich versuche, ein VBA-Makro zu schreiben, um Änderungen an einer Arbeitsmappe in einem separaten Blatt zu verfolgen.Excel-VBA-Makro zum Verfolgen von Änderungen in separatem Blatt

Wenn Sie dies manuell tun, lautet die Befehlsfolge Extras> Änderungen verfolgen> Änderungen hervorheben, indem Sie die Option Arbeitsblatt trennen wählen. Sie müssen zwei Iterationen des Befehls ausführen, einen, um das Tracking inline zu aktivieren, und einen zweiten, um das Tracking auf ein separates Blatt zu verschieben.

die Makroaufzeichnung verwenden, bekam ich zu diesem Stück Code:

With ActiveWorkbook 
    .Save 
    .KeepChangeHistory = True 
    .HighlightChangesOptions When:=xlAllChanges 
    .ListChangesOnNewSheet = True 
    .HighlightChangesOnScreen = False 
    .Worksheets("History").Select 
End With 

Als ich das laufen, ich den Fehler HighlightChangesOptions Methode erhalten ausfällt. Irgendwelche Vorschläge?

Antwort

2

Die HighlightChangesOptions-Methode funktioniert nur, wenn die Arbeitsmappe bereits freigegeben ist. Auf der Benutzeroberfläche wird HighlightChange die Arbeitsmappe automatisch freigeben, in VBA jedoch nicht.

Application.DisplayAlerts = False 
With ActiveWorkbook 
    .SaveAs , , , , , , xlShared 
    .KeepChangeHistory = True 
    .HighlightChangesOptions When:=xlAllChanges 
    .ListChangesOnNewSheet = True 
    .HighlightChangesOnScreen = False 
    .Worksheets("History").Select 
End With

Der Displayalerts Anruf wird Excel verhindern, dass Sie warnen, dass Sie eine vorhandene Arbeitsmappe überschrieben wird - selbst. Vielleicht möchten Sie diese Zeile kommentieren, nur um zu sehen, was vor sich geht.

Beachten Sie, dass dieser Code in der freigegebenen Arbeitsmappe nicht vorhanden sein kann. Sobald Sie die Arbeitsmappe freigegeben haben, wird der Code nicht mehr ausgeführt und es treten Fehler auf. Es muss in einem anderen Arbeitsbuch oder Add-In leben.

+0

Vielen Dank für Ihre Hilfe. Dies löste das Problem effektiv, aber wie Sie sagen, muss das Makro dann von einer anderen Arbeitsmappe aufgerufen werden. – draconis

+0

Ich kann diesen Code immer noch nicht ausführen. Ich habe es in ein Add-In eingefügt, aber es verfolgt die Änderungen nicht. die Fehlermeldung ging weg, sobald sie in ein Ad-in obwohl –

+0

Was meinst du, es ist nicht die Änderungen zu verfolgen? –