Page 1 of 1
สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Fri Mar 18, 2022 10:49 pm
by thanadul0816
ผมได้ทำการบันทึก Macro เพื่อบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
ผลที่ได้ ได้ตามต้องการแล้วครับ
อยากจะสอบถามเพิ่มเติมครับ ว่า สามารถ ปรับโค้ด VBA ให้สั้นกว่านี้ และไม่ต้องฝากสูตรลงใน Cell
ต้องปรับเป็นแบบไหนครับ
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sat Mar 19, 2022 7:14 am
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub ExportPdf()
' Range("L5").Select
' ActiveCell.FormulaR1C1 = "=CELL(""filename"")"
' Range("L6").Select
' ActiveCell.FormulaR1C1 = "=MID(CELL(""filename""),FIND(""["",CELL(""filename""))+1,FIND(""]"",CELL(""filename""))-FIND(""["",CELL(""filename""))-1)"
' Range("L7").Select
' ActiveCell.FormulaR1C1 = "=MID(CELL(""filename"",R[-1]C),FIND(""]"",CELL(""filename"",R[-1]C))+1,256)"
' Range("L9").Select
' ActiveCell.FormulaR1C1 = "=LEFT(R[-4]C,LEN(R[-4]C)-R[-1]C[1])"
' Range("L10").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("E2").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Sheets("sheet1").Select
Range("A1").Select
ActiveWorkbook.Save
MsgBox "Finish"
End Sub
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 11:05 am
by thanadul0816
snasui wrote: Sat Mar 19, 2022 7:14 am

ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub ExportPdf()
' Range("L5").Select
' ActiveCell.FormulaR1C1 = "=CELL(""filename"")"
' Range("L6").Select
' ActiveCell.FormulaR1C1 = "=MID(CELL(""filename""),FIND(""["",CELL(""filename""))+1,FIND(""]"",CELL(""filename""))-FIND(""["",CELL(""filename""))-1)"
' Range("L7").Select
' ActiveCell.FormulaR1C1 = "=MID(CELL(""filename"",R[-1]C),FIND(""]"",CELL(""filename"",R[-1]C))+1,256)"
' Range("L9").Select
' ActiveCell.FormulaR1C1 = "=LEFT(R[-4]C,LEN(R[-4]C)-R[-1]C[1])"
' Range("L10").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("E2").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Sheets("sheet1").Select
Range("A1").Select
ActiveWorkbook.Save
MsgBox "Finish"
End Sub
ขอบคุณครับ ได้ผลตามต้องการครับ
** ขอสอบถามเพิ่มเติมครับ ผมได้สร้างโมดูล เพื่อเช็คโฟลเดอร์ และสร้างโฟลเดอร์ใหม่หากไม่มีอยู่
ตามไฟล์แนบ ผมทำแบบนี้ได้หรือไม่
และโค้ดส่วนข้างล่างนี้ จะกำหนดให้ เปลี่ยนไปตามที่อยู่ของไฟล์ excel ได้ไหมครับ
จุดประสงค์คือหากย้ายไฟล์ ไม่ต้องมากำหนดใหม่ ครับ
Code: Select all
MkDir "C:\Users\"
MkDir "C:\Users\THOMAS-611\"
MkDir "C:\Users\THOMAS-611\OneDrive\"
MkDir "C:\Users\THOMAS-611\OneDrive\สูตรExcel\"
MkDir "C:\Users\THOMAS-611\OneDrive\สูตรExcel\address\" & s
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 11:42 am
by snasui

กรุณาลองทำแล้วนำปัญหามาถามครับ
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 5:09 pm
by thanadul0816
snasui wrote: Sun Mar 20, 2022 11:42 am

กรุณาลองทำแล้วนำปัญหามาถามครับ
ตามไฟล์แนบครับ พอดีลืมแนบไฟล์ที่ทำแล้ว ให้ครับ
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 5:19 pm
by snasui

กรุณาแจ้งปัญหามาในช่องความเห็นด้วยว่าได้ลองทำแล้วติดปัญหาใดครับ
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 7:01 pm
by thanadul0816
snasui wrote: Sun Mar 20, 2022 5:19 pm

กรุณาแจ้งปัญหามาในช่องความเห็นด้วยว่าได้ลองทำแล้วติดปัญหาใดครับ
ขอโทษด้วยครับ
คำถามคือ ผมได้สร้างโมดูล เพื่อเช็คโฟลเดอร์ และสร้างโฟลเดอร์ใหม่หากไม่มีอยู่
ตามไฟล์แนบ ต้องปรับโค้ดส่วนนี้ยังไง ถ้าหากว่า ย้ายไฟล์ excel ไปโฟลเดอร์อื่น
แล้วไม่ต้องตามแก้ที่อยู่ในส่วนนี้ ครับ
Code: Select all
tPath = "C:\Users\THOMAS-611\OneDrive\สูตรExcel\address\" '<== Target path
For Each s In Sheets("Sheet1").Range("E1")
If Dir(tPath & s, vbDirectory) = vbNullString Then
MkDir "C:\Users\"
MkDir "C:\Users\THOMAS-611\"
MkDir "C:\Users\THOMAS-611\OneDrive\"
MkDir "C:\Users\THOMAS-611\OneDrive\สูตรExcel\"
MkDir "C:\Users\THOMAS-611\OneDrive\สูตรExcel\address\" & s
End If
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 8:29 pm
by snasui

ตัวอย่างการปรับให้ยืดหยุ่นต่อการเปลี่ยน Path ครับ
Code: Select all
Sub Create()
Dim tPath As String
Dim s As Range
Dim sPath As String
Dim a As Variant
Dim b() As Variant
Dim i As Integer
Dim p As String
On Error Resume Next
'sPath = "D:\New Folder\" '<== Source path
tPath = "C:\Users\THOMAS-611\OneDrive\ÊÙµÃExcel\address\" '<== Target path
a = VBA.Split(tPath, "\")
For i = 0 To UBound(a)
ReDim Preserve b(i)
b(i) = a(i)
With Application
p = VBA.Join(.Transpose(.Transpose(.WorksheetFunction.Index(b, 0))), "\")
End With
If Dir(p, vbDirectory) = vbNullString Then
MkDir p
End If
Next i
For Each s In Sheets("Sheet1").Range("E1")
' If Dir(tPath & s, vbDirectory) = vbNullString Then
' MkDir "C:\Users\"
' MkDir "C:\Users\THOMAS-611\"
' MkDir "C:\Users\THOMAS-611\OneDrive\"
' MkDir "C:\Users\THOMAS-611\OneDrive\ÊÙµÃExcel\"
' MkDir "C:\Users\THOMAS-611\OneDrive\ÊÙµÃExcel\address\" & s
' End If
FileCopy sPath & s.Offset(0, -3), tPath & s & "\" & s.Offset(0, -3)
Next s
End Sub
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 10:31 pm
by thanadul0816
snasui wrote: Sun Mar 20, 2022 8:29 pm

ตัวอย่างการปรับให้ยืดหยุ่นต่อการเปลี่ยน Path ครับ
Code: Select all
Sub Create()
Dim tPath As String
Dim s As Range
Dim sPath As String
Dim a As Variant
Dim b() As Variant
Dim i As Integer
Dim p As String
On Error Resume Next
'sPath = "D:\New Folder\" '<== Source path
tPath = "C:\Users\THOMAS-611\OneDrive\ÊÙµÃExcel\address\" '<== Target path
a = VBA.Split(tPath, "\")
For i = 0 To UBound(a)
ReDim Preserve b(i)
b(i) = a(i)
With Application
p = VBA.Join(.Transpose(.Transpose(.WorksheetFunction.Index(b, 0))), "\")
End With
If Dir(p, vbDirectory) = vbNullString Then
MkDir p
End If
Next i
For Each s In Sheets("Sheet1").Range("E1")
' If Dir(tPath & s, vbDirectory) = vbNullString Then
' MkDir "C:\Users\"
' MkDir "C:\Users\THOMAS-611\"
' MkDir "C:\Users\THOMAS-611\OneDrive\"
' MkDir "C:\Users\THOMAS-611\OneDrive\ÊÙµÃExcel\"
' MkDir "C:\Users\THOMAS-611\OneDrive\ÊÙµÃExcel\address\" & s
' End If
FileCopy sPath & s.Offset(0, -3), tPath & s & "\" & s.Offset(0, -3)
Next s
End Sub
ขอบคุณครับ
ผมได้ลองย้ายไฟล์แล้ว เมื่อรันโค้ด เกิด Dedug ตามรูปครับ
ได้ลองเปลี่ยน tPath เป็น = ThisWorkbook.Path แล้วก็ยังไม่ได้ครับ
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Sun Mar 20, 2022 10:56 pm
by snasui

กรณีต้องการให้เซลล์ E1 เป็น Path ด้วย ควรเขียนเช่นตัวอย่างด้านล่างครับ
Code: Select all
Sub Create()
Dim tPath As String
Dim s As Range
Dim sPath As String
Dim a As Variant
Dim b() As Variant
Dim i As Integer
Dim p As String
On Error Resume Next
'sPath = "D:\New Folder\" '<== Source path
tPath = ThisWorkbook.Path & "\" & Sheets("Sheet1").Range("e1").Value '<== Target path
'Other code
Re: สอบถามการบันทึกไฟล์ pdf ไปยังโฟลเดอร์เดียวกับไฟล์ Excel
Posted: Mon Mar 21, 2022 7:59 am
by thanadul0816
ได้ผลลัพธ์ตามต้องการแล้วครับ ขอบคุณมากครับ