• 締切済み

エクセルワークシートからVBA自動作成の方法

エクセル2007を使用しています。 エクセルワークシートからVBAを自動作成する方法を探しています。 添付のエクセルワークシート01の4行目以降を1行づつ処理し、以下のVBAを自動作成したいです。 〔作成希望VBA〕 Public Sub aaa() sample = (1111, 2222, 3333) test = A End Sub Public Sub bbb() sample = (4444, 5555, 6666) test = B End Sub Public Sub ccc() sample = (7777, 8888, 9999) test = C End Sub 以上よろしくお願いします。

みんなの回答

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.1

このあたりを参考に http://officetanaka.net/excel/vba/vbe/03.htm http://excelfactory.net/excelvbatips/vbe/vbe_1.htm http://questionbox.jp.msn.com/qa2659901.html 左上のボタン→Excelのオプション→セキュリティセンター→マクロの設定で 「VBA プロジェクトオブジェクトモデルへのアクセスを信頼する」 にチェックを入れます。 Sub Test() Dim i As Long Dim j As Long Dim flag As Boolean Dim Values As Variant Dim bottom As Long bottom = Range("A65536").End(xlUp).Row Values = Range("A4:E" & bottom) With ActiveWorkbook.VBProject For i = 1 To .VBComponents.Count '標準モジュールの有無を調べる If .VBComponents(i).Type = 1 Then flag = True Exit For End If Next i '存在しない場合は標準モジュールを追加する If Not flag Then .VBComponents.Add 1 i = .VBComponents.Count End If With .VBComponents(i) .Activate 'コードを書き込む ハードコーディングなので汎用性はないです With .CodeModule For j = LBound(Values) To UBound(Values) .InsertLines 1 + 8 * (j - 1), "Public Sub " & Values(j, 1) & "()" .InsertLines 2 + 8 * (j - 1), "" .InsertLines 3 + 8 * (j - 1), "sample = (" & Values(j, 2) & "," & Values(j, 3) & "," & Values(j, 4) & ")" .InsertLines 4 + 8 * (j - 1), "" .InsertLines 5 + 8 * (j - 1), "test = " & Values(j, 5) .InsertLines 6 + 8 * (j - 1), "" .InsertLines 7 + 8 * (j - 1), "End Sub" .InsertLines 8 + 8 * (j - 1), "" Next j End With End With End With End Sub

yama225tar
質問者

お礼

ご丁寧にありがとうございます。 早速やってみます。