snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
จากไฟล์แนบเมื่อกดปุ่ม Record ที่ไฟล์ PO ชีท Enterthedata ต้องการนำโค๊ด SOpenDB มาใช้ร่วมกับ MainCode ไม่สามารถปรับใช้ได้ค่ะ พอใส่ Call SOpenDB ไว้ที่โค๊ด MainCode ก็ฟ้องตามรูปแนบค่ะ
สิ่งที่ต้องการค่ะ
เมื่อกด Record แล้วต้องการให้โค๊ดเปิดไฟล์ DB แล้วนำข้อมูลจากไฟล์ PO ชีท Enterthedata ไปวางที่ไฟล์ DB ชีท Sheet1 และ ที่ไฟล์ PO ชีท Database เมื่อวางข้อมูลเรียบร้อยแล้วให้ปิดไฟล์ DB ค่ะ โค๊ดนำข้อมูลมาวางได้ตรงตามต้องการค่ะที่ยังไม่ได้ตามต้องการคือที่อักษรสีแดงค่ะ ขอบคุณค่ะ
Sub MainCode()
Dim formBook As Workbook
Dim wdShare As Workbook
Dim response As Integer
Dim r As Range
Set formBook = ThisWorkbook
Set wdShare = Workbooks("DB.xlsx")
Set r = formBook.Sheets("Enterthedata").Range("K1")
Set wdShare = Workbooks.Open("C:\Folder\DB.xlsx")
Application.ScreenUpdating = False
If Application.CountIf(wdShare.Sheets("Sheet1").Range("F:F"), r) <> 0 Then
MsgBox "โปรดตรวจสอบเลขที่เอกสารนี้ได้บันทึกแล้ว รายการซ้ำ "
Exit Sub
End If
Call SOpenDB
Call PasteData
Call MainCodeDBCopy
Call SCloseDB
Application.ScreenUpdating = True
End Sub
Sub SOpenDB()
Dim wbOpen As Boolean '<== สำหรับสั่งให้เปิดไฟล์ DB.xlsx
Dim wb As Workbook
Set wd = Workbooks.Open("C:\Folder\DB.xlsx")
For Each wb In Workbooks
If wb.Name = "DB.xlsx" Then
wbOpen = True
End If
Next wb
If Not wbOpen Then
ChDir "C:\Documents and Settings\Administrator\Desktop\Po"
Workbooks.Open Filename:="C:\Documents and Settings\Administrator\Desktop\Po\DB.xlsx", UpdateLinks:=0
End If
End Sub
Sub MainCode()
Dim formBook As Workbook
Dim wdShare As Workbook
Dim response As Integer
Dim r As Range
Set formBook = ThisWorkbook
'Set wdShare = Workbooks("DB.xlsx") <== ตัวนี้ซ้ำกับตัวข้างล่างครับ
Set r = formBook.Sheets("Enterthedata").Range("K1")
Set wdShare = Workbooks.Open("C:\Folder\DB.xlsx")
Application.ScreenUpdating = False
If Application.CountIf(wdShare.Sheets("Sheet1").Range("F:F"), r) <> 0 Then
MsgBox "โปรดตรวจสอบเลขที่เอกสารนี้ได้บันทึกแล้ว รายการซ้ำ "
Exit Sub
End If
Call SOpenDB
Call PasteData
Call MainCodeDBCopy
Call SCloseDB
Application.ScreenUpdating = True
End Sub