ท่านใดเคยใช้ Microsoft Office Spreadsheet ใน Micro
กระทู้เก่าบอร์ด อ.Yeadram

 3,593   20
URL.หัวข้อ / URL
ท่านใดเคยใช้ Microsoft Office Spreadsheet ใน Micro

เรียน อาจารย์ และ ผู้รู้ทุกท่าน
เรื่อง Microsoft Office Spreadsheet

คือว่าดิฉันต้องใช้ Microsoft Office Spreadsheet ในการแสดงข้อมูล ตอนนี้ก็แสดงข้อมูลได้แล้ว
แต่ปัญหาคือว่า Microsoft Office Spreadsheet มันไม่สามารถ Lock ได้
คือมันสามารถคีย์ข้อมูลลงไปได้นะค่ะ อยากทราบว่า พอจะมีโค๊ชที่ Lock ไม่ให้ คีย์ข้อมูลลงไปได้ไหมค่ะ

หาตั้งนานไม่ได้ซักทีเลยค่ะ

ขอบคุณค่ะ

20 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R07981


2 @R07982
ผู้รู้ท่านใด ช่วยตอบดิฉันด้วยค่ะ ติดนิดเดียว คิดอย่างไรก็คิดไม่ออก



ขอบคุณค่ะ
3 @R07983
ไม่ทราบว่า ตรงตามต้องการหรือไม่ครับ
โดยใช้คุณสมบัติ enabled
spreadsheet0.enabled=false
4 @R07985
-ขอบคุณ คุณ ditasilk

มากมายเลยจ๊ะ แค่นี้เองนะค่ะ คิดอยู่ตัง 1 วัน คิ๊กๆๆ ขำตัวเองจริงๆ จ๊ะ
5 @R08080
ได้ลองใช้ spreadsheet0.enabled=false
แล้วมันใช้ได้ก็จริงนะค่ะ แต่ปัญหาคือ มัน Lock หมดเลย ขยับเซลไม่ได้เลย
คลิ๊กอะไรไม่ได้เลย
ความต้องการคือ Lock ให้พิมพ์ไม่ได้เท่านั้น ค่ะ
ผู้รู้ท่านใดแนะนำด้วยค่ะ 0...0
6 @R08081
click ขวา ที่ MS OFFICE SPREADSHEET



เลือกที่ commands and options
7 @R08082
click tab protection



click ที่ protection active sheet

แล้ว save
8 @R08083
เอา spreadsheet0.enabled=false ออกก่อนนะครับ


9 @R08142
ได้ลองทำดูแล้วค่ะ แต่มันขึ้น Error ดังรูปนะค่ะ แก้ไข ตรงไหนดีค่ะ

(The range you are trying to modify is locked and therefore read-olny.)
10 @R08151
มันฟ้องว่า cell ที่คุณ key ข้อมูลถูก lock

เข้าใจว่าคุณ Panvilai ต้องการ ใส่ข้อมูลเข้าไปก่อน แล้ว lock
ก็ต้องค้นหา เพิ่มหน่อย

หลังจากที่ใส่ข้อมูลเรียบร้อยแล้ว

ให้ใส่

Me.Spreadsheet0.ActiveSheet.Protect UserInterfaceOnly
หรือ
Me.Spreadsheet0.ActiveSheet.Protect Contents
ตัวใดตัวหนึ่ง ทดลองดูครับว่า ชอบตัวไหน

ขอแลกเปลี่ยนกับคุณ Panvilai บ้างครับ
(ไม่เคยใช้ มาก่อน)
1 ทำไมถึงใช้ MS Office SpreadSheet ละครับ
2 ใช้วิธีแสดงข้อมูลจากตาราง หรือ query อย่างไร
   หรือใช้วิธีเขียน VBA อย่างไรครับ (แสดงวิธีให้ดูได้ยิ่งดีครับ เผื่อว่าท่านอื่นอาจสนใจ)
11 @R08175
เรียน คุณ ditasilk

ได้รับคำสั่งจากเจ้านายให้เขียนโปรแกรมใน MS Access เพื่อติดต่อกับฐานข้อมูล SQL Server ค่ะ บอกตามตรง ไม่เคยเขียน VBA กับ Access โดยใช้ SQL อย่างเดียวเลย ปรกติ เขียนกับ Query ตลอด โดยใช้เครื่องมือของ Access

แล้วต้องมาเขียนตัวนี้ หาจากเน็ตตลอด และถามเพื่อนด้วยค่ะ และให้การแสดงรายงานต้อง Show data แต่ Data Grid นำมาใช้ไม่ได้ค่ะ (ดิฉันเขียน vb6.0 อยู่ค่ะ)

เลยลองใช้ Spreadsheet ตัวนี้ และนำโช๊คของ การรายงานออกทาง Excel มาแก้ไขดัดแปลงดู และถามอาจารย์ด้วย เลยได้ แต่ก็ติดปัญหาการ lock cell นั้นละค่ะ แต่ถ้าเพื่อนๆ ท่านใดอยากลองใช้บ้างก็นำไปใช้ได้จ๊ะ ดิฉันแปะไว้ให้ดูแล้วค่ะ

ขอบคุณค่ะ





12 @R08176
OpendbReport ‘ดึงมาจากการเชื่อมต่อกับฐานข้อมูล SQL
SQLReport = "Select * from Histoy_part Where ID='" & Trim(CmbCheck.text) & "' order by ID"

                        With ConnectDBReport(SQLReport)
                                Me.SpsReport.Worksheets("Report Data").Select
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 1).Value = "Part No"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 1).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 2).Value = "Part Name"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 2).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 3).Value = "Supplier"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 3).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 4).Value = "Receive"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 4).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 5).Value = "Measure"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 5).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 6).Value = "System"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 6).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 7).Value = "Initial Rank"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 7).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 8).Value = "Target Rank"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 8).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 9).Value = "Q-Part"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 9).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 10).Value = "Q-Mat"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 10).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 11).Value = "Q-Index"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 11).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 12).Value = "Now Rank"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 12).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 13).Value = "Next Measure"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 13).Font.Bold = True
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 14).Value = "No"
                                Me.SpsReport.Worksheets("Report Data").Cells(1, 14).Font.Bold = True
                                        Row = 1
                                                  Do While Not .EOF
                                                     Row = Row + 1
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 1).Value = .Fields("ID")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 2).Value = .Fields("Name")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 3).Value = .Fields("Supplier")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 4).Value = Format(.Fields("datestart"), "mm/dd/yyyy")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 5).Value = Format(.Fields("dateend"), "mm/dd/yyyy")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 6).Value = .Fields("system")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 7).Value = .Fields("Rank1")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 8).Value = .Fields("Rank2")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 9).Value = .Fields("part")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 10).Value = .Fields("mat")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 11).Value = .Fields("index")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 12).Value = .Fields("now_rank")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 13).Value = Format(.Fields("measure_date"), "mm/dd/yyyy")
                                                                Me.SpsReport.Worksheets("Report Data").Cells(Row, 14).Value = .Fields("num")
                                                                .MoveNext
                                           Loop
                            End With
13 @R08177
เรียน คุณ ditasilk

ก็ยังไม่ได้อยู่ดีนะค่ะ

ฟอร์มที่ต้องการ lock คือ from Report

1. เมื่อ เปิดมาที่หน้า report ให้มา lock ไม่สามารถ key ข้อมูลใดๆ ลงไปได้
2. มันจะมี text กรอกข้อมูล ซึ้งเราจะต้องกรอกข้อมูล เพื่อ คลิกที่ปุ่ม "ค้นหา" เพื่อแสดงข้อมูลออกมา

ติดตรงที่ lock ไม่ให้คียได้แล้ว แต่ว่าพอเลือกข้อมูลที่ text และกดปุ่ม "ค้นหา" มันก็เกิดบักแสดงข้อมูล "The range you are trying to modify is locked and therefore read-olny" ออกมานั้นละค่ะ



ขอบคุณค่ะ
14 @R08178
1 ผลการ Lock
แล้วทดสอบคำสั่ง
Me.Spreadsheet0.ActiveSheet.Protect UserInterfaceOnly
หรือ
Me.Spreadsheet0.ActiveSheet.Protect Contents
หรือยังครับว่า lock ได้ ok หรือไม่
คำสั่งการควบคุมอื่นๆ ใน VBA EDITOR ให้กด F2
แล้วพิมพ์หา Object ที่ต้องการ แล้วหา method หรือ property อื่นๆดูครับ

2 ทำไมไม่ใช้ ListView ใน MS ACCESS ละครับ
ทดสอบแล้วหลายเครื่อง นำเข้ามาใช้ใน MS ACCESS ได้
น่าจะ ง่ายกว่า และเขียนเหมือนบน VB
ออก Excel ได้


15 @R08179
1 ต้องยกเลิกการ lock ที่ผ่านมา ออกก่อนนะครับ
2 Me.Spreadsheet0.ActiveSheet.Protect UserInterfaceOnly
    น่าจะเป็นการ lock interface ที่ต้องใช้งาน เพื่อจำกัดการใช้งานของ user

Me.Spreadsheet0.ActiveSheet.Protect Contents น่าจะ lock เนื้อหาใน cell ทั้งหมด ยกเว้น tools ที่แสดงข้างบน

ผมทดลองแล้วว่า lock ได้ แต่
น่าจะอยู่ที่ การใช้งานให้ refreshข้อมูลหรือค้นหาข้อมูล อีก จะต้องปลด lock ก่อน แล้ว lock ใหม่ ซึ่งผมหายังไม่พบ
16 @R08180
เรียน คุณ ditasilk


1 ผลการ Lock
แล้วทดสอบคำสั่ง
Me.Spreadsheet0.ActiveSheet.Protect UserInterfaceOnly
หรือ
Me.Spreadsheet0.ActiveSheet.Protect Contents
หรือยังครับว่า lock ได้ ok หรือไม่
คำสั่งการควบคุมอื่นๆ ใน VBA EDITOR ให้กด F2
แล้วพิมพ์หา Object ที่ต้องการ แล้วหา method หรือ property อื่นๆดูครับ

ตอบ ทดสอบว่า lock ได้ค่ะ และดิฉันต้องไปเขียนโค๊ชแก้ไขต่อยอดไปอีกทีใช้ไหมค่ะ



2 ทำไมไม่ใช้ ListView ใน MS ACCESS ละครับ
ทดสอบแล้วหลายเครื่อง นำเข้ามาใช้ใน MS ACCESS ได้
น่าจะ ง่ายกว่า และเขียนเหมือนบน VB
ออก Excel ได้


ตอบ ตอนแรกมันมีตัวเลือก อยู่ 3 ตัว คือ ListView, data grid และ Spreadsheet ค่ะ
- ListView เราเคยเขียนมาแล้ว และทำได้
- data grid เขียนแล้ว แต่มันไม่ Support เท่าไรค่ะ
- Spreadsheet ดูแลมันดูดีที่สุด เพราะ โค๊ชไม่ซับซ้อนเท่าไร (หาเจอจากเน็ต)
เลยลองมาเขียนดูนะค่ะ


ตอนแรกๆ ที่เขียนไม่ได้สนใจ การ Lock cell เลย แต่พอต้อง Lock มันด้วย เลยไปไม่เป็นเลยนะค่ะ

ขอบคุณสำหรับข้อมูลค่ะ


17 @R08181
ถ้ามีเวลา ลองศึกษา Farpoint Spread อีกตัวครับ
แต่เวลานำไปใช้ ต้องติดตั้ง Active X ทุกเครื่อง
ถ้าเป็น vb ทำเป็น ชุดติดตั้งได้ แต่ access ทำไม่ได้ ต้อง mannual

หลักการคงเข้าใจแล้วนะครับ
ใส่ข้อมูลใหม่ก็ปลด lock ก่อน
ใส่ข้อมูลเสร็จก็ lock ใหม่
การ lock ทำได้แล้ว แต่ การ ปลด lock ยังไม่ได้
ถ้าหาได้จะมาแจ้งนะครับ หรือคุณ panvilai หาพบก็เข้ามาแจ้งก่อนก็ได้นะครับ

18 @R08182
คุณ ditasilk

ขอบคุณสำหรับคำแนะนำ ดิฉันก็จะพยายาม ศึกษาดูเช่นกันค่ะ

19 @R08183

ค้นไปค้นมา ทดลองดูได้ตามนี้นะครับ
ลืมอันเก่าก่อน

ต้องการ lock sheetไหนก็ใส่ชื่อ sheet แทน sheet1 นะครับ
Me.Spreadsheet0.Worksheets("sheet1").Protect Password:=""

ต้องการคลาย lock ก็เขียนดังนี้
Me.Spreadsheet0.Worksheets("sheet1").Unprotect ("")

น่าจะ ok ขอให้สมหวังนะครับ
20 @R08185
เรียน คุณ ditasilk

ขอบคุณที่แนะแนวค่ะ

1. นำ Me.Spreadsheet0.Worksheets("sheet1").protect locked
ไปไว้ที่ form load

2. นำตัว Me.Spreadsheet0.Worksheets("sheet1").Unprotect
ไปวางไปที่ปุ่ม "ค้นหา" ว่าไว้บนสุดเลยค่ะ เพื่อให้บก lock ก่อนแสดงรายงาน

3. นำ Me.Spreadsheet0.Worksheets("sheet1").protect locked
ไปไว้ว่างไว้ล่างสุด เมื่อได้ทำการรายงานแล้วก็ lock ไว้เลย


ขอบคุณค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2558s