Excel VBA保存工作表,以便在最后一行打开
这应该是简单的死了,但我到目前为止扔了一个空白,我已经search了,没有find答案。
我正在使用VBA创build一个新的工作簿,并且我想保存该工作簿,以便在用户打开包含数据的最后一行时打开它。 这是我迄今为止: –
With ActiveWorkbook 'Added a last row selection so the sheet will open at the bottom of the page - Ash 07/04/14 LastRow = Range("A65536").End(xlUp).Select Rows(ActiveCell.Row).Activate .SaveAs str_DestFolder & str_File, FileFormat:=xlOpenXMLWorkbook, AccessMode:=xlShared .Close End With
不知何故,这是失败的,任何帮助将不胜感激!
激活最后一行后,可以添加以下行:
ActiveWindow.ScrollRow = ActiveCell.Row
所以你的完整的代码将是
With ActiveWorkbook LastRow = Range("A65536").End(xlUp).Select Rows(ActiveCell.Row).Activate ActiveWindow.ScrollRow = ActiveCell.Row .SaveAs str_DestFolder & str_File, FileFormat:=xlOpenXMLWorkbook, AccessMode:=xlShared .Close End With
几个build议
- 应该运行以将工作簿设置为下一次打开的代码应该在
BeforeSave
或Open
Events中运行。 - 最好运行代码自动处理特定工作表(下面示例中的第一张工作表),而不是依赖于处于活动状态的工作表。
- Excell 2007年以后有100万行,所以要么使用
Cells(Row.Count,"A").End(xlup)
或Find
而不是Range(“A65536”)。End(xlup)`。
ThisWorkbook模块的代码(保存时自动运行)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim ws As Worksheet Set ws = Sheets(1) Dim rng1 As Range Set rng1 = ws.Columns("A:A").Find("*", ws.[a1], xlValues, , xlByRows, xlPrevious) Application.Goto rng1 ActiveWindow.ScrollRow = rng1.Row End Sub
LastRow = Wb.Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row Wb.Worksheets("Sheet1").Cells(LastRow, 1).Select With Wb Application.DisplayAlerts = False .SaveAs Filename:="YourFilePath", AccessMode:=xlShared .Close Application.DisplayAlerts = False End With Set Wb = Nothing
尝试这个…