2015年1月26日月曜日

エクセルで、新規作成シートのとき、他のシートからコピーしたいとき

1 マクロが必要なので、特定のフォルダを信頼できる場所に設定します。
  オプション>セキュリティセンター >セキュリティセンターの設定で信頼できる場所というところに特定のフォルダを指定するといいようです。
2 開発モードを有効にして
 左欄から必要なシートを選択し、右クリック>コードの表示>コンボボックスからWorksheetとActivateを選択すると、イベントハンドラの設定ができます。
 各シートに、以下のようなVBAコードを入力します。
 指定した範囲すべてのセルが未入力のときだけ、コピーする機能です。
Option Explicit
Private Sub Worksheet_Activate()
Dim rc As Integer
Dim rng As Range
Set rng = Range(Cells(3, 3), Cells(33, 3))
 If WorksheetFunction.CountBlank(rng) = 31 Then
  rc = MsgBox("新規作成のシートです。コピーしますか?", vbYesNo)
  If rc = vbYes Then
   Call Macro1(ActiveSheet.Name)
  End If
 Else
 End If
End Sub

標準モジュールのModule1には
Sub Macro1(tuki)
    Workbooks.Open Filename:=Range("設定!A1")
    Sheets(tuki).Select
    Range("M4:M34").Select
    Selection.Copy
    ActiveWindow.Close
    Range("C3").Select
    ActiveSheet.Paste
End Sub
を入力しておきます。設定!A1には、コピー元のファイルパスを入力しておきます。

VBAもけっこう、いろいろ手軽にできて、便利です。

0 件のコメント:

コメントを投稿