วันเสาร์ที่ 23 พฤศจิกายน พ.ศ. 2556

การห้ามย้ายเซลล์ (Drag) เฉพาะไฟล์ที่กำลังใช้งาน ของ Excel

ปัญหา
ปกติเมื่อมีการเรียกใช้งาน Application.CellDragAndDrop = False จะทำให้ ไฟล์ของ Excel ทุกไฟล์ หรือ ทุก Workbook ที่เปิดใช้งาน ไม่สามารถ ลากเซลลไปวางไว้ที่ไหนได้ ถ้าต้องการห้ามเฉพาะไฟล์ หรือ Workbook ที่กำลังใช้งาน หรือ Active Workbook เท่านั้น จะทำอย่างไร

หลักการ
คำสั่งดังกล่าว เป็นระดับ Application จึงมีผลต่อทุกไฟล์ที่เปิด ถ้าต้องการบังคับเฉพาะไฟล์ หรือเฉพาะ Workbook จึงต้องมีวิธีการ กำหนดให้บังคับเฉพาะชื่อไฟล์ที่ระบุเท่านั้น

วิธีการ
  1. เปิดไฟล์ใหม่ บันทึกเป็นไฟล์ xlsm โดยใช้ชื่อ noDrag
  2. เปิดหน้าจอเขียนโค้ด (Alt + F11)
  3. สร้างโมดูลใหม่ โดยไปที่ Insert > Module
  4. Excel จะตั้งชื่อให้เป็น Module1 ให้คัดลอกโค้ดนี้ไปวาง
    Dim X As New Class1
    Sub InitializeApp()
    '   Called by Workbook_Open
        Set X.App = Application
    End Sub
  5. สร้าง Class Module ใหม่ โดยไปที่ Insert > Class Module
  6. Excel จะตั้งชื่อว่า Class1 ให้ใช้ชื่อนี้ จะได้ไม่ต้องไปเปลี่ยนในโค้ด
  7. คัดลอกโค้ดต่อไปนี้ ลงใน Class1
    Public WithEvents App As Application
    Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
    '   *** ชื่อไฟล์ที่กำลังใช้งาน ***
        If Wb.Name = "noDrag.xlsm" Then
            Application.CellDragAndDrop = False
        End If
    End Sub
    Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)
    '   *** ชื่อไฟล์ที่กำลังใช้งาน ***
        If Wb.Name = "noDrag.xlsm" Then
            Application.CellDragAndDrop = True
        End If
    End Sub
  8. ดับเบิ้ลคลิกที่ สมุดงานนี้ เพื่อเขียนโค้ดสำหรับ สมุดงานนี้ หรือ Workbook นี้
  9. คัดลอกโค้ดนี้ เพื่อให้โค้ดนี้ทำงาน เมื่อเปิดไฟล์นี้ หรือ Workbook นี้
    Private Sub Workbook_Open()
        Call InitializeApp
    End Sub
  10. ปิดหน้าจอเขียนโค้ด และทดสอบ โดยพิมพ์ข้อความลงในเซลล์ เมื่อนำเมาส์ไปวางที่ขอบเซลล์ จะไม่มีเครื่องหมายให้ลากเซลล์ได้ โดยบังคับเฉพาะไฟล์นี้เท่านั้น เมื่อเปิดไฟล์ใหม่ หรือไฟล์อื่น ๆ จะสามารถลากได้ตามปกติ

ที่มา
http://www.mrexcel.com/forum/excel-questions/44522-visual-basic-applications-disable-cut-copy-drag-drop.html

อ่านเพิ่มเคิมที่
http://www.cpearson.com/excel/appevent.aspx

วันศุกร์ที่ 15 พฤศจิกายน พ.ศ. 2556

การสร้างเส้นขอบให้ตัวหนังสือ ด้วย Illustrator

ต้องการสร้างตัวหนังสือที่มีเส้นขอบ และสีพื้น ดังภาพ
จะเห็นว่าลักษณะที่ต้องการ คือ ภายในมีการไล่สี เป็น Gradient จากสีเหลืองเป็นสีฟ้า มีเส้นขอบสีขาว และสีน้ำตาลอยู่รอบนอก

หลักการ

พิมพ์ข้อความ แล้ว เปลี่ยนเป็น Outline จากนั้นใช้ Appearance Panel โดยเปลี่ยนสีพื้น หรือ Fill ให้เป็น Gradient เพิ่ม Fill เป็นสีขาวแล้ว Offset Path จากนั้น จึงเพิ่ม Fill เป็นสีน้ำตาล และ Offset Path อีกครั้งหนึ่ง

วิธีการ

  1. พิมพ์ตัวหนังสือ โดยคลิกที่ Type Tool และพิมพ์ข้อความที่ต้องการ ผมเลือกตัวหนังสือที่มีลักษณะหนา ตัวหนังสือที่ใช้ คือ TP Kubua พัฒนาโดย konkuneng จาก www.f0nt.com โดยกำหนดขนาด 105 px
  2. ใช้ ลูกศรสีดำ เลือก ข้อความที่พิมพ์ แล้วเปิดหน้าจอ Appearance โดยไปที่ Window > Appearance
  3. ต่อไปนี้ จะเปลี่ยนสีของสีพื้นตัวอักษร ที่ด้านล่างของหน้าจอ Appearance ให้คลิกเพิ่ม Fill โดยคลิกปุ่ม Add New Fill
  4. จะเกิดชั้นใหม่ เป็นชั้น Fill เพิ่มขึ้น 1 ชั้น
  5. เปิดหน้าจอ Gradient โดยไปที่ Window > Gradient และเลือก Gradient
  6. ปรับองศาของ Gradient เป็น -90 เพื่อปรับทิศทางของ Gradient จากบนมาสู่ล่าง
  7. เปลี่ยนสีขาวเป็นสีเหลือง สีดำเป็นสีฟ้า โดยคลิกที่สี่เหลี่ยมสีด้านล่าง ของสี และเปลี่ยนสี ดังภาพ
  8. กำหนดตำแหน่งของสีเหลือง โดยคลิกที่สี่เหลี่ยมสีเหลือง และระบุ Location เป็น 25% หรือจะลาก และกะเอาพอประมาณก็ได้
  9. ปิดหน้าจอ Gradient
  10. ที่ Appearance คลิกเพิ่ม Fill โดยคลิกที่ปุ่ม Add New Fill ด้านล่าง
  11. เปลี่ยนสีของ Fill เป็นสีขาว โดยคลิกที่ลูกศร เพื่อเปิดตัวเลือกสี และเลือกสีขาว
  12. ต่อไปจะทำการ Offset ชั้นนี้ เพื่อขยายให้ใหญ่ขึ้นอีก 1 pixel
  13. ขณะที่ชั้น Fill สีขาวกำลังถูกเลือก ให้ไปที่ Effects > Path > Offset Path ... และตั้งค่า ให้ขยายออกไป 1 px
  14. คัดลอกชั้นสีขาว โดยเลือกชั้นสีขาว และคลิกปุ่ม Duplicate Selected Item ที่อยู่ด้านล่าง
  15. เปลี่ยนสีชั้นใหม่ เป็นสีน้ำตาล
  16. เนื่องจากเราคัดลอกจากชั้นเดิม ที่มีการ Offset Path มาแล้ว ดังนั้น ชั้นที่คัดลอกมาใหม่ จึงมี Offset Path ด้วย ให้คลิกที่ Offset Path ของชั้นสีน้ำตาล
  17. กำหนดค่า Offset เป็น 4 px และคลิกเครื่องหมายถูกที่ Preview จะเห็นการเปลี่ยนแปลง
  18. จะได้ผลลัพธ์ที่ต้องการ
     

หมายเหตุ

ในกรณีที่ต้องการปรับตำแหน่งของสระบน หรือสระล่าง ให้ห่างหรือชิดมากขึ้น เมื่อพิมพ์ตัวหนังสือในขั้นตอนที่ 1 เสร็จแล้ว ให้ทำเป็น Outlines โดยไปที่ Type > Create Outlines แล้วใช้ลูกศรสีขาว เลือกเฉพาะส่วนที่ต้องการปรับตำแหน่ง แล้วใช้ปุ่มลูกศร ปรับตามที่ต้องการ

อย่างไรก็ตาม ถ้าทำเป็น Outlines จะไม่สามารถแก้ไขข้อความได้อีก ในกรณีที่ต้องการเปลี่ยนแปลงข้อความเนื่องจากหมดสภาพการเป็น Type ไปแล้ว

วันพุธที่ 13 พฤศจิกายน พ.ศ. 2556

ส่งเมลด้วย VBA ใน Excel ผ่าน Outlook

สมมุติว่า ใน Sheet ชื่อ users มีอีเมล์ ตั้งแต่เซลล์ B6:B20 และต้องการส่งเมล ไปยังอีเมลเหล่านั้น โดยใช้ Outlook จะทำอย่างไร หลักการ ก่อนอื่น ต้องทำการ Config โปรแกรม Outlook ให้สามารถใช้งานได้ก่อน โดยกำหนดว่าจะใช้ Serve ใดเป็นตัวส่งเมล์ จากนั้นจึง เปิด Excel ทำการอ้างอิงไปที่ Microsoft Outlook Object Library แล้วเขียนโค้ดส่งเมล์ และแนบกับปุ่ม เมื่อคลิกปุ่ม จะทำการส่งเมลทั้งหมดที่อยู่ในเซลล์ B6:B20

วิธีการ
  1. เปิด Excel 2010 และเรียกเมนู ผู้พัฒนา โดยไปที่ แฟ้ม > ตัวเลือก > กำหนด Ribbon เอง และเลือก ผู้พัฒนา
  2. อ้างอิง Outlook Object Library ให้เปิดหน้าจอเขียนโค้ด (กด Alt+F11) (หรือ นักพัฒนา > แสดงโค้ด ) แล้วไปที่ Tools > References และเลือก Library ที่ต้องการ
  3. สร้างโมดุลใหม่ โดยไปที่ เมนู Insert > Module
  4. ดับเบิ้ลคลิกที่ Module1 และสร้าง Procedure การเรียกใช้งาน Outlook ดังนี้
    Sub sendMyMail(addrss As String)
        Dim OutApp As Object
        Dim OutMail As Object
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        On Error Resume Next
        With OutMail
            .To = addrss
            .CC = ""
            .BCC = ""
            .Subject = "ทดสอบ"
            .Body = "ส่งเมลด้วย Excel VBA ผ่าน Outlook"
    '      แนบไฟล์
            .Attachments.Add ("C:tmp\myPic.png")
            .Send
        End With
        On Error GoTo 0
        Set OutMail = Nothing
        Set OutApp = Nothing
    End Sub
  5. สร้าง Procedure สำหรับอ่านข้อมูล และเรียกใช้งาน Outlook ดังนี้

    Sub readDataAndSend()
    Dim Counter As Long
    Counter = 6 ' ข้อมูลเริ่มแ 6
    'ให้อ่านจนหมดทุกอีเมล์ -- แต่ละอีเมล์ต้องติดกันจะเว้นแถวไม่ได้
    Do Until ActiveWorkbook.Sheets("users").Cells(Counter, 2).Value = ""
        sendMyMail ActiveWorkbook.Sheets("users").Cells(Counter, 2).Value
        Counter = Counter + 1
    Loop
    End Sub
  6. บันทึกไฟล์ เป็นนามสกุล xlsm
  7. สร้างปุ่ม สำหรับเรียกใช้งาน โดยกลับไปหน้าจอปกติ และเลือก แถบเมนู แทรก > รูปร่าง และเขียนข้อความ ดังภาพ
  8. คลิกขวาที่ปุ่มที่สร้าง และเลือก กำหนดแมโคร
  9. เลือก readAndSend แล้วกดตกลง
  10. เป็นอันเสร็จ เมื่อคลิกปุ่มนี้ Excel จะเรียน Outlook และทำการส่งอีเมลในคอลัมน์ B ที่มีอยู่ทั้งหมด



อ้างอิง
http://msdn.microsoft.com/en-us/library/office/ff458119(v=office.11).aspx#odc_office_UseExcelObjectModeltoSendMail_Introduction

วันพุธที่ 6 พฤศจิกายน พ.ศ. 2556

กระชาย "ราชาแห่งสมุนไพร"

วันนี้ ได้รับอีเมลจาก อาจารย์วิไลพรรณ สมตระกูล Forward มาให้เรื่อง กระชาย น่าสนใจดีนะครับ ของไทย ๆ พื้นบ้าน ปลูกง่าย มีประโยชน์
กระชายมี 3 ชนิด คือ กระชายดำ กระชายแดง กระชายเหลือง กระชาย ในที่นี้จะขอกล่าวถึงกระชายเหลืองอย่างเดียวเปรียบเทียบกระชายคือโสมของไทย คือ "ราชาแห่งสมุนไพร" กระชายปั่นคั้นน้ำ กระชายมีวิตามินซี, บี1, บี 3 ,บี 6 และแคลเซียม

สรรพคุณกระชาย

1.ช่วยบำรุงตับ ไต แข็งแรง
2.ช่วยฟื้นฟูต่อมไทรอยด์ ต่อมใต้สมอง
3.ช่วยบำรุงเส้นเอ็นให้แข็งแรง กระดูกไม่เปราะบาง
4.ช่วยให้เส้นผมไม่หงอกก่อนวัยเล็บมือ เล็บเท้า แข็งแรง
5.ช่วยปรับสมดุลความดันโลหิตให้พอดี ไม่ให้สูงมากหรือต่ำมากเกินไป
6..ช่วยบำรุงหัวใจ ระบบกล้ามเนื้อหัวใจแข็งแรง เต้นสม่ำเสมอ ช่วยให้เลือดไหลเวียนไปเลี้ยงหัวใจได้ดีขึ้น


คุณค่าในน้ำกระชาย

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

วิธีทำ

1.นำกระชายมาล้างน้ำเกลือให้สะอาดประมาณ 1 แก้ว
2.หั่นกระชายเป็นแว่นเล็กใส่เครื่องปั่นแล้วเติมน้ำ 1 แก้ว
3.ปั่นให้ละเอียดแล้วกรองเอาแต่น้ำ ทิ้งกาก (ห้ามกินกาก)
4.ใช้น้ำเป็นหัวเชื้อใส่ขวดเก็บในตู้เย็นได้หลายวัน
5.เวลาจะใช้ดื่มก็เทใส่แก้วแล้วเติมน้ำสะอาดให้เจือจาง
6 เติมน้ำตาล เกลือ ปรับรสชาติตามใจชอบ