ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel VBA 製作所コミュのファイルを閉じるときに別のブックに転記するには

  • mixiチェック
  • このエントリーをはてなブックマークに追加
エクセル2010を使っています
エクセルで作業用のブック(以下ブックA)を閉じるとき自動的に記録・参照用のブック(以下ブックB)に自動的に記録するにはどうすればいいですか Workbook_BeforeClose というイベントマクロに設定すればいいという話ですが
問題点は 追加した分だけ転記して行きたいのでどうやってそれを判断させるかです 基本的に行方向に追加していきます 

あと列も全部ではなく20列だけ記録して行きたいとおもってます
 説明がわかりにくくすいませんがよろしくお願いします

コメント(15)

具体的なデータと何がわからないかを示してください。
>>[1] ありがとうございます 具体的なデータというとどんなことでしょうか
後ほかのサイトでVBAのコードを教えてもらったのですが わからないことがあってそれはシート全部ではなく特定の範囲のみ転記するようにしたいのと 2回目以降は追加した分のみ転記するようにしたいので
どうやってそれを判断させるかで困ってます。わかりにくくてすいませんがよろしくお願いします
>>[2]
ミスキタさんが仰りたいのは、データは1列しかないのか、複数列あるのか、複数列あるならどこからどこまでを転記したいのか、などを示してほしいということだと思います。
>>[3]  そういう意味ですね 
データは複数列(A列〜AM列)ありその内D〜AMを転記したいです 理解が下手ですいません
どれどれ・・と、コードを書いてみました。ブルー☆山中さんの希望の仕様とはちょっと(かなり!?)違うけれども。(写真参照下さいね。)

写真のように、転記日付の列を見て、空欄だったら転記して、日付を入れるようにしてみました。ブルー☆山中さんのためは、もちろんですが、自分の勉強のためです。はい。(久々にマクロをいじくった・・。)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Const ToBook = "ToBook.XLS"
 Dim FromBook As String
 Dim i As Integer
 Dim j As Integer
 Dim i2 As Integer
 Dim j2 As Integer
 Dim last_i As Integer
 Dim last_i2 As Integer
 
 FromBook = ThisWorkbook.Name
 
 last_i = Workbooks(FromBook).Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
 last_i2 = Workbooks(ToBook).Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

 Workbooks(FromBook).Sheets("Sheet1").Activate
 i2 = last_i2
 For i = 2 To last_i
  If Cells(i, "E") = "" Then
   i2 = i2 + 1
   For j = 2 To 4
    j2 = j - 1
    Workbooks(ToBook).Sheets("Sheet1").Cells(i2, j2) = Cells(i, j)
   Next
   Cells(i, "E") = Date
  End If
 Next

End Sub
>>[6]
僕も同じように日付(転記した日もしくはデータ追加した日)を使うかなと思っていました。
ただもし日付を入れるなら、転記日付を基準に転記するデータかどうかを判定しますね。
行数だと、もしどちらかのブックで一部データが削除された場合などに対応できませんし。
>>[6] コードありがとうございます
メッセージでも送りましたが転記先のファイルのパスってどの部分に書けばいいでしょうか
また転記の範囲はどこで指定すればいいですか。色々すいません
>>[8]
私の書いたコードには、転記先のファイルを開いても、閉じていません。と、言うことは、このままで使うなら、ご自分で、開いたり・閉じたり・・と言うことになります。

For j = 2 To 4 が、転記の範囲ですね。

出かける前なので、簡単ですみません・・。(早く帰ってきたら、もう少し書きますかねえ・・。何も書かないかも知れませんけれども・・。)
トピ主のブルー☆山中さんの丸投げはわかっていましたけど、ご自分では、調べること・考えることは苦手のタイプだと思うので、あとは宜しくお願いしますね!>ブルー☆山中さん&皆様
>>[11] 返信遅くなりすいません For j = 2 To 4 と言うことは2列目から4列目ということなんですか

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel VBA 製作所 更新情報

Excel VBA 製作所のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。