ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] §Q¥ÎVBComponent°ÊºA·s¼Wªí³æ¡A¦b§Q¥ÎClass°õ¦æ°Ê§@®É¡A¥X²{Automation¿ù»~

[µo°Ý] §Q¥ÎVBComponent°ÊºA·s¼Wªí³æ¡A¦b§Q¥ÎClass°õ¦æ°Ê§@®É¡A¥X²{Automation¿ù»~

§Ú§Q¥Î VBComponent ªº¤è¦¡·s¼W¤F¤@­Óªí³æ

Sub Report_Make_Form1()

          Dim MyNewForm3 As VBComponent

         Set MyNewForm3 = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
        
   
    Print #1, Now & " ¶}©l«Ø¥ß UserForm"
   
    With MyNewForm3
         .Properties("Caption") = "Report_Generate"
         .Properties("Width") = 570
         .Properties("Height") = 350
         .Name = "Report_Generate_Form"
          With .Designer
                       With .Controls.Add("forms.Multipage.1")
                                  .Name = "MultiPage_Step"
                                   .Left = 10
                                   .Top = 5
                                   .Height = 250
                                   .Width = 550
                                   .Font.Name = "Comic Sans MS"
              End With
             ¤§«á´N Multipage ¤¤ªº Page(0)¡BPage(1)¤¤·s¼W¤F¤@¨Ç±±¨î¶µ
              With .Controls.Add("forms.CommandButton.1")
              '«Ø¥ß­Ó Button ¨Ó«ö¤@¨BÅý MultiPage ¨ì¤U¤@­¶
                         .Name = "GoNext_Btn"
                        .Left = 280
                        .Top = 258
                        .Height = 50
                        .Width = 70
                        .Caption = "¤U¤@¨B"
                        .Font.Name = "¼Ð·¢Åé"
                        .Font.Size = 14
              End With

      End With
       Set Class_obj3.MyFormObject1 = MyNewForm3 '.Designer
         Set Class_obj3.MyMultiPage1 = MyNewForm3.Designer.Controls("MultiPage_Step")
      µM«á§Q¥Î Class ¤è¦¡°õ¦æ°Ê§@
       With .CodeModule
                  .InsertLines i + 4, "Set Class_obj3.MyNewGoNextButton1 = Controls(""GoNext_Btn"")"

       End With

  End With


Class 3 ªº¤º®e

Public MyFormObject1 As Object
Public MyMultiPage1 As MSForms.MultiPage

Private Sub MyNewGoNextButton1_Click()
                 With MyMultiPage1
        
                        .Value = .Value + 1
            
             End With

End Sub

¦b°õ¦æ¨ì .Value=.Value+1 ®É´N·|¥X²{ Automation ¥Î¤áºÝ¤¤Â_¤w±Ò°Êª«¥óªº³s½u¡AµM«á¾ã­Ó Excel ´N­«¶}¡A½Ð¥Ø¬O«ç»ò¦^ ¨Æ¡H

¸É¥R¤@¤U¡A§Ú¦³¦b°õ¦æ¦¹¦æ«e§Q¥Î±N­È¦R¨ì¤@­ÓÀɮתº¤è¦¡¬O¥i¥H¦R¥X¥Ø«e¦b­þ¤@­±ªº ~~
Print #1,   MyMultiPage1..Value

TOP

¦^´_ 2# C.F
¸Õ¸Õ¬Ý
  1. Option Explicit
  2. Dim xeVBC As Object
  3. Private Sub Workbook_Open()
  4.     Dim e As Object ' VBComponent
  5.     Set xeVBC = Application.VBE.ActiveVBProject.VBComponents
  6.     For Each e In xeVBC
  7.         Debug.Print e.Name, e.Type   '¼Ò²ÕªºType
  8.         If e.Type <> 100 Then xeVBC.Remove e
  9.     Next
  10.     ¥[¤Jª«¥óÃþ§O¼Ò²Õ
  11.     Report_Make_Form1
  12. End Sub
  13. Private Sub ¥[¤Jª«¥óÃþ§O¼Ò²Õ()
  14.     With ThisWorkbook.VBProject.VBComponents.Add(2) 'vbext_ct_ClassModule
  15.         .Name = "ClassTest"
  16.         With .CodeModule
  17.             .InsertLines 2, "Public WithEvents MyNewGoNextButton1 As MSForms.CommandButton"
  18.             .InsertLines 3, "Private Sub MyNewGoNextButton1_Click()"
  19.             .InsertLines 4, "With MyNewGoNextButton1.Parent.MultiPage_Step"
  20.             .InsertLines 5, "If .Value = .Pages.Count - 1 Then"
  21.             .InsertLines 6, ".Value = 0"
  22.             .InsertLines 7, "Else"
  23.             .InsertLines 8, ".Value = .Value + 1"
  24.             .InsertLines 9, "End If"
  25.             .InsertLines 10, "End With"
  26.             .InsertLines 11, "End Sub"
  27.        End With  '
  28.   End With
  29. End Sub
  30. Sub Report_Make_Form1()
  31.     Dim MyNewForm3  As Variant, I
  32.     'Set MyNewForm3 = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
  33.     Set MyNewForm3 = ThisWorkbook.VBProject.VBComponents.Add(3)
  34.          '***********************************
  35.          'vbext_rk_Project       ¤@¯ë¼Ò²Õ
  36.          'vbext_ct_ClassModule   ª«¥óÃþ§O¼Ò²Õ
  37.          'vbext_ct_MSForm        ªí³æ¼Ò²Õ
  38.          '¦¹°Ñ¼Æªº±`¼Æ ¶·¦b [¤u¨ã] ¥\¯àªí¤Þ¥Î¶µ¥Ø¡C
  39.          '¤Þ¥Î "Microsoft Visual Basic ªºÀ³¥Îµ{¦¡ÂX¥R"
  40.          '***********************************
  41.     Close #1
  42.     Open "d:\MyNewForm.txt" For Append As #1
  43.     Print #1, Now & " ¶}©l«Ø¥ß UserForm"
  44.     Close #1
  45.     ' Shell "notepad.exe d:\MyNewForm.txt", vbMaximizedFocus '****¶}±Ò¤å¦rÀÉ
  46.     With MyNewForm3
  47.          .Properties("Caption") = "Report_Generate"
  48.          .Properties("Width") = 570
  49.          .Properties("Height") = 350
  50.          .Name = "Report_Generate_Form"
  51.           With .Designer
  52.                 With .Controls.Add("forms.Multipage.1")
  53.                     .Name = "MultiPage_Step"
  54.                     .Left = 10
  55.                     .Top = 5
  56.                     .Height = 250
  57.                     .Width = 550
  58.                     .Font.Name = "Comic Sans MS"
  59.               End With
  60.                 '¤§«á´N Multipage ¤¤ªº Page(0)¡BPage(1)¤¤·s¼W¤F¤@¨Ç±±¨î¶µ
  61.               With .Controls.Add("forms.CommandButton.1")
  62.              '«Ø¥ß­Ó Button ¨Ó«ö¤@¨BÅý MultiPage ¨ì¤U¤@­¶
  63.                          .Name = "GoNext_Btn"
  64.                         .Left = 280
  65.                         .Top = 258
  66.                         .Height = 50
  67.                         .Width = 70
  68.                         .Caption = "¤U¤@¨B"
  69.                         .Font.Name = "¼Ð·¢Åé"
  70.                         .Font.Size = 14
  71.               End With
  72.       End With
  73.       ' Set Class_obj3(1).MyFormObject1 = MyNewForm3 '.Designer
  74.       ' Set Class_obj3(2).MyMultiPage1 = MyNewForm3.Designer.Controls("MultiPage_Step")
  75.      ' µM«á§Q¥Î Class ¤è¦¡°õ¦æ°Ê§@
  76.        With .CodeModule
  77.                   .InsertLines 2, "Dim Class_obj As New ClassTest"
  78.                   .InsertLines 3, "Private Sub UserForm_Initialize()"
  79.                   .InsertLines 4, "Set Class_obj.MyNewGoNextButton1 = GoNext_Btn"
  80.                   .InsertLines 5, "End Sub"
  81.        End With  '
  82.   End With
  83. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

ÁÂÁ§A ~~~ §Ú¸Õ¤F¡AªGµM¨S°ÝÃD ~~
¦ý¦]¬°§ÚÁٻݭn±N¾ã­Ó Form ³o­Ó¶Ç¹L¨ÓClass¡A¦]¬°»Ý­n¦A³B²z ~~
©Ò¥H·Q»¡¬O§_¥i¥H±N³o­ÓForm¶Ç¨ì MyFormObject1«á¦A§@³B²z
MyFormObject1

TOP

§Ú¤S¸Õ¤F¥t¤@­Ó¤èªk¡A¦b
Sub Report_Make_Form1()
±NÅÜ¼Æ TestVar1="MultiPage_Step"
¥t¥~¦A ¦h³]©w
Set Class_obj3.MyFormObject1 = MyNewForm3.Designer

©ó Class 3 ¤¤

¥Î MyFormObject1.Controls(TestVar1).Value=MyFormObject1.Controls(TestVar1).Value + 1
«o¥X²{ 'Value'¤èªk ('IMultiPage'ª«¥ó)¥¢±Ñ¡A½Ð°Ý¬O¦ó­ì¦]

TOP

¦^´_ 5# C.F
¸Õ¸Õ¬Ý
  1. Private Sub ¥[¤Jª«¥óÃþ§O¼Ò²Õ()
  2.     Dim i As Integer, MyString As String
  3.     With ThisWorkbook.VBProject.VBComponents.Add(2) 'vbext_ct_ClassModule
  4.         .Name = "ClassTest"
  5.         With .CodeModule
  6.              .DeleteLines 1
  7.              Close #1
  8.              Open "d:\ClassTest.txt" For Input As #1
  9.              Do While Not EOF(1)    ' °õ¦æ°j°éª½¨ìÀɧÀ¬°¤î¡C
  10.                 i = i + 1
  11.                 Input #1, MyString     ' ±N¸ê®ÆŪ¤JÅܼƤ¤¡C
  12.                 .InsertLines i, MyString
  13.             Loop
  14.             Close #1    ' Ãö³¬ÀɮסC
  15.        End With  '
  16.   End With
  17. End Sub
½Æ»s¥N½X
¤å¦rÀÉ d:\ClassTest.txt
  1. Option Explicit
  2. Public WithEvents MyNewGoNextButton1 As MSForms.CommandButton
  3. Private MyForms As Object
  4. Private Sub MyNewGoNextButton1_Click()
  5. With MyNewGoNextButton1.Parent.MultiPage_Step
  6. If .Value = .Pages.Count - 1 Then
  7. .Value = 0
  8. Else
  9. .Value = .Value + 1
  10. End If
  11. MsgBox MyForms.Caption & "  " & .Pages(.Value).Caption
  12. End With
  13. End Sub
  14. Property Set Set_Form(PP As Object)
  15. Set MyForms = PP
  16. MyForms.Caption = "Test " & Time
  17. End Property
½Æ»s¥N½X
  1. Private Sub Report_Make_Form1()
  2.     Dim MyNewForm3  As Variant, i As Integer, MyString As String
  3.     Set MyNewForm3 = ThisWorkbook.VBProject.VBComponents.Add(3)
  4.     With MyNewForm3
  5.          With .CodeModule
  6.             .DeleteLines 1
  7.              Close #1
  8.              Open "d:\Report_Make_Form1.txt" For Input As #1
  9.              Do While Not EOF(1)    ' °õ¦æ°j°éª½¨ìÀɧÀ¬°¤î¡C
  10.                 i = i + 1
  11.                 Input #1, MyString     ' ±N¸ê®ÆŪ¤JÅܼƤ¤¡C
  12.                 .InsertLines i, MyString
  13.             Loop
  14.             Close #1    ' Ãö³¬ÀɮסC
  15.        End With
  16.        '
  17.        'Ä~Äòªºµ{¦¡½X
½Æ»s¥N½X
¤å¦rÀÉ d:\Report_Make_Form1.txt
  1. Option Explicit
  2. Dim Class_obj As New ClassTest
  3. Private Sub UserForm_Initialize()
  4.     Set Class_obj.MyNewGoNextButton1 = GoNext_Btn
  5.     Set Class_obj.Set_Form = Me
  6. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

        ÀR«ä¦Û¦b : §ïÅܦۤv¬O¦Û±Ï¡A¼vÅT§O¤H¬O±Ï¤H¡C
ªð¦^¦Cªí ¤W¤@¥DÃD