: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

กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#1

Post by godman »

ถ้าผมได้โค้ดแบบนี้ แต่ปรากฏว่ามัน error เมื่อนำไปใช้งาน
ที่มาที่ไป คือ ผมอยากจะสร้างไฟล์ใหม่ โดยใช้ชื่อไฟล์โดยอ้างอิงชื่อไฟล์ใหม่จากเซลใดก็ได้ ในที่นี่ผมให้เป็นเซล A1 ของชี้ตที่มี macro นี้อยู่ครับ โดยอยากให้มันยกทั้งชี้ตนี้ ชี้ตเดียวแล้วไปสร้างไฟล์ใหม่ ครับ ไม่ทราบต้องปรับแต่งโค้ดตรงใหนให้ทำงานได้ครับ
ลักษณะ error จะออกมาประมาณนี้ครับ
Commpli error
Expect fuction or variable

Code: Select all

Sub AddNew()
     
    Dim wbName As String
     
    wbName = [A1].Value
     
    Set NewBook = Workbooks.Add
    With NewBook
        .Title = wbName
         ' add your additional code here
        .SaveAs Filename:=wbName
    End With
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#2

Post by snasui »

:D กรณีไม่ต้องการให้เกิด Error ให้ลบ Code ใน Module1 ทิ้งไปครับ

ที่ Error เพราะว่าไปกำหนดให้ตัวแปรเป็นชื่อเดียวกับชื่อ Procedure ใน Module1 ครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#3

Post by godman »

ขอบคุณครับ สำหรับคำแนะนำ ผมได้ไปลบออกและสามารถใช้การได้ดี แต่ ยังไม่สามารถ copy ข้อมูลไปไว้ใน file ใหม่ได้ครับ คือ ความต้องการของผมคือ ให้ยกไปตั้งชื่อไฟล์ใหม่และนำข้อมูลใน sheet นั้นไปทั้งหมดครับ ผมลองเขียน code ให้มัน Copy Paste แต่ยังไม่สามารถรันได้ ครับ
ช่วยแนะนำด้วยครับว่าต้องเขียนโค้ดอย่างไรให้ทำงานได้ อาจจะไม่เอา object ก็ได้ครับ

Code: Select all

Sub AddNew()
     
    Dim wbName As String
     
    wbName = [A1].Value
     
    Set NewBook = Workbooks.Add
    With NewBook
        .Title = wbName
         ' add your additional code here
        .SaveAs Filename:=wbName
    End With
    Call CopyPaste
    
End Sub

Sub CopyPaste()
'
' Macro3 Macro
'

'
    Range("A2:G6").Select
    Selection.Copy
    Windows("UserID.xlsx").Activate
    Range("A2").Select
    ActiveSheet.Paste
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#4

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub AddNew()
     
    Dim wbName As String
    Dim rAll As Range
    Dim rTarget As Range
    
    Set rAll = Sheets("tblUsers").Range("A2:G6")
    wbName = [A1].Value
     
    Set NewBook = Workbooks.Add
    With NewBook
        Set rTarget = Sheets("Sheet1").Range("A1")
        .Title = wbName
         ' add your additional code here
         rAll.Copy rTarget
        .SaveAs Filename:=wbName
    End With
'    Call CopyPaste
    
End Sub
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#5

Post by godman »

ขอบคุณผู้รู้ทุกท่านครับ ตอนนี้ใช้งานได้ระดับดีทีเดียว เชื่อว่าจะนำไป apply ใช้ได้มากมายในงาน
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#6

Post by godman »

พอดีว่าผมได้ไปดัดแปลงโค้ดไปใส่ใน workbook ที่ต้องการใช้จริงๆ ปรากฏว่าขึ้น errror ว่า Compile error Expect fuction or variable สาเหตุและแนวทางแก้ไขทำได้อย่างไรครับ

Code: Select all

Sub AddNewbomxxTEST()
     
    Dim wbName As String
    Dim rAll As Range
    Dim rTarget As Range
    
    Set rAll = Sheets("Report0").Range("A2:k43")
    wbName = [I1].Value
     
    Set NewBook = Workbooks.Add
    With NewBook
        Set rTarget = Sheets("Sheet1").Range("A1")
        .Title = wbName
         ' add your additional code here
         rAll.Copy rTarget
        .SaveAs Filename:=wbName
    End With
'    Call CopyPaste
    
End Sub

    
Sub CopyPaste()
'
' Macro3 Macro
'

'
    Range("A2:k43").Select
    Selection.Copy
    Windows("UserID.xlsx").Activate
    Range("A2").Select
    ActiveSheet.Paste
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#7

Post by snasui »

:D Code ในไฟล์แนบกับที่เขียนมาไม่เหมือนกันครับ ถ้ายังไม่ได้เขียนไว้ในไฟล์แนบ ช่วยเขียนแล้วแนบมาใหม่ครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#8

Post by godman »

หลังจากที่ผมไปปรับโน่นปรับนี่ ก็ใช้ได้ครับ แต่ว่าผมได้ใส่โค้ดเพื่อต้องการให้มัน สามารถ copy paste special ครั้งแรกให้วางเป็น value แล้วก็อีกครั้งเป็น format อีกครั้งเป็น colump width จุดประสงค์เพื่อให้เหมือนกับต้นทาง สำหรับไฟล์ที่ถูกสร้างใหม่นี้ ผมใช้โค้ดข้างล่างนี้ แต่ว่า ไม่สามารถทำให้เป็นเหมือนกับต้นทางได้่ครับ รู้สึกว่ามันมาแบบไม่กำหนดรูปแบบให้ อยากให้มันรักษารูปแบบตามต้นทาง และไม่อยากให้แสดง grid line ไม่ทราบต้องปรับโค้ดส่วนใหนครับ ขอบคุณครับ ผมแนบไฟล์มาด้วย

Code: Select all

Sub AddNew()
     
  Dim wbName As String
    Dim rAll As Range
    Dim rTarget As Range
    
    Set rAll = Sheets("Report0").Range("A1:k43")
    wbName = [I1].Value
     
    Set NewBook = Workbooks.Add
    With NewBook
        Set rTarget = Sheets("Sheet1").Range("A1")
        .Title = wbName
         ' add your additional code here
         rAll.Copy rTarget
        .SaveAs Filename:=wbName
    End With
'    Call CopyPasteokmai
    
End Sub

Sub CopyPasteokmai()
 Range("A1:k43").Select
    Selection.Copy
    Windows("UserID.xlsx").Activate
    Range("A2").Select
    ActiveSheet.Paste
 Windows("UserID.xlsx").Activate
Range("A1:J42").Select
    Selection.Copy
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("L25").Select
End Sub
You do not have the required permissions to view the files attached to this post.
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#9

Post by niwat2811 »

ลองแบบนี้ไม่ทราบว่าตรงกับความต้องการไหมครับ

Code: Select all

Sub CreateNew()
    Sheets("Report0").Select
    Sheets("Report0").Copy
Application.DisplayAlerts = False
With ActiveWorkbook
wbName = [I1].Value
    .Title = wbName
    .SaveAs Filename:=wbName
End With
Application.DisplayAlerts = True
End Sub
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#10

Post by godman »

สุดยอดเลยครับ ตรงความต้องการเป้ะ ผมอยากได้แบบนี้แหละ ขอบพระคุณเป็นอย่างสูง
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#11

Post by godman »

จากโค้ดนี้ เป็นการ copy sheet ไปไว้อีกชี้ตโดยไม่เอาสูตรไปด้วย ผมมีความต้องการเพิ่มครับ ถ้าผมต้องการให้ระบุ folder ที่จะนำไฟล์ใหม่นี้ไปเก็บไว้ในที่เดียวกัน
ผมใช้ชื่อโฟล์เดอร์ว่า L:\Quality System\YEAR 2013
ผมจะต้องนำที่อยู่ folder ไปไว้ที่ส่วนใหนของโค้ดนี้ครับ

Code: Select all

Sub CreateNew()
 Sheets("Report0").Select
    Sheets("Report0").Copy
Application.DisplayAlerts = False
With ActiveWorkbook
wbName = [I1].Value
    .Title = wbName
    .SaveAs Filename:=wbName
End With
Application.DisplayAlerts = True
End Sub
User avatar
tupthai
Bronze
Bronze
Posts: 302
Joined: Sat Feb 04, 2012 2:49 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#12

Post by tupthai »

Code: Select all

.SaveAs Filename:"L:\Quality System\YEAR 2013\"&wbName
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#13

Post by godman »

ขอบพระคุณเป็นอย่างสูงครับ คุณ tubthai
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#14

Post by godman »

สวัสดีครับ
เนื่องจากผมเคยตั้งกระทู้เกี่ยวกับการ สร้างไฟล์ใหม่จากชี้ตและตั้งชื่อไฟล์ใหม่แบบไดนามิค ตามเซลล์
ผมได้นำไปใช้ หลายงาน แต่มีปัญหางานหนึ่งที่ต้องสร้างโค้ดไว้ให้กด submit แล้วส่งไฟล์ที่แยกออกไปไปให้ผู้ใช้งานกรอกข้อมูลในช่องสีแดง ให้ครบ ปรากฏว่าพอนำไปใช้ macro มันยังอ้างอิงจาก master file อยู่ครับ ทำให้ไฟล์ที่แยกออกไป แม้ว่าจะใส่ข้อมูลแล้ว แต่ว่ามันก็ยังจดจำไฟล์ master อยู่ ผมสังเกตุดูการลิ้งมายังไฟล์ต้นฉบับ
ผมอยากทราบว่า ทำอย่างไรจะให้มันทำงานกับไฟล์ที่แยกออกไปได้ครับ
ผมใช้โค้ด if else แบบนี้ แล้วให้มัน call โค้ดสร้างไฟล์ครับ

Code: Select all

Sub checkred_blank()
If Worksheets("report0").Range("H10") = "" Then
 MsgBox "You have to enter data"
 Else
  Call Sheet1.CreateNew
 End If
 End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#15

Post by snasui »

:D การสร้างไฟล์ใหม่โดยการ Copy Sheet ไปจะไม่มี Code VBA ติดไปด้วย ยกเว้นจะใช้การ Save As ไป ดังนั้นการเรียกใช้ Macro จึงจะเรียกใช้จากไฟล์หลักครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#16

Post by godman »

ขอบคุณอาจารย์มากครับ ผมทำได้แล้วครับ ผมไปเก็บมาโครไว้ใน personal.xlsb ครับ เรียกใช้จากที่นี่ปรากฏว่าทำงานได้เฉยเลย
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#17

Post by yodpao.b »

ไม่มีอะไรครับ อยากเก็บหน้านี้ไว้
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#18

Post by godman »

สวัสดีครับ
ผมได้นำโค้ดข้างล่างไปใช้ เพื่อ copy ไปสร้างไฟล์ห่ม่ โดยอ้างอิงชื่อจาก เซลล์ I1 แต่มีความต้องการเพิ่มเติมคือ มัน copy ไปแต่ข้อความ ทำอย่างไรให้มัน copy โค้ด VBA ทั้งหมดไปด้วยกับไฟล์ใหม่ครับ ต้องเปลี่ยนส่วนใหนของโค้ดนี้ครับ ขอบคุณครับ สำหรับเวลาที่มาช่วยครับ

Code: Select all

Sub AddNew()
     
  Dim wbName As String
    Dim rAll As Range
    Dim rTarget As Range
    
    Set rAll = Sheets("Report0").Range("A1:k43")
    wbName = [I1].Value
     
    Set NewBook = Workbooks.Add
    With NewBook
        Set rTarget = Sheets("Sheet1").Range("A1")
        .Title = wbName
         ' add your additional code here
         rAll.Copy rTarget
        .SaveAs Filename:="D:\KEEPER_BOM\" & wbName
       
    End With
'    Call CopyPasteokmai
    
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กดปุ่มแล้วให้สร้างไฟล์ใหม่จากชื่ออ้างเซลล์

#19

Post by snasui »

:D ไฟล์ที่จะมี Macro ได้จะต้องมีนามสกุลเป็นอย่างอื่นที่ไม่ใช่ .xlsx ครับ
Post Reply