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),研究方向:會計學理論與實踐

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

主站蜘蛛池模板: 草逼视频国产| 亚洲男人的天堂久久香蕉| 五月天天天色| 无码国内精品人妻少妇蜜桃视频| 久久精品一卡日本电影| 热久久综合这里只有精品电影| 97在线碰| 国产一区三区二区中文在线| 欧美成人精品在线| 欧美成人在线免费| 亚洲视频三级| 亚洲无码电影| 亚洲乱亚洲乱妇24p| 国产精品嫩草影院视频| 狠狠色成人综合首页| 国产青青操| 亚洲人人视频| 国产精品三级专区| 国产精品香蕉在线| 午夜无码一区二区三区在线app| 久久semm亚洲国产| 青青草91视频| 欧美一级黄色影院| 亚洲视频免| 亚洲欧美成aⅴ人在线观看 | 999福利激情视频| 国产区成人精品视频| 久久精品亚洲热综合一区二区| a天堂视频| 538国产在线| 亚洲无线国产观看| 区国产精品搜索视频| 亚洲V日韩V无码一区二区| 国产成人福利在线视老湿机| 国产在线观看成人91| 亚洲Aⅴ无码专区在线观看q| 东京热一区二区三区无码视频| www.av男人.com| 黄色污网站在线观看| 国产精品亚欧美一区二区三区| 亚洲人成网站色7799在线播放| 亚洲精品不卡午夜精品| 思思热精品在线8| 精品欧美日韩国产日漫一区不卡| 精品一区二区久久久久网站| 亚洲精品第五页| 日本www色视频| 色欲色欲久久综合网| 国产成人乱无码视频| 女人毛片a级大学毛片免费| 国产9191精品免费观看| 欧美日韩在线观看一区二区三区| 香蕉久久国产精品免| 亚洲一区二区三区中文字幕5566| 亚洲午夜综合网| 国产女人在线视频| 日本在线欧美在线| 九九视频免费在线观看| 无码'专区第一页| 成人午夜网址| 强奷白丝美女在线观看 | 热99re99首页精品亚洲五月天| 国产欧美日韩精品综合在线| 中文字幕亚洲第一| 欧美日韩一区二区三区四区在线观看 | 国产麻豆精品手机在线观看| aaa国产一级毛片| 欧美日韩精品综合在线一区| 在线观看无码a∨| 亚洲欧美精品日韩欧美| 亚洲精品777| 日本一区高清| 亚洲浓毛av| 本亚洲精品网站| 亚洲天堂自拍| 国产精品自拍合集| 无码aaa视频| 91系列在线观看| 中文字幕人妻无码系列第三区| 四虎精品免费久久| 亚洲91在线精品| 欧美高清国产|