1件入力し終えた後、ボタンを押すとファイル内の別シートに保存されます。
この中の内容の一部を、別の「エクセル02ァイル」を新たに作成し、画像のような項目が1行目からボタンを押す度に2行目、3行目と溜まっていくようになるようなエクセルをどのように作成するかをご教授ください。
(画像内のセルの位置は実際のファイルのもので、この例となる請求書画像の位置とは異なります)
Private Sub CommandButton1_Click() Dim TBook As Workbook Set TBook = Workbooks.Open("エクセル02ファイル.xls") a = TBook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row If TBook.Sheets(1).Cells(1, 1) <> "" Then a = a + 1 TBook.Sheets(1).Cells(a, 1) = Range("H1") TBook.Sheets(1).Cells(a, 2) = Range("C5") TBook.Sheets(1).Cells(a, 3) = Range("D10") TBook.Sheets(1).Cells(a, 4) = Range("D11") 期間 = Range("D11") - Range("D10") TBook.Sheets(1).Cells(a, 5) = 期間 TBook.Sheets(1).Cells(a, 6) = Range("D7") 判別 = 0 If Range("D7") <= 10000 Then 判別 = 5 If Range("D7") <= 5000 Then 判別 = 4 If Range("D7") <= 3000 Then 判別 = 3 If Range("D7") <= 1000 Then 判別 = 2 If Range("D7") <= 500 Then 判別 = 1 TBook.Sheets(1).Cells(a, 7) = 判別 TBook.Sheets(1).Cells(a, 8) = Range("B6") TBook.Sheets(1).Cells(a, 9) = Range("C6") TBook.Close SaveChanges:=True End Sub
ボタンを押したときの処理を 上記のようにすればよいでしょう。
Set TBook = Workbooks.Open("エクセル02ファイル.xls")
ここに エクセルファイル名を入れればいいです。
新たに作成とありますが、追加していくのであれば、最初に手動でファイルを作ったほうがいいでしょうね。
あと シートは 最初のシートになっています。
シート名が固定ならば それにしてもいいですよ。
TBook.Sheets(1).Cells(a, 1)
↓
TBook.Sheets("シート名").Cells(a, 1)
Private Sub CommandButton1_Click() Dim TBook As Workbook Set TBook = Workbooks.Open("エクセル02ファイル.xls") a = TBook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row If TBook.Sheets(1).Cells(1, 1) <> "" Then a = a + 1 TBook.Sheets(1).Cells(a, 1) = Range("H1") TBook.Sheets(1).Cells(a, 2) = Range("C5") TBook.Sheets(1).Cells(a, 3) = Range("D10") TBook.Sheets(1).Cells(a, 4) = Range("D11") 期間 = Range("D11") - Range("D10") TBook.Sheets(1).Cells(a, 5) = 期間 TBook.Sheets(1).Cells(a, 6) = Range("D7") 判別 = 0 If Range("D7") <= 10000 Then 判別 = 5 If Range("D7") <= 5000 Then 判別 = 4 If Range("D7") <= 3000 Then 判別 = 3 If Range("D7") <= 1000 Then 判別 = 2 If Range("D7") <= 500 Then 判別 = 1 TBook.Sheets(1).Cells(a, 7) = 判別 TBook.Sheets(1).Cells(a, 8) = Range("B6") TBook.Sheets(1).Cells(a, 9) = Range("C6") TBook.Close SaveChanges:=True End Sub
ボタンを押したときの処理を 上記のようにすればよいでしょう。
Set TBook = Workbooks.Open("エクセル02ファイル.xls")
ここに エクセルファイル名を入れればいいです。
新たに作成とありますが、追加していくのであれば、最初に手動でファイルを作ったほうがいいでしょうね。
あと シートは 最初のシートになっています。
シート名が固定ならば それにしてもいいですよ。
TBook.Sheets(1).Cells(a, 1)
↓
TBook.Sheets("シート名").Cells(a, 1)
エラーですけど、どの行で エラーになりますでしょうか?
また、シートに保存とありますが、シートに保存の箇所は なくても動作するように作ってあります。
時間が経過し申し訳ありません。一旦、エクセル02ファイル.xlsに書き出すところまで、おこなうことができました。
一件を入力しボタンを押すと、エクセル02ファイル.xlsが開き、その1行目に依頼の通りに入力がされます。ありがとうございました。
ですが、2件目を入力する為に、1件目の案件を別シートに保存し、再度ボタンを押しますと、
「エクセル02ファイル.xlsは、既に開いています。2重に開くと、これまでの内容が破棄されます」と表示されます。
「はい」とすると、前回の1件目の1行目内容が消え、その1行目の上に、2件目の内容が入ります。
「いいえ」としますと、「実行時エラーOpenメソッドが失敗しました。Worksbookオブジェクト」と表示されます。
大変時間が経過しましたが、申し訳ありませんが質問させていただきました。誠に勝手を申しますが、何とぞよろしくおねがい致します。
エラーですけど、どの行で エラーになりますでしょうか?
2013/09/04 23:07:05また、シートに保存とありますが、シートに保存の箇所は なくても動作するように作ってあります。
時間が経過し申し訳ありません。一旦、エクセル02ファイル.xlsに書き出すところまで、おこなうことができました。
2014/02/08 17:42:07一件を入力しボタンを押すと、エクセル02ファイル.xlsが開き、その1行目に依頼の通りに入力がされます。ありがとうございました。
ですが、2件目を入力する為に、1件目の案件を別シートに保存し、再度ボタンを押しますと、
「エクセル02ファイル.xlsは、既に開いています。2重に開くと、これまでの内容が破棄されます」と表示されます。
「はい」とすると、前回の1件目の1行目内容が消え、その1行目の上に、2件目の内容が入ります。
「いいえ」としますと、「実行時エラーOpenメソッドが失敗しました。Worksbookオブジェクト」と表示されます。
大変時間が経過しましたが、申し訳ありませんが質問させていただきました。誠に勝手を申しますが、何とぞよろしくおねがい致します。