999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用EXCEL VBA批量處理科目匯總表

2021-03-01 23:22:49許洪品
科學與財富 2021年29期

摘 要:批量憑證裝訂是業務量較大單位財務基礎工作的一個難題。以用友財務軟件U8為例,利用Excel和VBA,通過按照預設的年、月及憑證范圍,批量完成科目匯總表、憑證封面及包角的打印,以期為提高會計基礎工作效率提供一種思路。

關鍵詞:批量處理;科目匯總表;excel;VBA

0 ?引 ?言

隨著IT技術的不斷普及,以關系數據庫為基礎的管理系統在日常工作中得以廣泛應用,憑證裝訂前的科目匯總表、憑證封面及包角填寫成為會計基礎工作一項必要內容,但對憑證業務量大的單位如何對該類工作進行批量處理成為一個難以解決的問題。目前較常見的解決辦法有兩種:一種是通過用友財務軟件進行查詢打印;另一種是專門開發某一管理系統的軟件,根據操作結果來判分。但這兩種方法存在靈活性差、開發不易的問題。

以用友U8的憑證和科目總賬為例,通過取自數據庫中的數據,利用Excel和VBA,按照預定的的年、月、憑證范圍來批量完成這一過程。

1 ?相關工作簿

為完成批量處理過程,設計了sheet1(分冊)、sheet7(科目匯總)兩個工作表,連接分冊也為憑證信息文件,科目匯總為科目匯總表查詢結果,兩表結構如圖1、圖2。

1.1 ?憑證信息表:sheet1(分冊)

如圖1所示,工作表中,B1為賬務年份,B2為賬務月份,B3為自動統計的憑證總冊數;A列A5以下為記賬憑證第幾冊,B列B5以下為憑證起號,C列C5以下為憑證止號。

如圖2所示,工作表的第二行取自分冊工作表,第三行A列為科目編碼;B列為科目名稱,C列為金額合計借方,D列為金額合計貸方;從第四行開始是根據用友財務軟件U8數據庫中的gl_accvouch表的內容統計所得。

批量處理分下3個步驟。

(1)錄入憑證起止號。先在分冊表的B1輸入年份;在B2選擇月份,B2運用數據驗證菜單功能,設置月份序列,提供下拉列表;B3輸入函數“=COUNT(C6:C200)”,自動統計憑證冊數。

然后,自C6開始向下,逐本輸入每本憑證的末張憑證號。

(2)設文本框、命令按鈕。在sheet7(科目匯總)中,插入文本框,存儲第幾冊憑證。插入兩個命令按鈕,一個上顯示"上一頁",另一個上顯示“下一頁”。

(3)用程序生成科目匯總表。在sheet7(科目匯總)中,按ALT+Fll進入VBE窗口后輸入取數程序代碼,執行后從第四行開始顯示統計結果。

3 ?程序代碼

程序代碼如下:[2]

Sub hzb()

Dim i

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim strCn As String, strSQL As String

strCn="Provider=sqloledb;Server=caiwu;Database=UFDATA_011_2019;Uid=sa;Pwd=******;"

'strCn = "Provider=sqloledb;Server=yhcwb;Database=pubs;Uid=sa;Pwd=;"

cn.Open strCn

Rows("4:65536").Select

Selection.ClearContents

ActiveSheet.Cells(1, 1).Select

Dim cMaxPz As String, cMinPz As String

Dim cPZ As String

Dim iLen As Integer, iPos As Integer

'***取出憑證號***

iPos = InStr(1, ActiveSheet.Cells(2, 2), "-")

If iPos = 0 Then ?'******只輸入一個憑證號

cPZ = ActiveSheet.Cells(2, 2)

Else

iLen = Len(Trim(ActiveSheet.Cells(2, 2)))

cMinPz = Left(ActiveSheet.Cells(2, 2), iPos - 1)

cMaxPz = Right(ActiveSheet.Cells(2, 2), iLen - iPos)

End If

'**寫入科目代碼和借貸余額**

If iPos = 0 Then

strSQL = "SELECT ?LEFT(ccode,4) AS km,SUM(md) AS jf,SUM(mc) AS df ?FROM GL_accvouch WHERE iyear="

strSQL = strSQL & ActiveSheet.Cells(2, 3) & " AND iperiod=" & ActiveSheet.Cells(2, 4)

strSQL = strSQL & " AND ino_id=" & cPZ

strSQL = strSQL & " GROUP BY LEFT(ccode,4) ORDER BY LEFT(ccode,4) "

Else

strSQL = "SELECT ?LEFT(ccode,4) AS km,SUM(md) AS jf,SUM(mc) AS df ?FROM GL_accvouch WHERE iyear="

strSQL = strSQL & ActiveSheet.Cells(2, 3) & " AND iperiod=" & ActiveSheet.Cells(2, 4)

strSQL = strSQL & " AND ino_id>=" & cMinPz

strSQL = strSQL & " AND ino_id<=" & cMaxPz

strSQL = strSQL & " GROUP BY LEFT(ccode,4) ORDER BY LEFT(ccode,4) "

End If

rs.Open strSQL, cn

i = 4

Do While Not rs.EOF

ActiveSheet.Cells(i, 1) = rs("km")

ActiveSheet.Cells(i, 3) = Format(rs("jf"), "##,##0.00")

ActiveSheet.Cells(i, 4) = Format(rs("df"), "##,##0.00")

i = i + 1

rs.MoveNext

Loop

Set rs = Nothing

'***************************

'**寫入科目名稱*

strSQL = "select ccode,ccode_name from code where iyear=" & ActiveSheet.Cells(2, 3) & " and len(ccode)=4 order by ccode"

rs.Open strSQL, cn

Do While Not rs.EOF

For i = 4 To ActiveSheet.UsedRange.Rows.Count

If ActiveSheet.Cells(i, 1) = rs("ccode") Then

ActiveSheet.Cells(i, 2) = rs("ccode_name")

End If

Next i

rs.MoveNext

Loop

Set rs = Nothing

cn.Close

r = Range("d650").End(xlUp).Row

Sheet7.Cells(Range("d650").End(xlUp).Row + 1, 4) = "單位:江蘇省地質調查研究院"

r = Range("d650").End(xlUp).Row

Cells(r, 4).HorizontalAlignment = xlRight

End Sub

‘**上一頁**

Private Sub CommandButton1_Click()

If chTxtBx.Value > 1 Then ? '第幾冊憑證

chTxtBx.Value = chTxtBx.Value - 1

qspzh = Sheet1.Cells(chTxtBx.Value + 5, 2).Text

zzpzh = Sheet1.Cells(chTxtBx.Value + 5, 3).Text

Sheet7.Cells(2, 2) = qspzh + "-" + zzpzh

hzb ? ? ? ? ? ? ? ? ? ?'按條件取數

Else

MsgBox "Hi,已經是第一冊了"

End If

End Sub

‘**下一頁**

Private Sub CommandButton2_Click()

fff = Sheet1.Cells(3, 2).Value

ddd = chTxtBx.Value

If Val(ddd) < fff Then

chTxtBx.Value = chTxtBx.Value + 1

qspzh = Sheet1.Cells(chTxtBx.Value + 5, 2).Text

zzpzh = Sheet1.Cells(chTxtBx.Value + 5, 3).Text

Sheet7.Cells(2, 2) = qspzh + "-" + zzpzh

hzb ? '按條件取數

Else

MsgBox "恭喜,已經是最后一冊了"

End If

End Sub

‘**工作表激活,按第一本憑證參數取數**

Private Sub Worksheet_Activate()

chTxtBx.Value = 1

qspzh = Sheet1.Cells(chTxtBx.Value + 5, 2).Text

zzpzh = Sheet1.Cells(chTxtBx.Value + 5, 3).Text

Sheet7.Cells(2, 2) = qspzh + "-" + zzpzh

hzb ? ? ? '按條件取數

End Sub

4 ?方法的優點與結論

該方法在Excel2003、Excel2010和用友U8環境下測試通過,其具有下列優點。

(1)簡單易用。該辦法主要利用EXCEL的易操作性進行處理,只要用VBA通過SQL語句將數據取到工作簿中,完成分冊表中相關設置,利用上述代碼即可完成科目匯總表輸出功能。

(2)一數三用。分冊參數可以用于封面批量打印和包角批量打印的數據源,只要按照封面和包角的格式略加設計調整。

(3)可移植性強。上述程序代碼不受用友財務系統本身各表結構影響,具有通用性。其他用戶只需要修改取數程序代碼中的服務器地址和數據庫名稱,就可以使用該方法法來批量處理科目匯總表、憑證封面和憑證包角的打印。

參考文獻:

[1] 衣光臻. 分旬科目匯總表在Excel中的模型構建[J]. 商業會計,2014(11):128-129.

[2] 羅剛軍. Excel VBA程序開發自學寶典[M]. 3版. 北京:電子工業出版社,2014.

作者簡介:

許洪品,男,漢族,江蘇建湖人,1971年5.26,本科,會計師,江蘇省地質調查研究院(江蘇 南京)(210018),研究方向:會計學理論與實踐

課題項目:此文為江蘇省國土資源廳課題“江蘇省地質勘查基金項目資金管理系統開發”項目階段性成果之一。

主站蜘蛛池模板: 日本人妻丰满熟妇区| 青青草原国产免费av观看| 制服丝袜一区| 欧美色综合网站| 午夜日本永久乱码免费播放片| 亚洲无码高清免费视频亚洲| 国产理论一区| 亚洲日本精品一区二区| 亚洲欧美另类久久久精品播放的| 综合色婷婷| 亚洲AV无码乱码在线观看裸奔| 先锋资源久久| 国产福利拍拍拍| 国产一区成人| 亚洲国产精品一区二区第一页免 | 亚洲欧美另类日本| 亚洲国产理论片在线播放| 成人精品视频一区二区在线 | 91成人在线观看视频| 青青久久91| 日韩精品高清自在线| 一级福利视频| 最新精品国偷自产在线| 中文字幕人妻无码系列第三区| 欧美伦理一区| 国产97视频在线| 国产地址二永久伊甸园| 中文字幕在线观看日本| 国产极品美女在线观看| 成人福利一区二区视频在线| 日韩小视频网站hq| 亚洲第一色网站| 动漫精品中文字幕无码| 青青操国产| 国产免费自拍视频| 国产99免费视频| 国产精品一区二区不卡的视频| 污网站在线观看视频| 69视频国产| 成人精品午夜福利在线播放| 国产欧美精品一区二区| 福利在线一区| 一区二区三区国产| 直接黄91麻豆网站| a天堂视频| 在线免费亚洲无码视频| 美女被操91视频| 国产高清无码麻豆精品| 乱系列中文字幕在线视频| 国产成人亚洲综合a∨婷婷| 亚洲精品777| 国产日韩av在线播放| 精品国产免费第一区二区三区日韩| 日韩美毛片| 女人av社区男人的天堂| 亚洲精品片911| 色悠久久久| 日本久久网站| 国产产在线精品亚洲aavv| 福利视频久久| 无码福利日韩神码福利片| 欧美日本在线观看| 欧美一区精品| 欧美天天干| 久久女人网| 午夜老司机永久免费看片| 亚洲区一区| 国产成人a毛片在线| 欧美色图久久| 少妇高潮惨叫久久久久久| 国产麻豆aⅴ精品无码| 亚洲第一在线播放| 国产成人AV综合久久| 青青青草国产| 亚洲成aⅴ人在线观看| 色爽网免费视频| 亚洲伊人久久精品影院| 国产丝袜第一页| 2021国产精品自产拍在线| 国产高清无码第一十页在线观看| 亚洲第一视频免费在线| 久久精品人妻中文视频|