星期一剛上班,同事小張迎上來笑嘻嘻地說:“主任讓你務(wù)必于今天上午將準(zhǔn)考證打印出來,數(shù)據(jù)已錄好了,照片已加入字段”。想起今年第11期F6版《中國電腦教育報》的一篇《自己動手制作學(xué)生胸卡》的文章,我想用VFP的報表功能實現(xiàn)帶照片的準(zhǔn)考證套打,應(yīng)該是很輕松的事。 打開小張遞過來的數(shù)據(jù)盤,原來數(shù)據(jù)全部用Excel錄入,照片作為其中的一個字段已放在單元格內(nèi)(如圖1),如果用VFP,還需將工作表轉(zhuǎn)換成DBF格式,并將照片復(fù)制成一個個單獨的圖片文件,好幾百人的照片,沒有幾天的功夫怕是完成不了任務(wù)的。還是在Excel上想想辦法吧,看有沒有捷徑可走。通過探索,筆者終于將此問題解決了,現(xiàn)將方法介紹如下。
1. 365JT設(shè)計套打模板,建立數(shù)據(jù)關(guān)聯(lián) 首先將A21單元格作為查詢的關(guān)鍵數(shù)值,在A20—G20單元格中分別輸入[序號]、[姓名]、[級別]等字段。在B21單元格中輸入公式“=IF(VLOOKUP(A21,Sheet1!A2:I1000,2)=0,"",VLOOKUP(A21,Sheet1!A2:I1000,2))”,在C21單元格中輸入公式“=IF(VLOOKUP(A21,Sheet1!A2:I1000,6)=0,"",VLOOKUP(A21,Sheet1!A2:I1000,6))”,其他依此類推。這樣就建立了準(zhǔn)考證填充數(shù)據(jù)與Sheet1表間的關(guān)聯(lián)。 下一步就是要建立數(shù)據(jù)與準(zhǔn)考證相應(yīng)矩形框的關(guān)聯(lián),以準(zhǔn)考證中[姓名]字段為例,鼠標(biāo)單擊該矩形框,在編輯欄右側(cè)輸入“=”符號,然后用鼠標(biāo)點擊需要填入數(shù)據(jù)的B21單元格,這樣矩形框就和B21單元格中的數(shù)據(jù)建立了聯(lián)系。只要單元格數(shù)據(jù)變化,則矩形框數(shù)據(jù)也跟著變化,其他依此類推。這樣,只要在A21單元格輸入序號值,那么Sheet1表中相應(yīng)序號行的數(shù)據(jù)就會在準(zhǔn)考證模板中自動生成。上述工作完成后,按“Shift”鍵選中所有矩形框,設(shè)置矩形框格式,包括字體、大小、對齊、顏色和線條等,特別是選中無填充色和無線條色。 2. 定義名稱,導(dǎo)入照片 (1)定義名稱:執(zhí)行“插入→名稱→定義”命令,打開如圖3所示“定義名稱”對話框,將名稱定義為“A”,在“引用位置”文本框中輸入公式“=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)”,按下〔確定〕按鈕返回。該公式建立了查詢數(shù)據(jù)的動態(tài)地址。接著用同樣方法,再定義另一個名叫“X”的名稱,里面包括公式“X=INDIRECT(ADDRESS(MATCH(Sheet2!$A$21,A,0),9,1,,"Sheet1"))”,該公式表示當(dāng)動態(tài)地址欄為Sheet2表中A21單元格數(shù)值時,返回Sheet1表中第9列即照片所在列單元格內(nèi)容。
(2)導(dǎo)入圖片:選取sheet2工作表,執(zhí)行“視圖→工具欄→控件工具箱”命令,打開“控制工具箱”窗口。點擊圖像框或文字框按鈕,在準(zhǔn)考證需要填充照片的位置畫出相同大小的圖片框或文字框。選取文字框(圖像框)后,將編輯欄中“=EMBED("Forms.TextBox.1",""”改成“=X”,如圖4,這樣只要A21單元格數(shù)值變化時,照片框中相應(yīng)的照片就會發(fā)生變化。 3. 制作微調(diào)按鈕,編寫宏代碼 執(zhí)行“工具→宏→Visul Basic編輯器”命令,在Visul Basic編輯器中選擇“插入→添加模塊”,在代碼窗口輸入以下代碼: Sub 打印() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Call dy End Sub Sub dy() Dim a%, b$, c$, abc$ a = Sheets("Sheet2").Cells(19, 2).Value b = Sheets("Sheet2").Cells(19, 4).Value (說明:a即B19單元格,是圖5中打印第×頁至第×頁中的起始頁,b即D19單元格,是終止頁。) If a < b Then a = a + 1 Sheets("Sheet2").Cells(19, 2).Value = a Call 打印 End If End Sub Private Sub CommandButton1_Click() Call 打印 End Sub |
聯(lián)系客服