Page 2 of 2

Re: save ไฟล์ backup

Posted: Fri Aug 20, 2021 4:54 pm
by mr.zatan
ถามเพิ่มเติมครับ..

- ต้องการ clear filter ก่อน save ไฟล์ครับ และ hide row ไว้เหมือนเดิม

ลองเพิ่ม code แล้วแต่ปัญหาคือ row ที่ hide ไว้กลับ unhide ออกมาด้วย

clear filter:

Code: Select all

For Each wks In Worksheets
      If wks.FilterMode = True Then
         wks.ShowAllData
      End If
   Next wks
code ที่เพิ่มแล้ว :

Code: Select all

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim ws As Worksheet, SaveToDirectory As String
    
  For Each wks In Worksheets
      If wks.FilterMode = True Then
         wks.ShowAllData
      End If
   Next wks
   
    SaveToDirectory = "D:\Server Backup\import-mysql\Bill\"
   
    Application.DisplayAlerts = False

 
    ThisWorkbook.Worksheets("MT").Copy
   

    With ActiveWorkbook
   
        .Sheets("MT").Range("a1:a2").EntireRow.Delete shift:=xlUp
       
        .SaveAs Filename:=SaveToDirectory & .Sheets("MT").Name & ".csv", FileFormat:=xlCSVUTF8, CreateBackup:=False
       
        .Close SaveChanges:=True
       
    End With


      Application.DisplayAlerts = True
     
End Sub

Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 7:44 am
by snasui
:D กรุณาแนบไฟล์ล่าสุดที่ได้ Update Code นี้เอาไว้แล้วมาด้วยจะได้ดูต่อไปจากนั้นครับ

Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 8:19 am
by mr.zatan
ตามไฟล์แนบครับ

ซ่อน row ที่ 3 ครับ (เฉพาะ sheet MT)

Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 9:45 am
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
With ActiveWorkbook
    .Sheets("MT").Range("a1").CurrentRegion.EntireRow.Hidden = False
    .Sheets("MT").Range("a1:a2").EntireRow.Delete shift:=xlUp
    .SaveAs Filename:=SaveToDirectory & .Sheets("MT").Name & ".csv", FileFormat:=xlCSVUTF8, CreateBackup:=False
    .Close SaveChanges:=True
End With
'Other code

Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 10:15 am
by mr.zatan
ลองแล้วเหมือนเดิมครับ row ที่ 3 ก็ยังไม่ซ่อน

Code: Select all

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim ws As Worksheet, SaveToDirectory As String
    
  For Each wks In Worksheets
      If wks.FilterMode = True Then
         wks.ShowAllData
      End If
   Next wks
   
    SaveToDirectory = "D:\Server Backup\import-mysql\Bill\"
   
    Application.DisplayAlerts = False

 
    ThisWorkbook.Worksheets("MT").Copy
   

    With ActiveWorkbook
    .Sheets("MT").Range("a1").CurrentRegion.EntireRow.Hidden = False
    .Sheets("MT").Range("a1:a2").EntireRow.Delete shift:=xlUp
    .SaveAs Filename:=SaveToDirectory & .Sheets("MT").Name & ".csv", FileFormat:=xlCSVUTF8, CreateBackup:=False
    .Close SaveChanges:=True
End With


      Application.DisplayAlerts = True
     
End Sub



Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 1:08 pm
by snasui
:D ไฟล์ที่แนบมาบรรทัดที่ 1 และ 2 ไม่ได้ซ่อน ส่วนบรรทัดทัดที่ 3 มีการซ่อนไว้

จากนั้น Code มีการตรวจสอบว่าถ้าไฟล์ต้นฉบับมี Auto Filter ให้ยกเลิกไปก่อน ซึ่งถ้าไม่มีการ Auto Filter เอาไว้ก็จะไม่เกิดผลใด รวมถึงบรรทัดที่ซ่อนก็จะไม่ถูกยกเลิกการซ่อน จากนั้นทำการคัดลอกชีต MT ไปสร้างเป็นไฟล์ใหม่โดยลบ 2 บรรทัดแรกทิ้งไป บรรทัดที่ 3 เดิมก็จะกลายเป็นบรรทัดแรกแทนและก็ยังซ่อนอยู่

Code ที่ผมเขียนไปคือยกเลิกการซ่อนบรรทัดแรกเพื่อให้แสดงเป็นหัวคอลัมน์ แต่ไม่ทราบว่าแท้ที่จริงแล้วต้องการให้แสดงผลอย่างไร กรุณาอธิบายมาเป็นข้อ ๆ อย่างละเอียด จะได้เข้าใจตรงกัน

การซ่อนหรือยกยกเลิกการซ่อนบรรทัด ผมเข้าใจว่าสามารถใช้ Code ที่ผมเขียนไปประยุกต์เองได้

การใช้ Code จำเป็นต้อง Debug ให้เป็นไม่เช่นนั้นจะทำงานกับ Code ได้อย่างลำบาก วิธี Debug ดูกระทู้นี้เป็นตัวอย่างครับ https://snasui.com/viewtopic.php?f=3&t= ... 47#p103247

Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 6:28 pm
by mr.zatan
ลำดับการทำงานตามนี้ครับ

1. คลิก save
2. clear fliter
3. ซ่อน row 3
4. save file .csv

Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 7:03 pm
by snasui
:D ตัวอย่างการปรับ Code กรณีการซ่อนบรรทัดที่ 3 ในไฟล์ต้นฉบับครับ

Code: Select all

For Each wks In Worksheets
    If wks.FilterMode = True Then
       wks.ShowAllData
       If wks.Name = "MT" Then
          wks.Rows(3).Hidden = True
       End If
    End If
 Next wks
และเนื่องจากไฟล์เดิมมีชีตเดียวไม่จำเป็น Loop แต่อย่างใด Code ควรเป็น

Code: Select all

'Other code
 With Worksheets("MT")
    If .FilterMode Then
        .ShowAllData
        .Rows(3).Hidden = True
    End If
 End With
'Other code

Re: save ไฟล์ backup

Posted: Sat Aug 21, 2021 8:35 pm
by mr.zatan
ทำได้แล้วครับ ขอบคุณมากครับ