2016-04-26 43 views
0

我想問一個問題。 我寫了一個簡單的代碼,點擊保存按鈕,然後保存爲「C:\ new folder \」中的excel文件。現在我遇到的問題是如果我在原始Excel表格中添加新行,如何將原始Excel表格的最後一行保存在「C:\ new folder \」中。 我想要保存的表格只包含一行,從原來的Excel表格。如何在excel vb中只保存最後一行excel數據?

Sub Increment() 
    Range("A1").Value = Range("A1").Value + 1 
End Sub 

Private Sub CommandButton1_Click() 

    Dim Path As String 
    Dim FileNane1 As String 
    Dim FileName2 As String 
    Path = "C:\new folder\" 
    Call Increment 
    FileNane1 = Range("A1").Value 
    FileName2 = Range("B1") 

    ActiveWorkbook.SaveAs Filename:=Path & FileNane1 & "-" & FileName2 & ".xls" 

End Sub 

上面將整個excel表格保存在「C:\ new folder \」中,我只需要最後一行。

我該如何解決這個問題?

+0

創建新的書,拉最後一行從源代碼的書,保存新書。 – findwindow

回答

-1

我對你想要做什麼有點困惑,但這應該讓你非常接近(假設我理解正確)。這將選擇最後一行文本,假設A1和最後一行之間的列A中沒有空單元格。

Sub SaveLastLine() 

    'Variable declaration 
     Dim WB As Workbook, _ 
      filename As String 

     'Turn off screen updating and alerts 
     Application.ScreenUpdating = False 
     Application.DisplayAlerts = False 
     'Make a copy of the last line of active sheet 
     newName = ActiveSheet.Name 
     Range("A1").Select 
     Selection.End(xlDown).Select 
     Range(Selection, Selection.End(xlToRight)).Select 
     Selection.Copy 
     Workbooks.Add 
     ActiveSheet.Paste 
     Cells.Select 
     Cells.EntireColumn.AutoFit 
     Range("A1").Select 
     Set WB = ActiveWorkbook 
     filename = newName & ".xlsx" 
     WB.SaveAs filename:="C:\New Folder\" & filename, FileFormat:=51 

     'Restore screen updating and alerts 
     Application.DisplayAlerts = True 
     Application.ScreenUpdating = True 

End Sub 
+0

你不需要使用如此多的'select',來自宏記錄器的壞習慣...... –

+0

感謝您的回覆,這很有幫助,但是我仍然在上面的代碼中選擇了Cells.Select。當我按下保存按鈕我被要求調試,如果是的話,它會顯示錯誤消息運行時錯誤'1004':選擇範圍類失敗的方法。除了它正確複製最後一行,但它不會將它保存在「C:\ New Folder \」中。有沒有人可以幫助我們解決這個問題? –

0

雖然它聽起來像格雷格的代碼可能爲你工作(假設你想通了,爲什麼文件沒有正確保存)更有效地避免使用.Select方法除非絕對必要的。

你是非常接近的功能與你的原代碼,並且可以做你想做的僅僅加入四行你原來的代碼:

Private Sub CommandButton1_Click() 

    Dim Path As String 
    Dim FileName1 As String 
    Dim FileName2 As String 

    Path = "C:\new folder\" 
    Call Increment 
    FileName1 = Range("A1").Value 
    FileName2 = Range("B1") 

    '~~>find and copy the last row 
     Range("A" & ActiveSheet.Rows.Count).End(xlUp).EntireRow.Copy 

    '~~>add a new workbook and paste the content before saving 
     Workbooks.Add 
     ActiveWorkbook.ActiveSheet.PasteSpecial 

    ActiveWorkbook.SaveAs filename:=Path & FileName1 & "-" & FileName2 & ".xls" 

    '~~>close the new workbook 
     ActiveWorkbook.Close (False) 

End Sub