:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#32

by snasui » Mon Mar 01, 2021 5:13 pm

:D ไม่สามารถทำได้ด้วย VBA ครับ

ฟังก์ชั่น Tooltips ต้องใช้เครื่องมือชนิดอื่นเข้ามาช่วย

ภาพด้านล่างผมเขียนด้วย Visual Studio โดยใช้ Extension ที่ชื่อว่า Excel DNA เข้ามาช่วยครับ
Attachments
FunctionIntellisense.png
FunctionIntellisense.png (16.38 KiB) Viewed 80 times
FunctionIntellisense1.png
FunctionIntellisense1.png (14.66 KiB) Viewed 80 times

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#31

by lnongkungl » Mon Mar 01, 2021 4:52 pm

อาจารย์ครับ อีกนิดนึงครับ เราสามารถใส่อธิบายฟังก์ชั่น แบบรูปแนบได้มั้ยครับ ผมพยายามหาวิธีทำ แต่ค้นหาไม่เจอ ครับ
Attachments
1614591473548.jpg
1614591473548.jpg (8.22 KiB) Viewed 82 times

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#30

by snasui » Mon Mar 01, 2021 1:06 pm

:D ลองศึกษาดูตาม Link นี้ของ Microsoft ดูครับ :arrow: https://docs.microsoft.com/en-us/office ... -reference

กรณีเป็นหนังสือ ลองดูตาม Link นี้ครับ :arrow: Power Programming with VBA

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#29

by lnongkungl » Mon Mar 01, 2021 10:44 am

ขอบคุณอาจารย์ทั้ง 2 ท่านครับ ติดประเด็นอะไรอีก จะเข้ามาขออนุญาติรบกวนสอบถามอีกนะครับ

ผมอยากรบกวนอาจารย์แนะนำหนังสือหรือ e-book เกี่ยวกับการเขียน VBA ให้ผมหน่อยครับ ผมจะได้ไปหาซื้อเอามาศึกษาเพิ่มพูนความรู้ให้ดียิ่งขึ้นกว่านี้ครับ เพราะบางทีเข้าไปหาข้อมูลจากที่อื่น หรือ ที่อาจารย์ตอบใน forum เจอ code บางตัวที่ไม่เคยเห็น ก็ไม่เข้าใจว่าคำสั่งของ code นั้นคืออะไรครับ

ขอบคุณครับ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#28

by Bo_ry » Sun Feb 28, 2021 1:16 am

UDF

Code: Select all

Function SJ(f As Range, c As Range) As String
Dim a, l As Long, wb As Workbook, j As String, Ap As Application
Application.ScreenUpdating = False
    Set Ap = CreateObject("Excel.Application")
    Set wb = Ap.Workbooks.Open(Filename:=f.Value, ReadOnly:=True)
    With wb.Sheets(1)
        l = .Cells(Rows.Count, 1).End(xlUp)
        a = .Evaluate(Replace("Transpose(IF(MMULT(N(ISNUMBER(SEARCH(""" & c & """,B8:AY#))),TRANSPOSE(COLUMN(B1:AY1)^0)),A8:$A#))", "#", l))
    End With
    wb.Close
    a = Filter(a, False, False)
    For l = 0 To UBound(a)
        j = j & "," & Application.Text(a(l), "d-mmm-yy;;")
    Next
    SJ = Mid(j, 2)
Application.ScreenUpdating = True
End Function

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#27

by snasui » Sat Feb 27, 2021 5:21 pm

:D ตัวอย่าง Funtion ที่ให้ผลลัพธ์เป็นสายอักขระพร้อมปรับ Performance ให้ดีกว่าเดิมครับ

Code: Select all

Function SearchContact_Func_join(f As Range, c As Range) As String
    Dim s As String, a() As Variant, b As Variant
    Dim xlApp As Application, wb As Workbook
    Dim i As Long, j As Long, k As Long
    
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    With Worksheets("Sheet1")
        s = LCase(c.Value)
        Set wb = xlApp.Workbooks.Open(Filename:=f.Value, ReadOnly:=True)
    End With
    j = 0
    With wb.Sheets(1)
        .Range("a3").CurrentRegion.EntireRow.Hidden = False
        b = .Range("a8", .Range("a" & .Rows.Count).End(xlUp)).Resize(, 51)
        For i = 1 To UBound(b)
            For k = 1 To 51
                If InStr(LCase(b(i, k)), s) Then
                    ReDim Preserve a(j)
                    a(j) = b(i, 1)
                    j = j + 1
                    Exit For
                End If
            Next k
        Next i
    End With
    wb.Close False
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    SearchContact_Func_join = VBA.Join(a, ",")
End Function
เขียนสูตรที่เซลล์ใด ๆ เป็น

=SearchContact_Func_Join(B1,B2)

Enter

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#26

by lnongkungl » Sat Feb 27, 2021 4:21 pm

น่าจะเป็นประเด็นสุดท้ายละครับ แต่ยาวหน่อย
ผมลองทำตามคำแนะนำที่อาจารย์บอกครับ ผลก็ได้ตามความต้องการ ทีนี้มาถึงขั้นตอนสุดท้ายคือ นำคำตอบที่ได้มารวมกันให้เป็น cell เดียว และ คีย์ function ครั้งเดียวให้ได้ผลลัพธ์เลย ผมเลยไปค้นหาวิธีรวมข้อมุลให้เป็น cell เดียวกันมาใส่ แต่แยกเป็นคนละ function แล้วก็เอา =COUNTA(SearchContact_Func(B1,B2)) ไปใส่ใน function เดิม ก็จะเหลือ 2 ขั้นตอน คือ =IF(ROW(1:1000)>B3,"",SearchContact_Func(B1,B2)) กับ function concatrange ที่ผมเพิ่มเข้าไป

เรียนตามตรงครับ ผมพยายามเอา 2 ขั้นตอนนี้ มารวมกัน โดยตอนแรกเอา =IF(ROW(1:1000)>B3,"",SearchContact_Func(B1,B2)) พยายามยัดเข้าไปใน function แล้วก็เอา concatrange มาต่อกัน ผลสุดท้าย code มั่วไม่ใช่แค่ error อย่างเดียว ค้างไปเลยครับ สุดท้ายลบที่เพิ่มเข้าไปจนเหลือแค่ 2 ตัวแปลสุดท้าย code ถึง run ต่อได้

Code: Select all

'
'
'
Dim fs As Variant
Dim nb As Integer
    fs = Application.Transpose(a)
    nb = Application.CountA(fs)

    
    SearchContact_Func = nb
'
'
'
จนปัญญาจริงๆครับ รบกวนขอแนวทางด้วยครับอาจารย์
Attachments
testfunction.xlsm
(18.38 KiB) Downloaded 9 times
test P1-2021.xlsx
(459.66 KiB) Downloaded 9 times
1614415221832.jpg
1614415221832.jpg (31.93 KiB) Viewed 109 times

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#25

by lnongkungl » Sat Feb 27, 2021 12:08 pm

ขอบคุณครับ อาจารย์ ผม update version ของ excel แล้วครับ และจะลองนำคำแนะนำไปลองปรับใช้งานดูครับ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#24

by snasui » Sat Feb 27, 2021 11:58 am

:D เข้าใจว่าไม่ใด้ใช้ Excel 365 หากเป็น Excel 365 จึงจะคีย์สูตรในเซลล์เริ่มต้นเซลล์เดียวได้ครับ

การคีย์สูตรเพื่อให้แสดงผลลัพธ์หลายค่าใน Excel Version อื่น ๆ ให้คลุมพื้นที่เอาไว้ก่อน > คีย์สูตร > Ctrl+Shfit+Enter

ลองทำตามลำดับดังนี้ครับ
  1. เซลล์ B1 คีย์ Path ให้มีนามสกุลไฟล์ด้วย
  2. ปรับ Code เป็นด้านล่าง

    Code: Select all

    Function SearchContact_Func(f As Range, c As Range) As Variant
        Dim s As String
        Dim r As Range, v As String
        Dim wb As Workbook
        Dim source As Range
        Dim a() As Variant
        Dim i As Long
        Dim xlApp As Application
        
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = False
        
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        With Worksheets("Sheet1")
            s = LCase(c.Value)
            Set wb = xlApp.Workbooks.Open(Filename:=f.Value, ReadOnly:=True)
        End With
        j = 0
        With wb.Sheets(1)
            .Range("a3").CurrentRegion.EntireRow.Hidden = False
            For Each r In .Range("a8", .Range("a" & .Rows.Count).End(xlUp))
                v = VBA.Join(Application.Transpose( _
                    Application.Transpose(Application.Index(r.Resize(1, 51), 0))))
                v = LCase(v)
                If v Like "*" & s & "*" Then
                    ReDim Preserve a(j)
                    a(j) = r.Value
                    j = j + 1
                End If
            Next r
        End With
        wb.Close False
    
        SearchContact_Func = Application.Transpose(a)
        
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
    
    End Function
  3. ที่ B3 คีย์
    =COUNTA(SearchContact_Func(B1,B2))
    Enter
  4. คลุมที่ A6:A20 (สามารถคลุมพื้นที่ไว้ตามที่คิดว่าข้อมูลขยายไปถึง) คีย์
    =IF(ROW(1:1000)>B3,"",SearchContact_Func(B1,B2))
    Ctrl+Shift+Enter
กรุณา Update Version ของ Excel ที่ใช้ในปัจจุบันตาม Link นี้ด้วยครับ https://snasui.com/viewtopic.php?f=6&p=103177#p103177

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#23

by lnongkungl » Sat Feb 27, 2021 10:49 am

อาจารย์ครับ ผมลอง run function ดูแล้ว ผลที่มาภาพรวมถูกต้อง แต่ผลลัพท์ที่แสดงไม่ครบครับ
ผมลองใส่เลขที่ต้องการค้นหา ผลลัพท์จริงๆจะมีประมาณ 4 วัน แต่ผลลัพท์ที่แสดงออกมาแค่วันเดียวคือวันแรกที่ค้าหาเจอ ส่วนอีก 3 วันต่อมา ไม่มีข้อมูลแสดงครับ

เป็นเพราะตอนท้าย code เราให้ function = a เลยหรือปล่าวครับ ไม่ได้ขยายแถว resize(1,51) ให้เลยแสดงผลลัพท์แค่ cell เดียว ผมเข้าใจถูกหรือไม่ครับ
Attachments
test P1-2021.xlsx
(459.66 KiB) Downloaded 9 times
testfunction.xlsm
(17.83 KiB) Downloaded 8 times

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#22

by lnongkungl » Sat Feb 27, 2021 9:22 am

ขอบคุณอาจารย์ทั้ง 2 ท่านครับ ผมจะนำไปศึกษาเพิ่มเติมครับ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#21

by snasui » Sat Feb 27, 2021 7:34 am

:D งานนี้ผู้ถามต้องการทราบวิธีการแปลง Sub Procedure เป็นฟังก์ชั่น Procedure ว่าแปลงได้หรือไม่ มีลักษณะเป็นอย่างไรซึ่งคงพิจารณาประกอบเองเพิ่มเติมว่าสะดวกแบบไหนมากกว่ากันครับ

การให้แสดงพร้อมกันทุกตัวก็สามารถทำได้เช่นกัน คือคลุมพื้นที่ เขียนสูตรแล้วกดแป้น Ctrl+Shift+Enter ไม่ต้องใช้ Index เข้าไปครอบ ซึ่งก็ต้องกันพื้นที่ที่จะทำเช่นนั้นครับ

ผมเห็นว่าการเปิด-ปิดไฟล์เป็นประเด็นหลักมากกว่าที่จะให้แสดงค่าออกมาพร้อมกันทั้งหมด เพราะการทำงานแบบนี้ย่อมต้องเตรียมพื้นที่เอาไว้แสดงผลอยู่แล้วไม่ว่าจะด้วย Sub Procedure หรือ Function Procedure หรือ Spill Array แบบ Office 365 ก็ตาม

การใช้ Index เข้าไปช่วยเป็นการอธิบายเพื่อความเข้าใจว่ามันสามารถปรับอย่างไรเพื่อให้แสดงผลทีละตัวได้ครับ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#20

by Bo_ry » Sat Feb 27, 2021 12:02 am

เอา Index ไปครอบแล้วดึงที่ละตัว มีข้อมูล 100 ตัว
ก็ต้องใส่ Function 100 cells ก็ต้อง Run Function 100 รอบ
ยิ่งข้อนี้ต้องไปเปิดไฟล์อื่น ต้องเปิด ปิดไฟล์ 100 รอบ

Sub Run รอบเดียวได้ครบ 100 ตัว
แต่ถ้าเป็น Spill Array Function Run รอบเดียวก็ได้ครบ 100 ตัว

ก็เลยคิดว่ามันไม่เหมาะ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#19

by snasui » Fri Feb 26, 2021 6:31 pm

Bo_ry wrote: Fri Feb 26, 2021 5:54 pm Function ไม่ค่อยเหมาะกับการคืนหลายๆ ค่านอกจากจะใชักับ MS365 ที่มี Spill Array
ใช้ Sub ดีแล้ว
:D เราสามารถใช้ Index เข้าไปครอบเพื่อให้แสดงค่าออกมาทีละลำดับได้ครับ

แต่การใช้ Function ทำงานแบบข้ามไฟล์จะไม่เหมาะเพราะถ้ามีการเปิดปิดไฟล์จะมีผลต่อการคำนวณครับ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#18

by Bo_ry » Fri Feb 26, 2021 5:54 pm

หาไฟล์ File ใช้ Dir ถ้าไม่มีจะข้อความว่าง

Code: Select all

    If Dir(fp & ".xlsx") = "" Then
        MsgBox "File not found": Exit Sub
Function ไม่ค่อยเหมาะกับการคืนหลายๆ ค่านอกจากจะใชักับ MS365 ที่มี Spill Array
ใช้ Sub ดีแล้ว

Code: Select all

Sub Search()
Application.ScreenUpdating = False
Dim s As String, fp As String, r As Range, a, n As Long, wb As Workbook, l As Long
fp = Range("B1").Value
s = LCase(Range("b2").Value)
    If Dir(fp & ".xlsx") = "" Then
        MsgBox "File not found": Exit Sub
    Else
        Set wb = Workbooks.Open(fp & ".xlsx", ReadOnly:=True)
        l = wb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
        ReDim a(l)
        For Each r In wb.Sheets(1).Range("a8:a" & l)
            a(n) = Join(Application.Transpose(Application.Transpose(r.Resize(, 51))), "^")
            n = n + 1
        Next
        wb.Close
        a = Filter(a, s)
        If UBound(a) = -1 Then
            MsgBox "No data": Exit Sub
        Else
            With [A5].Resize(UBound(a) + 1)
                .Value = Application.Transpose(a)
                .TextToColumns Destination:=Range("A5"), DataType:=xlDelimited, Other:=True, _
                OtherChar:="^", FieldInfo:=Evaluate("choose({1,2},row(1:51),1)")
            End With
        End If
    End If
Application.ScreenUpdating = True
End Sub

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#17

by lnongkungl » Fri Feb 26, 2021 5:06 pm

ได้แล้วครับ หาวิธีทำจนเจอ

Code: Select all

Sub openbook()
Dim wb As Workbook
On Error GoTo err1
        Set wb = Workbooks.Open(Filename:=.Range("B1").Value, ReadOnly:=True)
err1:
        MsgBox "ไม่พบไฟล์ที่ค้นหา", vbCritical
        Exit Sub

End Sub

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#16

by lnongkungl » Fri Feb 26, 2021 4:51 pm

หาข้อมูลไปเรื่อยๆ จนไปเจอการใช้ on error go to พอเข้าใจว่าเป็นการดัก error ที่จะเกิดขึ้นแต่ให้ไปทำที่เรากำหนดแทนเช่น msgbox แต่ผมลองทำดู ทำไมมัน error ตั้งแต่เขียน code แล้วครับ


รบกวนอาจารย์ อธิบายทีครับ
Attachments
1614332319533.jpg
1614332319533.jpg (43.08 KiB) Viewed 164 times

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#15

by lnongkungl » Fri Feb 26, 2021 3:48 pm

ได้แล้วครับ เป็นที่ผมใส่ชื่อไฟล์เต็ม แล้วก็ไม่ได้ลบ

Code: Select all

& ".xlsx"
ออก มันเลย error

ทีนี้เราจะดัก code ยังไงครับว่า ถ้าชื่อไฟล์ที่พิมพ์ในช่อง b1 เป็นชื่อไฟล์ที่ไม่มีอยู่ใน path นั้นจริง หรือ อาจจะพิมพ์ชื่อไฟล์ผิด จึงหาไฟล์ไม่เจอ แล้วให้ขึ้น msgbox ว่าชื่อไฟล์ผิด หรือไฟล์ไม่มี ประมาณนี้ครับ ผมคิดไม่ออกว่าจะใส่ if ยังไง

ผมพอรู้หลักว่า

Code: Select all

If........then
MsgBox "ไม่มีข้อมุล" & ID, vbCritical
else
Set wb = Workbooks.Open(Filename:=.Range("B1").Value, ReadOnly:=True)
End If
แต่หลัง if จะใส่เงื่อนไขยังไงครับ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#14

by snasui » Fri Feb 26, 2021 3:08 pm

:D ในเซลล์ B1 ต้องเขียน Path ให้มีนามสกุลไฟล์เอาไว้ด้วย จึงจะลบ & ".xlsx" ใน Code ออกได้ครับ

ถ้า Path ใน B1 มีไฟล์อยู่จริงย่อมจะไม่ Error ครับ

Re: สอบถามเรื่องข้อมูลเยอะมาก ทำให้ vba ทำงานช้ามาก

#13

by lnongkungl » Fri Feb 26, 2021 3:00 pm

ไม่ได้หมายถึงใน code ครับ หมายถึงว่า ยังเอาค่าจาก B1 เหมือนเดิม แต่ใน code มี & ".xlsx" เลยเหมือนชนกันเลยเกิดเป็น error

สมมุติพิมพ์ใน cell B1 = C:\sf\gewrh\hqnhgntrn.xlsx แบบนี้ครับ จึงอยากรู่ว่าใน code สามารถปรับให้ยืดหยุ่นรับกับทุกนามสกุลของไฟล์ เช่นอาจจะเป็นไฟล์ของ excel 2007 นามสกุลเป็น .xls ประมาณนี้ครับ

เพราะผมลองใส่ชื่อไฟล์ที่ B1เป็น C:\sf\gewrh\hqnhgntrn.xlsx แล้วลบ & ".xlsx" ใน code ออก มัน error ครับ

Code: Select all

Set wb = Workbooks.Open(Filename:=.Range("B1").Value, ReadOnly:=True)

Top