iT邦幫忙

0

請問各位 ACCESS 高手 (關於列印相關重複動作之簡化)

  • 分享至 

  • xImage

小弟寫了一個 ACCESS 資料庫來記錄學生的成績

  1. 表單上有班級及姓名兩個下選單
  2. 選擇預覽列印按鈕
  3. 在預覽列印畫面選擇列印成 PDF
  4. 選擇班級的資料夾並以該學生的姓名作為檔名存檔
    請問各位大神是否有機會使用巨集 或 VBA來加速這整個步驟
    因為班級數有幾十個再加上每班40位學生,每次列印一次所有學生,小弟都要花費好多時間重複以上動作,手都要抽筋了...

謝謝各位老師的回覆,小弟錄製了一段影片,希望能讓各位高手更了解小弟遭遇的問題,再次感謝大家的回覆...
https://youtu.be/3-xeuiY23L4

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2023-03-24 15:20:41 檢舉
錄巨集把你1~4錄一次,然後用for迴圈來跑。
https://learn.microsoft.com/zh-tw/office/vba/language/concepts/getting-started/using-for-eachnext-statements
ylyangc iT邦新手 5 級 ‧ 2023-03-24 15:54:50 檢舉
謝謝您的建議,不過爬了一下文,錄製巨集似乎只有 EXCEL 有提供這個功能,ACCESS 似乎沒有呢 !
https://ithelp.ithome.com.tw/articles/10184786
菩薩慈悲:最好是用螢幕分享演示一下您日常操作的過程給末學看,如果都沒菩薩慈悲回答,末學我能力又可及的話,再像錄製巨集菩薩一樣「錄製」一個巨集給您試試。感恩感恩 南無阿彌陀佛
Google Meet 我現在在線上。若不在就是下線了。菩薩您若不棄,再聯絡我看看,這裡自介及google都找得到末學。阿彌陀佛
https://meet.google.com/vaa-tyhh-xug
您也可以試著用用Bing大菩薩或chatGPT大菩薩或YouChat大菩薩或Adrenaline大菩薩問看看,請諸大菩薩幫您寫個Access的巨集 感恩感恩 讚歎讚歎諸佛菩薩 南無阿彌陀佛
http://ai.com/
https://www.bing.com/search?form=M6003A&OCID=M6003A&q=Bing+AI&showconv=1
https://you.com/search?q=who+are+you&tbm=youchat
https://useadrenaline.com/playground
淺水員 iT邦大師 6 級 ‧ 2023-03-25 12:06:47 檢舉
有沒有範例檔案?
(留2個班級,然後姓名等個資可以用假資料取代)
ylyangc iT邦新手 5 級 ‧ 2023-03-25 17:47:22 檢舉
謝謝各位老師的回覆,小弟錄製了一段影片,希望能讓各位高手更了解小弟遭遇的問題,再次感謝大家的回覆...
https://youtu.be/3-xeuiY23L4
ylyangc菩薩慈悲:看過影片了。這VBA 應該是可以作到的
1.【表單上有班級及姓名兩個下選單】。請問是要指定班級及姓名後才列印,還是只要把下拉選單中符合條件的(或全部的)都印出來(不用一個個指定)就好?感恩感恩 南無阿彌陀佛
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
淺水員
iT邦大師 6 級 ‧ 2023-03-25 15:13:42

做了一個範例檔

我沒用到 VBA,主要是:

  1. 用報表精靈,過程中設定以學生姓名為群組
  2. 「設計檢視」這個報表,在群組那邊「群組首」那邊,從右側的屬性表有個「強制跳頁」選「在區段前」

這樣的話就會以學生姓名分開列印到不同的頁面了

0
海綿寶寶
iT邦大神 1 級 ‧ 2023-03-25 18:07:38

找了三篇連結,大同小異,看看合不合用
連結一
連結二
連結三

做了個範例(Office 365 的 Access 2007-2016 檔案格式),結果如下
1.一鍵產生多個 pdf 檔案
https://ithelp.ithome.com.tw/upload/images/20230326/20001787Ju41XXpHUg.png
2.pdf 內容
https://ithelp.ithome.com.tw/upload/images/20230326/20001787uSjdliJqn2.png
3.表單
https://ithelp.ithome.com.tw/upload/images/20230326/20001787sjky5BLbr3.png
4.報表
https://ithelp.ithome.com.tw/upload/images/20230326/20001787RwYaA0gmcG.png
5.資料表CLASS
https://ithelp.ithome.com.tw/upload/images/20230326/20001787yLsQdyYSNx.png
6.資料表STUDENT
https://ithelp.ithome.com.tw/upload/images/20230326/20001787yomaqbBPX8.png

ylyangc iT邦新手 5 級 ‧ 2023-03-25 18:12:10 檢舉

謝謝大神的提點,小弟沒有 VBA 基礎,會嘗試研究一下,再次感謝您

做了個範例,貼在上面

ylyangc iT邦新手 5 級 ‧ 2023-03-27 15:21:16 檢舉

謝謝您,我再試試,遇到困難再請教您

0
BeEvil_Y
iT邦新手 4 級 ‧ 2023-03-30 14:14:50

一、先透過VBA抓出你「你已選的班級」資料庫所有學生的姓名
參考資料:
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao

抓資料庫

    Dim dbs As DAO.Database
    Dim rsSQL As DAO.Recordset
    Dim strSQL As String
    
    Set dbs = CurrentDb
    
    'Open a snapshot-type Recordset based on an SQL statement
    strSQL = "SELECT * FROM Table1 WHERE Field2 = 33"
    Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
    array_student(1, 1) = rsSQL![name]

不想用SQL
直接用查詢表也可

    Set rsQuery = dbs.OpenRecordset("qryMyQuery", dbOpenDynaset)
    array_student(1, 1) = rsQuery![name]

二、在VBA寫一個函數給查詢準則(where那裡)

VBA

Public student_name
Public Function 姓名() 
姓名 = student_name
End Function

查詢資料表準則裡

Like "*" & 姓名() & "*"

三、作一個迴圈遍歷整個班級(王小明、李大同……),並列印成PDF
參考資料:
https://stackoverflow.com/questions/34799300/simple-vba-code-to-export-access-report-to-saved-pdf-file-when-code-is-run

輸出PDF

DoCmd.OutputTo acOutputReport, "Employee1", _ 
acFormatPDF,"C:\Users\desktop\PDFs\Report1.pdf"

因為你有做第二個步驟。
所以迴圈內簡簡單單讓它
student_name = "資料庫的姓名"
就能幫你找學生(等同你影片裡選第二個下拉的動作)
以上不到30行程式碼,就結束了。

因為東西在你手上,我們沒辦法幫你寫,你得自已去摸索。

我要發表回答

立即登入回答