กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
601 4
URL.หัวข้อ /
URL
Excel: Set header and footer for all sheets of a workbook
ถามไว้ที่ http://www.utteraccess.com/forums/showflat.php?Cat=&Board=ms_excel&Number=191047&Forum=All_Forums&Words=TimK&Match=Username&Searchpage=0&Limit=25&Old=allposts&Main=191021&Search=true#Post191047
เขาต้องการที่จะเข้าไปใส่ Header และ Footer ในการพิมพ์งานใน Excel
Sub AddHeaderFooter()
Dim x As Integer
For x = 1 To ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(x).Select
With ActiveSheet.PageSetup
.CenterHeader = "&A" ' Sheet Name.
.CenterFooter = "&F" ' Current File Name.
End With
Next x
End Sub
ช่วงนี้ผมเองก็ต้องทำงานกับไฟล์ Excel ที่โอนข้อมูลจาก Access มาอยู่เหมือนกัน และได้มีโอกาสใช้โค้ดข้างต้นด้วย
ลองคิดดูคงจะไม่สนุกแน่ถ้าต้องเข้าไปกำหนดเองที่ละอัน ซึ่งของผมเองมีตั้ง 1 Sheets
ส่วนวันก่อนผมได้พูดถึงการ Save รูปกราฟใน Excel ให้ไปเป็นไฟล์ Gif เพื่อนำไปใช้กับโปรแกรม Word ให้ทีหนึ่งแล้ว
ก็อยากจะขอให้ตัวอย่างโค้ดในที่นี้ไว้อีกครั้งแล้วกัน
Sub Create_GIF()
Dim mychart As Chart
Dim i As Integer, x As Integer
For x = 1 To ActiveWorkbook.Sheets.Count
For i = 1 To 4
Set mychart = Sheets(x).ChartObjects(i).Chart
mychart.Export Filename:="c:\Mychart" & i & x & ".gif", FilterName:="GIF"
Next i
Next x
End Sub
จากโค้ดข้างบน มันจะวิ่งไปที่ sheet แรกจนถึงอันสุดท้าย แล้ววิ่งไปที่ chart อันแรกใน Sheet นั้นๆ แล้ว แปลงให้เป็นไฟล์ Gif แล้วเก็บไว้ในห้อง c:\ ให้ ไล่ไปเรื่อยๆ จนครบหมด
การทำงานบางครั้งเราไม่ได้ทำแค่ใน Access ก็จบ แต่ต้องนำข้อมูลไปสร้างใน Excel หรือส่งให้ Word ต่ออีกที ซึ่งเหมาะสำหรับพิมพ์รายงานสรุป ได้ดีกว่า Access ในงานบางเรื่องครับ
เขาต้องการที่จะเข้าไปใส่ Header และ Footer ในการพิมพ์งานใน Excel
Sub AddHeaderFooter()
Dim x As Integer
For x = 1 To ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(x).Select
With ActiveSheet.PageSetup
.CenterHeader = "&A" ' Sheet Name.
.CenterFooter = "&F" ' Current File Name.
End With
Next x
End Sub
ช่วงนี้ผมเองก็ต้องทำงานกับไฟล์ Excel ที่โอนข้อมูลจาก Access มาอยู่เหมือนกัน และได้มีโอกาสใช้โค้ดข้างต้นด้วย
ลองคิดดูคงจะไม่สนุกแน่ถ้าต้องเข้าไปกำหนดเองที่ละอัน ซึ่งของผมเองมีตั้ง 1 Sheets
ส่วนวันก่อนผมได้พูดถึงการ Save รูปกราฟใน Excel ให้ไปเป็นไฟล์ Gif เพื่อนำไปใช้กับโปรแกรม Word ให้ทีหนึ่งแล้ว
ก็อยากจะขอให้ตัวอย่างโค้ดในที่นี้ไว้อีกครั้งแล้วกัน
Sub Create_GIF()
Dim mychart As Chart
Dim i As Integer, x As Integer
For x = 1 To ActiveWorkbook.Sheets.Count
For i = 1 To 4
Set mychart = Sheets(x).ChartObjects(i).Chart
mychart.Export Filename:="c:\Mychart" & i & x & ".gif", FilterName:="GIF"
Next i
Next x
End Sub
จากโค้ดข้างบน มันจะวิ่งไปที่ sheet แรกจนถึงอันสุดท้าย แล้ววิ่งไปที่ chart อันแรกใน Sheet นั้นๆ แล้ว แปลงให้เป็นไฟล์ Gif แล้วเก็บไว้ในห้อง c:\ ให้ ไล่ไปเรื่อยๆ จนครบหมด
การทำงานบางครั้งเราไม่ได้ทำแค่ใน Access ก็จบ แต่ต้องนำข้อมูลไปสร้างใน Excel หรือส่งให้ Word ต่ออีกที ซึ่งเหมาะสำหรับพิมพ์รายงานสรุป ได้ดีกว่า Access ในงานบางเรื่องครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R02590
ถามอาจารย์สุภาพต่อครับ ไม่ทราบต้องนำโค๊ด Header และ Footer ดังกล่าวไปใส่ไว้ตรงไหนครับไม่ทราบจริงๆ เผื่อวันข้างหน้ามีโอกาสได้ใช้บ้าง และอีกอย่างหนึ่งที่คิดจะถามนานแล้ว คือเราสามารถจะ ลิงค์ ตารางจาก Fox มาใน Access โดยตรงได้หรือเปล่าครับ
3 @R02600
วิธีการของ MR.CHA ก็ใช้ได้ดีที่เดียว ไม่ต้องพึ่งโค้ดเลยครับ
ส่วนคำถามของคุณ ภาณุวัฒน์ ก็ให้ไปที่เมนู Tools>Macro>Visual Basic Editor>แล้วไปที่เมนู Insert>Module จากนั้นก็ Paste โค้ดลงไปครับ
เมื่อต้องการใช้งานก็ให้กด F5 หรือจะนำไปสร้างเป็นปุ่มบน Toolbar ก็ได้ครับ
ส่วนคำถามของคุณ ภาณุวัฒน์ ก็ให้ไปที่เมนู Tools>Macro>Visual Basic Editor>แล้วไปที่เมนู Insert>Module จากนั้นก็ Paste โค้ดลงไปครับ
เมื่อต้องการใช้งานก็ให้กด F5 หรือจะนำไปสร้างเป็นปุ่มบน Toolbar ก็ได้ครับ
4 @R03222
ขอถามเพิ่มเติมนะครับ แล้วถ้าต้องการให้ Format บน Excel ในส่วนของวันที่เป็นดังนี้ 18 January 2003 ไม่ทราบต้องเขียนโค๊ดอย่างไรครับ (ข้อมูลโอนมาจาก Table ใน Access ซึ่ง Format จะไม่ตามมาด้วยครับ
Time: 0.8824s
เราสามารถทำได้พร้อมกัน ด้วยการเลือก sheet พร้อมกันหลายๆ sheet (ใช้ Ctrl) แล้วเราก็ไปกำหนด Page Header หรือ Page Footer
นอกจากนี้ ถ้าเราพิมพ์ข้อความอะไรลงไปใน Cell มันยังมีผลกระทบต่อทุก Sheet อีกด้วยนะเนี่ย
จริงๆ แล้ว ผมก็เพิ่งทราบ ไม่รู้เป็นไงพออ่านข้อความนี้แล้วผมก็นึกวิธีนี้ได้ ผมเคยประสบปัญหาว่าต้องการกำหนดให้ทุก Sheet มี Page Header/Footer เหมือนกัน ซึ่งต้องเสียเวลาอย่างมากในการทำงานเหมือนกัน