根據資料表中資料,生成Powerpoint幻燈片

2021-04-08 15:57:15 字數 3663 閱讀 8049

曾經有乙個問題,一直困擾我很久。由於工作的需要,經常需要把access資料表的內容,製作成powerpoint幻燈片,常常在做大量的單調的重複的簡單勞動。作為乙個程式設計的愛好者,最不願意做的就是這種簡單機械的事情。

那麼,如何根據資料表中資料,生成powerpoint幻燈片呢?

我的具體要求是這樣的:

每個記錄 對應一張幻燈片;

每個欄位的內容,對應乙個文字框;

最好,相同字段對應的文字框,在每張幻燈片中的位置和格式是相同的.

大體過程是這樣的:

第一步:先用powerpoint新建一張幻燈片,新增五個文字框,分別用 於顯示資料表中五個欄位的值;再新增其它有關文字,並設定好各物件的格式及動畫。

第二步:在access資料中,建立以下程式:

sub lpptadd(sth as string, sym as string, slr as string, sxh as string, sda as string, stx as string)

'引數分別是:      題號,頁碼,內容,選項,答案,題型

'使用複製的方法來新增幻燈片

set newslide = activepresentation.slides(1).duplicate

with newslide

.shapes("rectangle 2").textframe.textrange.text = trim(sth)  '題號

.shapes("rectangle 3").textframe.textrange.text = trim(slr)  '內容

.shapes("rectangle 6").textframe.textrange.text = trim(sym)  '頁碼

.shapes("rectangle 7").textframe.textrange.text = trim(sda)  '答案

.shapes("text box 8").textframe.textrange.text = trim(stx)   '題型

.shapes("rectangle 9").textframe.textrange.text = trim(sxh)  '選項

end with

end sub

sub readdb()

dim s as string

dim sdb as string

dim lconn as new adodb.connection

dim rs as new adodb.recordset

sdb = "f:/bq1.mdb"

s = " provider=microsoft.jet.oledb.4.0 "

s = s & " data source= " & trim(sdb)

s = s & " ;persist security info=false"

lconn.open s

s = "select * from 題庫 "

rs.open s, lconn, adopenstatic, adlockreadonly

rs.movelast

dim i as long, n as long

dim s1 as string, s2 as string, s3 as string, s4 as string, s5 as string, s6 as string

n = rs.recordcount

rs.movefirst

i = 1

if n > 0 then

call lpptdel

do while not rs.eof

s1 = trim(str(i))

n = val("" & rs("page"))

s2 = iif(n = 0, "", trim(str(n)))

s3 = trim(rs("kttxt"))

n = val("" & rs("txcode"))

if n = 0 or n = 1 then

s4 = "a:" & trim(rs("xxone")) & chr(13)

s4 = s4 & "b:" & trim(rs("xxtwo")) & chr(13)

s4 = s4 & "c:" & trim(rs("xxthr")) & chr(13)

s4 = s4 & "d:" & trim(rs("xxfou"))

s5 = "(" + iif(rs("isokone") = 1, "a", "")

s5 = s5 & iif(rs("isoktwo") = 1, "b", "")

s5 = s5 & iif(rs("isokthr") = 1, "c", "")

s5 = s5 & iif(rs("isokfou") = 1, "d", "") & ")"

end if

select case n

case 0

s6 = "多選題"

case 1

s6 = "單選題"

case 2

s4 = ""

s5 = "(" + iif(rs("isok") = 1, "√", "×") & ")"

s6 = "判斷題"

case else

s4 = ""

s5 = ""

s6 = ""

end select

call lpptadd(s1, s2, s3, s4, s5, s6)

i = i + 1

rs.movenext

loop

end if

t2 = timer

msgbox ("生成結束! 用時  " & str(t2 - t1))

end sub

sub lpptadd(sth as string, sym as string, slr as string, sxh as string, sda as string, stx as string)

'引數分別是:      題號,頁碼,內容,選項,答案,題型

'使用複製的方法來新增幻燈片

set newslide = activepresentation.slides(1).duplicate

for each s in newslide.shapes

debug.print s.id, s.name, s.textframe.textrange.text

next

with newslide

.shapes("rectangle 2").textframe.textrange.text = trim(sth)  '題號

.shapes("rectangle 3").textframe.textrange.text = trim(slr)  '內容

.shapes("rectangle 6").textframe.textrange.text = trim(sym)  '頁碼

.shapes("rectangle 7").textframe.textrange.text = trim(sda)  '答案

.shapes("text box 8").textframe.textrange.text = trim(stx)   '題型

.shapes("rectangle 9").textframe.textrange.text = trim(sxh)  '選項

end with

end sub

根據Django Model動態生成資料表的方法

當定義好django model後,一般可以在初始化呼叫syncdb方法來自動在資料庫裡面生成相應的表。那麼如果想在後續階段想根據根據django model動態生成資料表,該怎麼辦呢?要生成資料庫表,就得先根據model的定義先生成sql語句,然後在資料庫裡面執行。並且由於要支援不同的資料庫,所生...

提取資料表中資料生成html

1.在做辦公自動化的時候,通常會遇到這樣的問題,需要從資料庫中提取資料.生成html語句 2.傳送htm到郵件中去 public static dataset getdataset string strcommandstring,string strtablename 取得ds using syst...

根據SQLServer資料表生成C 實體類

生成表的實體類工具,有助於減少 量,加快開發速度.第一副圖根據輸入的連線伺服器位址 使用者名稱 登入資料庫名 密碼連線到資料庫.如果錯誤則提示連線失敗.第二幅圖先取的當前資料庫所有的使用者建立的表 然後根據選中的表名取得資料庫中關於此表資訊的的系統表.然後將字段型別轉換為c 資料型別.並輸出的tex...