VBAを使用してExcelフォームの値を別のブックに取り込もうとしましたが、これは私が使用しているVBAコードです:次の行を置き換えるのではなく、次の行に保存する方法
Sub RunMe()
Dim lRow, lCol As Integer
Sheets("Sheet1").Select
lRow = Range("A" & Rows.Count).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
For Each cell In Range(Cells(1, "B"), Cells(1, lCol))
Union(Range("A1:A" & lRow), Range(Cells(1, cell.Column), Cells(lRow, cell.Column))).Copy
Workbooks.Add
Range("A1").PasteSpecial
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\john\Desktop\Testforvba" & cell.Value & ".xls"
ActiveWorkbook.Close
Next cell
Application.CutCopyMode = False
End Sub
しかし、事は、私は、フォーム上のサンプル値を入力した後にこのコードを実行すると、手動でマクロを実行すると、それは新しいファイルを作成し、サンプルデータを保存するように私が上で入力した作品ということですフォームワークブック。 しかし、マクロを再実行しようとすると、以前のすべてのデータを置き換えることを意味するファイルAGAINが再作成されることに気付きました。 VBAはとても勇気があります。誰でも手に感謝してください。
PS私は私の個人的なワークブック
コードを実行するたびに新しいファイルを作成しています。まずファイルを探して、それが存在しない場合は作成してください。 – 0m3r
サイドノート:(**)** **タイプを指定する必要があります**すべての**変数。 'Dim lRow、lCol As Integer'を宣言すると' lCol'は 'Interger'だけで' IRow'は 'Variant'のままです。また、行のカウント変数に 'Long'を使用する必要があります(古い16bit APIと通信しない限り、決して整数を使用しないでください):' Dim lRow As Long、lCol As Long'。 (2)[ワークシートを仮定しない](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9218/never-assume-the-worksheet)は常にセル/範囲を完全修飾します。 –
(3)[選択を避ける](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9292/avoid-using-selector-activate) (4)[Always use Option Explicit](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices)を参照して、すべての変数が正しく宣言されていることを確認してください。 –