ลดขนาดไฟล์ที่เก็บ module ไว้มากๆ

|

ในงานที่ผมใช้ VBA นั้น ผมจะใช้ไฟล์ๆหนึ่ง เป็นที่รวบรวม module ของทั้งระบบ ทำให้มี module รวมๆกันเป็นร้อยเลยทีเดียว ที่สำคัญ...ผมเขียนไป ทดลองไป แก้ไปเรื่อยๆ ขนาดไฟล์ก็เพิ่มขึ้นเรื่อยๆ จึงเรียกเปิดใช้งานได้ช้าลงเรื่อยๆอีกเช่นกัน มาดูวิธีแก้ไขกันครับ...

จากการที่ชอบค้นคว้าของผม ทำให้บังเอิญไปพบบทความอันหนึ่ง ที่แนะนำวิธีทำให้ไฟล์โค้ดมีขนาดเล็กลง อันเกิดจากการลองผิดลองถูกขณะเขียนโค้ด ซึ่งต้องขออภัยจริงๆว่า จำไม่ได้ว่ามาจากใหน ไทยหรือเทศ แต่ก็ต้องขอขอบคุณ ไว้ ณ ที่นี้ด้วยครับผม

หลักการก็คือ

  1. export module ออกไปให้หมด ให้เหลือแต่ไฟล์เปล่าๆ
  2. save ไฟล์เปล่าๆนี้ 1 ครั้ง
  3. import module กลับเข้าไปเหมือนเดิม
  4. save อีก 1 ครั้ง

ทำตามนี้แล้ว จะเห็นขนาดไฟล์ลดลงอย่างชัดเจนครับ เนื่องจากว่าไฟล์รวมโค้ดของผม ประกอบด้วย module เป็นร้อยดังกล่าว มานั่ง export, import ทีละ module คงไม่ไหวครับ เลยได้ตัวช่วยออกมาดังนี้

 Sub ExportModule()
    Dim xModule, ModuleName
    Application.DisplayAlerts = False
   
    If Dir("c:\modules", vbDirectory) = "" Then
      MkDir "c:\modules"
    End If
   
    For Each xModule In ThisWorkbook.VBProject.VBComponents
      Application.StatusBar = xModule.Name
      If xModule.Type = 1 Then
        If xModule.Name <> "Module000" Then
          xModule.Export filename:="c:\modules\" & xModule.Name
          Set ModuleName = ThisWorkbook.VBProject.VBComponents(xModule.Name)
          ' remove module from thisworkbook
          ThisWorkbook.VBProject.VBComponents.Remove ModuleName
          '
        End If
      End If
  Next
  Application.DisplayAlerts = True
  Application.StatusBar = False
End Sub

Sub ImportModule()
    Dim xModule As String
    xModule = Dir("c:\modules\*")
    Application.DisplayAlerts = False
    Do Until xModule = ""
      ThisWorkbook.VBProject.VBComponents.Import "c:\modules\" & xModule
      Kill "c:\modules\" & xModule
      xModule = Dir()
    Loop
    RmDir "c:\modules"
    Application.DisplayAlerts = True
End Sub

หน้่าตาดั่งข้างบนละครับ มีข้อที่ต้องระวังอยู่นิดนึง คือจะเห็นว่า ผมยกเว้น module000  เอาไว้ เพราะ module000 นี้ วางโค้ด 2 โค้ดนี้ไว้นั่นเองครับผม


โค้ดตัวอ้วน สามารถทำให้ตัวเล็กลงได้ แต่ตัวคนเขียนโค้ด ชักจะอ้วนขึ้นเสียเองแล้วละครับ เพราะวันๆเอาแต่นั่งกับนั่งเขียนโค้ดนี่แหละ...ออกกำลังกายกันบ้างนะครับ สวัสดีครับผม Laughing

About this Entry

This page contains a single entry by มิตรภาพ published on July 12, 2009 12:25 AM.

ใคร หรือคอมเครื่องใหน กำลังเปิดไฟล์นี้อยู่ในเน็ตเวิร์ค was the previous entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.32-en