2016-04-26 7 views
0

ひとつ質問したい。 私は[保存]ボタンをクリックし、「C:\ new folder \」にExcelファイルとして保存する簡単なコードを書きました。私が今問題を抱えているのは、オリジナルのExcelシートに新しい行を追加すると、元のExcelシートの最後の行を「C:\ new folder \」に保存する方法です。 オリジナルのExcelシートから1行だけを含むように保存されるシートが必要です。私は最後の行を必要とする:「新しいフォルダ\ \ C」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シートを保存します。

どうすればこの問題を解決できますか?

+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

マクロレコーダーからたくさんの「選択」、悪い習慣を使用する必要はありません。 –

+0

あなたの返事をありがとう、それは有用ですが、私はまだ上記のコードでCells.Selectの行にエラーがあります。保存ボタンを押すと、エラーメッセージが表示されたらデバッグするように求められます。実行時エラー '1004':RangeクラスのSelectメソッドが失敗しました。最後の行は正しくコピーされますが、 "C:\ New Folder \"には保存されません。この質問を解決するために私たちを助けることができる人がいますか? –

0

グレッグのコードは、(ファイルが正しく保存されなかった理由を考え出したと仮定して)あなたのために働くことのように聞こえるが、絶対に必要な場合を除き.Select方法を使用しないように、より効率的です。

あなたはあなたの元のコードと機能的に非常に近かった、とあなたの元のコードにわずか4行を追加することで、あなたがやりたいことができます:

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 
関連する問題