我在文件夾中有一個「工作簿A」文件。每兩週發送一次更新的版本給我。我想從另一個工作簿「工作簿B」打開此工作簿,同時刪除「工作簿A」中的空白行。使用excel激活工作表VBA
打開和刪除操作將通過使用宏來進行。
這是我迄今爲止的代碼。
Sub RemoveEmptyRows()
' this macro will remove all rows that contain no data
' ive named 2 variables of data type string
Dim file_name As String
Dim sheet_name As String
file_name = "C:\Users\Desktop\Workstation_A\Workbook_A.xlsm"
'Change to whatever file i want
sheet_name = "Worksheet_A" 'Change to whatever sheet i want
' variables "i" and "LastRow" are needed for the for loop
Dim i As Long
Dim LastRow As Long
' we set wb as a new work book since we have to open it
Dim wb As New Workbook
' To open and activate workbook
' it opens and activates the workbook_A and activates the worksheet_A
Set wb = Application.Workbooks.Open(file_name)
wb.Sheets(sheet_name).Activate
' (xlCellTypeLastCell).Row is used to find the last cell of the last row
' i have also turned off screen updating
LastRow = wb.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Application.ScreenUpdating = False
' here i am using a step
' the step is negative
' therefore i start from the last row and go to the 1st in steps of 1
For i = LastRow To 1 Step -1
' Count A - Counts the number of cells that are not empty and the
' values within the list of arguments (wb..ActiveSheet.Rows(i))
' Afterwards deleting the rows that are totally blank
If WorksheetFunction.CountA(wb.ActiveSheet.Rows(i)) = 0 Then
wb.ActiveSheet.Rows(i).EntireRow.Delete
End If
Next i
' used to update screen
Application.ScreenUpdating = True
End Sub
工作片名稱包含Worksheet_A
作爲其名稱後跟一個日期的一部分。例如Worksheet_A 11-2-15
。
在我的代碼,我已經賦值的變量sheet_name
到Worksheet_A
sheet_name = "Worksheet_A"
進一步壓低我用
.Sheets(sheet_name).Activate
激活工作表。我覺得有下面一行的一個問題:
sheet_name = "Worksheet_A"
因爲sheet_name
是不完全Worksheet_A它只包含Worksheet_A作爲其名稱的一部分。
這是造成problem.The工作簿中打開,但不會出現空白行的刪除。
此外還會顯示一條錯誤消息。
運行時錯誤9:下標超出範圍。
如何修改我的代碼以便工作表被激活並執行宏操作?
是的,我只有一張工作表 – tania 2015-02-23 05:33:37
非常感謝你 它完美地工作 這真的很有幫助 謝謝你花時間給我啓發。這非常有教育意義。 – tania 2015-02-23 05:53:07