Есть ли способ удалить данные в листе из другой рабочей книги? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть «Мастер лист», в котором я объединяю несколько рабочих книг, в которые вводятся данные (рабочие книги станции), в один главный файл. Я хотел бы очистить данные в рабочих книгах станции, когда нажимаю командную кнопку в основном листе,очистка всех данных и сохранение как сегодняшняя дата.Также необходимо стереть определенные диапазоны в книгах ...

Я пытался, и это работает, когда я очищаю данные только в пределах Главного листа, но код, который я пробовал с другими листами, кажется, застрял.Я использовал массив для удаления из нескольких книг.Я только попробовал это в файле Станции 1.

 Sub ClearAll()

 'ClearAll & Save Macro

 Dim answer As Integer

 answer = MsgBox("All entries will be cleared. Are you sure?", vbYesNo + vbQuestion, "Empty Sheet")



If answer = vbYes Then

'clears station data

Dim ex As Excel.Application
Dim wrkbk As Workbook
Dim sht As Worksheet
Dim books As Variant
Dim folder As String
Dim i As Integer

folder = "C:\Users\arocmag\Documents\MasterLog"
books = Array("Station 1 Daily Log.xlsm")

Application.ScreenUpdating = False
Application.DisplayAlerts = False

On Error GoTo errH:
Set ex = New Excel.Application
For i = 0 To UBound(books)
    Set wrkbk = ex.Workbooks.Open(folder & books(i))
    Set sht = wrkbk.Sheets(1)
    sht.Range("A2:H2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
    wrkbk.Close True
Next
ex.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Exit Sub
errH:
ex.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox Err.Description



'clears Master Sheet
Range("A2:H2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("I1").Select
ActiveWorkbook.Worksheets("Master Log").AutoFilter.Sort.SortFields.Clear
Selection.AutoFilter

 ActiveWorkbook.SaveCopyAs ("C:\Users\arocmarg\Documents\Rotation 3 - Warehouse Leader\01 - Capstone\6_20_2019\MasterLog" & " " & Format(Now(), "mmddyyyy") & ".xlsm")


Else
 'do nothing
 End If


 End Sub

Я хочу, чтобы файлы станции были очищены и СОХРАНЕНЫ (не сохранены как) + мастер-файл был очищен и СОХРАНЕН КАК.

1 Ответ

0 голосов
/ 26 июня 2019

Вам не хватает обратной косой черты: Изменения:

folder = "C:\Users\arocmag\Documents\MasterLog"

до

folder = "C:\Users\arocmag\Documents\MasterLog\"

Кроме того, хорошая обработка ошибок с помощью ScreenUpdating и DisplayAlerts. Слишком часто люди не справляются с этим правильно.

Вам также не нужно делать «Выбор». Раздел

sht.Range("A2:H2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents

можно упростить до:

Range(sht.Range("A2:H2"), sht.Range("A2:H2").End(xlDown)).ClearContents

Читайте о том, как избегать "Selects" в VBA, и вы получите гораздо более простой код, который выполняется намного быстрее.

...