เขียน vbs ใน macro แปลงระหว่างเลขไทยและเลขอาราบิก

แปลงเลขไทยเป็นเลขอาราบิก

5 มี.ค.53 ทุกองค์กรย่อมมีนโยบายมากมายทั้งที่เป็นลายลักษณ์อักษร และไม่เป็น เป็นทางการหรือไม่เป็นทางการ ช่วงนี้มีแนวนโยบายที่ไม่เป็นลายลักษณ์อักษรและไม่เป็นทางการเกิดขึ้นในองค์กรแห่งหนึ่ง คือ การใช้ตัวเลขในเอกสารขององค์กร ซึ่งก่อนหน้านี้มีวัฒนธรรมที่ผู้บริหารสนับสนุนให้ใช้เลขไทย ทำให้มีการใช้เลขไทยในเอกสารเป็นไปโดยอัตโนมัติ เมื่อเวลาผ่านไปแล้วมีการเปลี่ยนทีมผู้บริหารก็ย่อมมีการเปลี่ยนแปลงในหลายเรื่อง ทำให้การเลือกใช้แบบของตัวเลขเริ่มเปลี่ยนทิศทางไป การใช้ visual basic script ใน macro ของ microsoft word ที่เขียนขึ้น 2 ฟังก์ชันคือ แบบแปลงไทยเป็นเลขอาราบิก และ เลขอาราบิกเป็นเลขไทย ทำให้การสั่งเปลี่ยนทำได้ง่าย ทดสอบกับ word2003 แล้วใช้ได้ครับ .. ลองนำไปทดสอบดูได้นะครับ

Sub arabictothai()
For i = 0 To 9
With Selection.Find
.Text = Chr(48 + i)
.Replacement.Text = Chr(240 + i)
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End Sub

Sub thaitoarabic()
For i = 0 To 9
With Selection.Find
.Text = Chr(240 + i)
.Replacement.Text = Chr(48 + i)
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End Sub

ถ้าเป็น excel ไม่ต้องใช้ function ให้กด Ctrl-A แล้วกำหนด format ของ cell ใน Number,  Custom เป็น [$-D07041E]0 ก็จะทำให้ข้อมูลที่เป็นตัวเลขทั้งหมดเป็นเลขไทย

สาธิต : http://www.youtube.com/watch?v=JNy15bLnt9k


ส่งเมลด้วยฟังก์ชัน mail ของภาษา php

28 ธ.ค.52 เหตุเกิด เพราะมีนักพัฒนาท่านหนึ่งต้องการใช้บริการส่งอีเมลด้วย php ผ่านฟังก์ชัน mail กับเครื่องบริการเว็บเครื่องหนึ่ง แล้วส่งไม่ออก เนื่องจากผู้ดูแลไม่เปิดบริการ smtp ทิ้งไว้ เรามีเครื่องบริการส่งเมลอยู่หลายเครื่องที่ติดตั้งไว้ เมื่อเปิดบริการส่งเมลในเครื่องที่ต้องการใช้ขึ้นใหม่แล้ว กลับพบว่าส่งอีเมลไม่ได้ ทำให้ต้องหาสาเหตุและแก้ปัญหา แล้วผลการดำเนินการก็เกิดบทเรียนให้เรียนรู้ ซึ่งเครื่องบริการเว็บที่ทดสอบในครั้งนี้มี 4 เครื่อง เครื่องส่งอีเมลเดิมมี 3 เครื่อง แต่ละเครื่องแตกต่างกันในวิธีแก้ปัญหา ซึ่งดำเนินการร่วมกับคุณอนุชิต ยอดใจยา และคุณธรณินทร์ สุรินทร์ปันยศ
     เครื่องบริการเว็บที่ 1 ของคุณอนุชิต ยอดใจยา ทดสอบแล้วไม่พบปัญหา คือ ทำงานร่วมกับ smtp server ที่มหาวิทยาลัยใช้งานทั้ง 3 เครื่องได้ปกติ ได้แก่เครื่อง it, linux หรือ cat โดยเครื่องนี้ใช้ php 5.2.6 แก้ไข smtp ผ่าน ini_set ได้ทันที แต่เครื่องนี้มิใช่เป้าหมายที่นักพัฒนาท่านนั้นต้องการ เครื่องบริการเว็บที่ 2 เป็นเครื่องเป้าหมาย ที่ต้องการทำให้ส่งอีเมลให้ได้ เครื่องใช้ php 4.3.4 พบว่าวิธีแก้ปัญหาคือ กำหนด SMTP และ sendmail_from ใน php.ini ได้พยายามใช้ ini_set และ mail() ที่กำหนด from แล้ว แต่ก็แสดง error message ว่า connection ไม่สำเร็จ สรุปว่าแก้ไข php.ini แล้วก็ส่งออก ไม่ว่ากับเครื่องบริการส่งเครื่องใด เครื่องบริการเว็บเครื่องนี้ก็ส่งได้จากเดิมที่ส่งไม่ได้เลย
     เครื่องบริการเว็บที่ 3 แก้ไขเหมือนเครื่องที่ 2 หรือ 1 ก็ยังส่งอีเมลไม่ได้ เครื่องทำหน้าที่เป็นทั้งเครื่องบริการ ส่งและเครื่องบริการเว็บในตัวเอง ส่วนซอฟท์แวร์ก็เหมือนกับเครื่องที่ 1 และถูกใช้มาโดยตลอด พบว่าวิธี แก้ปัญหาคือ กำหนด SMTP ใน php.ini จาก localhost เป็น ip address ของตนเอง ก็คาดว่าการใช้ localhost ไม่ได้เกิดจากการ config เครื่องบริการส่งเมลเป็นเหตุ แต่ตอนนี้ใช้ได้แล้วก็ไม่คิดจะเข้าไปแก้ไขอีก เครื่องบริการเว็บที่ 4 เป็นของคุณธรณินทร์ สุรินทร์ปันยศ ใช้บทเรียนที่ผ่านมาแก้ไขก็ยังไม่สำเร็จ พบ error ว่า connection กับ smtp server ไม่สำเร็จ  พบว่าวิธีแก้ปัญหาคือ ปิดบริการ Antivirus ของ Mcafee ซึ่งมี firewall ในตัว ก็ใช้ได้ปกติในทันที
+ SMTP = localhost
+ sendmail_from = a@a.com
+ mail(“x@x.com”,”hello”,”this is my test”,”From: y@y.com\nReply-To: z@z.com“);
+ ini_set(“SMTP”,”11.22.33.44″ );
+ ini_set(‘sendmail_from’, ‘b@b.com’);