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议

  • 应该运行以将工作簿设置为下一次打开的代码应该在BeforeSaveOpen 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 

尝试这个…