1377686334 この画像にあります「エクセル01ファイル」という請求書があります。

1件入力し終えた後、ボタンを押すとファイル内の別シートに保存されます。
この中の内容の一部を、別の「エクセル02ァイル」を新たに作成し、画像のような項目が1行目からボタンを押す度に2行目、3行目と溜まっていくようになるようなエクセルをどのように作成するかをご教授ください。
(画像内のセルの位置は実際のファイルのもので、この例となる請求書画像の位置とは異なります)

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/08/30 18:54:15
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント1000pt
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)

他2件のコメントを見る
id:taknt

エラーですけど、どの行で エラーになりますでしょうか?

また、シートに保存とありますが、シートに保存の箇所は なくても動作するように作ってあります。

2013/09/04 23:07:05
id:surippa20

時間が経過し申し訳ありません。一旦、エクセル02ファイル.xlsに書き出すところまで、おこなうことができました。

一件を入力しボタンを押すと、エクセル02ファイル.xlsが開き、その1行目に依頼の通りに入力がされます。ありがとうございました。

ですが、2件目を入力する為に、1件目の案件を別シートに保存し、再度ボタンを押しますと、
「エクセル02ファイル.xlsは、既に開いています。2重に開くと、これまでの内容が破棄されます」と表示されます。

「はい」とすると、前回の1件目の1行目内容が消え、その1行目の上に、2件目の内容が入ります。
「いいえ」としますと、「実行時エラーOpenメソッドが失敗しました。Worksbookオブジェクト」と表示されます。

大変時間が経過しましたが、申し訳ありませんが質問させていただきました。誠に勝手を申しますが、何とぞよろしくおねがい致します。

2014/02/08 17:42:07

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198ここでベストアンサー

ポイント1000pt
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)

他2件のコメントを見る
id:taknt

エラーですけど、どの行で エラーになりますでしょうか?

また、シートに保存とありますが、シートに保存の箇所は なくても動作するように作ってあります。

2013/09/04 23:07:05
id:surippa20

時間が経過し申し訳ありません。一旦、エクセル02ファイル.xlsに書き出すところまで、おこなうことができました。

一件を入力しボタンを押すと、エクセル02ファイル.xlsが開き、その1行目に依頼の通りに入力がされます。ありがとうございました。

ですが、2件目を入力する為に、1件目の案件を別シートに保存し、再度ボタンを押しますと、
「エクセル02ファイル.xlsは、既に開いています。2重に開くと、これまでの内容が破棄されます」と表示されます。

「はい」とすると、前回の1件目の1行目内容が消え、その1行目の上に、2件目の内容が入ります。
「いいえ」としますと、「実行時エラーOpenメソッドが失敗しました。Worksbookオブジェクト」と表示されます。

大変時間が経過しましたが、申し訳ありませんが質問させていただきました。誠に勝手を申しますが、何とぞよろしくおねがい致します。

2014/02/08 17:42:07
id:dawakaki No.2

回答回数797ベストアンサー獲得回数122

ポイント100pt

データ フォームを使用して行を追加、編集、検索、および削除する
http://office.microsoft.com/ja-jp/excel-help/HA102749061.aspx

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません