Wiem, że temat stary, ale odpowiem, bo mam lenia i nie chce mi się pracować.
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.add
oSheet = oBook.Worksheets(1)
W tym miejscu tworzysz nowy dokument excela i zapisując go pod nazwą plik.xlsx nadpisujesz poprzedni plik, który się tam znajduje. Dlatego odnosisz wrażenie, że skrypt czyści dane, a on po prostu podmienia cały dokument na nowo stworzony i tych danych nigdy tam nie było.
Średnio z opisu rozumiem co chcesz zrobić ale jeżeli:
1) Skrypt masz w pliku w którym jest button i na nim chcesz dokonać akcji to po co tworzysz nowy workbook?
2) Chcesz dokonać zmian w innym pliku użyj Workbooks.open
Workbooks.Open ("C:\thefilepath\thefile")
ThisWorkbook.Activate
Jeżeli nie chcesz, żeby Office, przełączył Ci okna (Activate zaznaczy workbook jako obecnie używany ale też wyświetli go na wierzchu).
Dodaj linijke przed Workbooks.Open
Application.ScreenUpdating = False
A po .Activate
Application.ScreenUpdating = True