Page 1 of 1

สอบถามข้อข้องใจเกี่ยวกับ VBA, VB6 ครับ

Posted: Thu May 03, 2012 12:35 pm
by sup
เรียน อาจารย์คนควน หรือท่านผู้รู้ครับ

พอดีผมไปหาซื้อหนังสือ VBA มาอ่าน(อยากทำเป็นมั่งครับ) ก็ได้มาครับ และก็ได้สดุดกับหนังสือ VB6 เข้าให้ เลยซื้อมาด้วยพอเอามาอ่านแล้วก็เกิดข้อสงสัยดังนี้ครับ
1. VBA เป็นการเขียนโค๊ตทำงานอยู่บน Excel ส่วน VB 6 เป็นการเขียนโค๊ตคำสั่งภายในระบบ Computer ใช่ไหมครับ(เพราะเห็นบอกว่าเก็บข้อมูลอยู่ในฮาร์ดดิส
2. หากเป็น 2003 จะต้องลงโปรกแกรม VB6ใช่ไหมครับ
3. ความเหมือนของ VBA กับ VB6 ก็คือการเขียน CODE คำสั่งแบบเดียวกัน
4. หากเราเขียน Code VB6 ในเครื่องเราแล้วพอ SAVE ลงฮาร์ดดิสไปแล้วจะย้ายไปอยู่ในเซิฟเวอร์อื่นได้หรือไม่ครับ และทำอย่างไร
5. การเขียนสูตรใน Excel และเขียนสูตรของ VBA เขียนเหมือนกันหรือไม่ครับ
6. การเขียนสูตรบน Excel กับการเขียน Code VBA ของ Excel ด้วยสูตรชุดเดียวกัน หน่วยความจำใช้พื้นที่เท่ากันหรือไม่ครับ
7. การเขียน code VBA แทนการใช้สูตรช่วยให้การทำงานของ Excel เร็วขึ้นไหมครับ โดยเฉพาะสูตรยาวๆ แบบ IF 8-9 ชั้นครับ
8. การเขียนสูตร Link ข้ามไฟล์ กับการเขียน Code VBA ให้ Link ข้ามไฟล์อย่างไหนดีกว่ากัน เพราะอะไรครับ

ต้องรบกวนมากด้วยครับ
ขอบคุณมากครับ

Re: สอบถามข้อข้องใจครับ

Posted: Thu May 03, 2012 1:12 pm
by bank9597
:D ตอบได้บางข้อครับ
VBA เป็นการเขียนโค๊ตทำงานอยู่บน Excel ส่วน VB 6 เป็นการเขียนโค๊ตคำสั่งภายในระบบ Computer ใช่ไหมครับ(เพราะเห็นบอกว่าเก็บข้อมูลอยู่ในฮาร์ดดิส
VBA ย่อมาจาก Visual Basic for Applications เป็นชุดพัฒนาโปรแกรมประยุกต์หรือแอปพลิเคชันด้วยภาษา Visual Basic บน Microsoft Office ดังนั้นไม่ใช่แค่ Excel เท่านั้นครับ ส่วน VB6 นั้นเก็บข้อมูลอยู่ในฮาร์ดดิสหรือไม่อย่างไร ไม่กล้ายืนยัน
ความเหมือนของ VBA กับ VB6 ก็คือการเขียน CODE คำสั่งแบบเดียวกัน
ไม่เหมือนกันครับ คนเก่ง VBA ไม่ได้เขียน VB ได้เสมอไป เพราะรูปแบบการใช้งาน การเขียนคำสั่งมันต่างกันครับ
หากเราเขียน Code VB6 ในเครื่องเราแล้วพอ SAVE ลงฮาร์ดดิสไปแล้วจะย้ายไปอยู่ในเซิฟเวอร์อื่นได้หรือไม่ครับ และทำอย่างไร
เท่าที่ทราบ ข้อมูลทุกย่างจะอยู่ในฮาร์ดดิสหมด แต่จำเพาะด้วยว่าข้อมูลที่เก็บนั้นคืออะไร เช่น ตัวฟอร์มต่างที่เราสร้างจาก VB หรือ ข้อมูลภายในเช่น ตาราง,ตัวอักษระต่าง เท่าที่ทราบ VB ใช้เขียนโปรแกรมให้ไปดึงข้อมูล บันทึกข้อมูล ฯลฯ ได้ สมมุติ เรามีฐานข้อมูล SQL อยู่แล้ว เราก็สามารถเขียนโปรแกรมด้วย VB ให้ไปดึงข้อมูลจากฐานข้อมูล SQL มาแสดงในโปรแกรมของเราได้เหล่านี้ เป็นต้น
การเขียนสูตรใน Excel และเขียนสูตรของ VBA เขียนเหมือนกันหรือไม่ครับ
ลองบันทึกแมโครตอนที่เรากำลังใช้สูตรดูครับ แต่โดยหลักๆแล้วไม่เหมือนครับ
การเขียน code VBA แทนการใช้สูตรช่วยให้การทำงานของ Excel เร็วขึ้นไหมครับ โดยเฉพาะสูตรยาวๆ แบบ IF 8-9 ชั้นครับ
จริงๆแล้ว คำตอบนี้ขึ้นอยู่กับตัวผู้ใช้เป็นสำคัญครับ ถ้าผู้ใช้เก่งเรื่องสูตร ก็ทำได้เร็วกว่า VBA ในทางกลับกันก็เช่นเดียวกันครับ แต่ขึ้นชื่อว่า Excel สูตรหรือฟังก์ชันที่เค้าให้มากับโปรแกรมแล้วนั้น เป็นสิ่งที่ทำงานได้เร็วอยู่แล้วครับ การทำงานบางอย่างเขียนสูตรเร็วกว่าเยอะครับ รวมถึงแสดงผลก้เร็วกว่า VBA ด้วย ให้มองถึงความคุ้มค่าของเวลาครับ ภายในเวลาเท่ากัน ผมคิดว่าเราย่อมเขียนสูตรได้เร็วกว่า VBA ส่วนการจะเปลี่ยนมาใช้ VBA มาแทนสูตรนั้นให้ดูที่ตัวงานเป็นหลักว่ามีการทำงานซับซ้อนแค่ไหน ข้อเสียของสูตรมีอย่างเดียวคือทำให้ไฟล์ทำงานช้าในกรณีที่มีสูตรเยอะๆ แต่ VBA จะไม่เป็นเช่นนั้น ถ้าคุณต้องทำงานกับข้อมูลจำนวนมาก การเลือกใช้ VBA แทนสูตรนั้นก็อาจจะทำได้ครับ
แต่ทั้งนี้ทั้งนั้น มันขึ้นอยู่กับความสามารถของผู้ใช้เป็นสำคัญ ถ้าเราเก่งด้านไหน เราก็เลือกด้านนั้นไปเลยครับ ทุกอย่างขึ้นอยู่กับความชำนาญครับ
การเขียนสูตร Link ข้ามไฟล์ กับการเขียน Code VBA ให้ Link ข้ามไฟล์อย่างไหนดีกว่ากัน เพราะอะไรครับ
สำหรับผมแล้ว ใช้สูตรเร็วกว่าครับ

:D ทั้งหมดที่กล่าวมา ได้รับจากประสบการณ์ที่ได้ใช้มากับตัวเอง หากมีผิดพลาดต้องขออภัยด้วย ตรงนี้แค่แลกเปลี่ยนความคิดครับ

Re: สอบถามข้อข้องใจเกี่ยวกับ VBA, VB6 ครับ

Posted: Thu May 03, 2012 1:43 pm
by sup
ขอบคุณมากครับคุณ bank9597 ที่ช่วยให้ความรู้

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

Re: สอบถามข้อข้องใจเกี่ยวกับ VBA, VB6 ครับ

Posted: Thu May 03, 2012 2:04 pm
by bank9597
:D เป็นปัญหาเดียวกันที่ผมเคยเจอครับ

วิธีแก้ไขของผมตอนนี้คือ การแยกไฟล์ออกมา แล้วกำหนดหน้าที่ของไฟล์แต่ละไฟล์ว่าทำอะไร
ไฟล์ Database เก็บข้อมูลอย่างเดียว ไม่มีสูตรใดๆ เก็บข้อมูลทุกอย่างอยู่ในไฟล์นี้
ไฟล์ Input ใช้ในการกรอกข้อมูล แล้วบันทึกไปยังไฟล์ Database รวมถึงแสดงผลด้วย
ไฟล์ Report ใช้ในการแสดงผลลัพธ์ต่างๆ และตัว PrintOut

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

แต่ต่อไปเมื่อมีข้อมูลเพิ่มเยอะมากขึ้น ก็จำเป็นต้องใช้งานโปรแกรมอื่นเข้ามาช่วย เช่น สร้างฐานข้อมูลอย่าง SQL และสร้างแอปพลิเคชั่นอย่าง VB ครับ

Re: สอบถามข้อข้องใจเกี่ยวกับ VBA, VB6 ครับ

Posted: Thu May 03, 2012 2:08 pm
by snasui
:D เพิ่มเติมจากคุณ bank9597 ครับ
sup wrote:1. VBA เป็นการเขียนโค๊ตทำงานอยู่บน Excel ส่วน VB 6 เป็นการเขียนโค๊ตคำสั่งภายในระบบ Computer ใช่ไหมครับ(เพราะเห็นบอกว่าเก็บข้อมูลอยู่ในฮาร์ดดิสก์)
VBA หรือ VB6 หรือ VB.NET เป็นการเขียนคำสั่งภายในระบบ Computer ทั้งนั้นครับ

VBA คุณ bank9597 ได้เขียนอธิบายไว้แล้วว่าเป็นการเขียนโปรแกรมบน Application นั่นหมายความว่า Application นั้น ๆ สามารถที่จะเขียนภาษา Visual Basic เข้าไปจัดการได้ และปกติจะเป็นชุด Microsoft Office ทั้งหลายที่จะมีเครื่องมือสำหรับเขียน VBA มาให้ด้วยคือ Visual Basic Editor (VBE) ไม่ต้องติดตั้งเพิ่ม

VB6 และ VB.NET คือภาษา Visual Basic ที่ใช้เขียนโปรแกรมต่าง ๆ เครื่องมือที่ใช้เขียนคือ Visual Studio ซึ่งจะต้องติดตั้งต่างหาก ไม่ได้มากับ Microsoft Office สำหรับ VB6 เป็น VB รุ่นก่อนส่วน VB.NET เป็น VB รุ่นถัดมา

.NET คือภาวะแวดล้อมในการเขียน Program ซึ่งได้จัดเตรียมส่วนประกอบในการเขียนโปรแกรมต่าง ๆ ไว้ให้เรียบร้อยแล้ว ยกตัวอย่างเช่น กรณีต้องการสร้างตึก สมัยก่อนต้องไปตัดไม้ เลื่อยไม้ตามขนาดต่าง ๆ ไสกบ แล้วค่อยนำมาทำกรอบหน้าต่าง ประตู และอื่น ๆ สมัยปัจจุบัน ไม้ถูกตัด เลื่อยและไสกบมาเรียบร้อยแล้ว สามารถนำไปทำหน้าต่าง ประตูและอื่น ๆ ตามต้องการ
sup wrote:2. หากเป็น 2003 จะต้องลงโปรกแกรม VB6ใช่ไหมครับ
อ่านข้อ 1 ครับ
sup wrote:3. ความเหมือนของ VBA กับ VB6 ก็คือการเขียน CODE คำสั่งแบบเดียวกัน
เขียน Code คำสั่งใช่ครับแต่คนละแบบครับ ถ้าใช้ VB6 เขียนสั่งงาน Excel จะยากกว่ากันมากครับ
sup wrote:4. หากเราเขียน Code VB6 ในเครื่องเราแล้วพอ SAVE ลงฮาร์ดดิสไปแล้วจะย้ายไปอยู่ในเซิฟเวอร์อื่นได้หรือไม่ครับ และทำอย่างไร
ทำได้ครับ ส่วนทำอย่างไรนั้น ปกติย้ายข้อมูลอย่างไรก็ทำอย่างนั้นครับ กรณีเป็นการเขียน Program เพื่อติดต่อ Database ก็ต้องอ้างอิง Server ตัวใหม่ Database ก้อนใหม่ให้ถูกต้องครับ
sup wrote:5. การเขียนสูตรใน Excel และเขียนสูตรของ VBA เขียนเหมือนกันหรือไม่ครับ
ไม่เหมือนกันครับ ใน Excel เขาเขียนสูตรมาให้แล้วเราเพียงแต่ใช้สูตรนั้น ถ้าใน VBA เราสร้างสูตรเองแล้วค่อยนำไปใช้ใน Excel
sup wrote:6. การเขียนสูตรบน Excel กับการเขียน Code VBA ของ Excel ด้วยสูตรชุดเดียวกัน หน่วยความจำใช้พื้นที่เท่ากันหรือไม่ครับ
คิดว่าไม่มีใครเขียนฟังก์ชั่นและจัดการ Memory ได้เก่งเท่ากับฟังก์ชั่นที่ Build-in มากับ Excel ครับ
sup wrote:7. การเขียน code VBA แทนการใช้สูตรช่วยให้การทำงานของ Excel เร็วขึ้นไหมครับ โดยเฉพาะสูตรยาวๆ แบบ IF 8-9 ชั้นครับ
อ่านข้อ 6 ครับ
sup wrote:8. การเขียนสูตร Link ข้ามไฟล์ กับการเขียน Code VBA ให้ Link ข้ามไฟล์อย่างไหนดีกว่ากัน เพราะอะไรครับ
อ่านข้อ 6 ครับ สาเหตุที่ฟังก์ชั่นที่ Build-in มาดีกว่ามีหลายประการ หลัก ๆ เช่นไม่ต้อง Enable Macro ไม่ต้องเสียเวลาเขียนและทดสอบ Code เป็นต้น

Re: สอบถามข้อข้องใจเกี่ยวกับ VBA, VB6 ครับ

Posted: Tue May 08, 2012 4:21 pm
by sup
ขอบคุณมากครับอาจารย์ที่ให้ความกระจ่างเพิ่มเติม ช่วยในการตัดสินใจได้มากเลยครับ

ต้องขอโทษด้วยครับ ที่เข้ามาช้าไปหน่อยครับ
ต่อไปคงมีเรื่องรบกวนอยู่เรื่อยๆครับ

ขอบคุณครับ