您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > VBA自定义用友报表函数
分类:VBA学习字号:大中小'取科目的期末值,支持未记账取数和辅助核算,熟悉VBA设计和用友数据库结构的网友可据此开发出更多实用的报表函数。我将其命名为UfoInExcel程序,意思是在Excel中可以像UFO一样取数,而实用性更胜于UFO,因为Excel的优越性地球人都知道。Functionqm(科目代码,月份,Optional年度AsString,Optional帐套号AsString,Optional包含未记帐AsString=Y,Optional辅助核算方式AsString,Optional辅助核算编码AsString)If年度Year(Date)ThenExitFunctionIf年度=Year(Date)And月份=Month(Date)ThenExitFunctionDimcsqlstrAsStringqm=0IfTrim(科目代码)=ThenExitFunctionIfTrim(月份)=ThenExitFunctionIfTrim(年度)=ThenExitFunctionIfTrim(帐套号)=ThenExitFunctionSetconn=NewADODB.ConnectionWithconn.ConnectionString=driver={SQLServer};server=U8SERVER;uid=sa;pwd=123456;database=UFDATA&_&帐套号&_&Trim(年度).Open'strConnEndWithIfTrim(辅助核算方式)AndTrim(辅助核算编码)=Thenqm=缺少核算编码conn.CloseSetconn=NothingExitFunctionEndIfIfUCase(Trim(包含未记帐))=YThen''如果包含未记账''年初csqlstr=SELECTsum((CASEWHENcbegind_c'贷'THENmbELSE-mbEnd))FROMIfTrim(辅助核算方式)=AndTrim(辅助核算编码)=Thencsqlstr=csqlstr&gl_accsumElse''如果要取辅助核算的数,要换一个数据库csqlstr=csqlstr&gl_accassEndIfcsqlstr=csqlstr&WHEREiperiod=1andccode=&SqlStr(科目代码)'注意辅助编码若以0开头,必须加上引号IfTrim(辅助核算方式)=AndTrim(辅助核算编码)=Thencsqlstr=csqlstrElseIfTrim(辅助核算方式)=客户Thencsqlstr=csqlstr&andccus_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=供应商Then[原创]VBA自定义用友报表函数2008-09-1713:15csqlstr=csqlstr&andcsup_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=个人Thencsqlstr=csqlstr&andcperson_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=项目Thencsqlstr=csqlstr&andcitem_id=&'&Trim(辅助核算编码)&'EndIfSetrst=NewADODB.RecordsetWithrst.ActiveConnection=conn.OpencsqlstrEndWithIfIsNumeric(rst.Fields(0).Value)=TrueThenIfLeft(Trim(科目代码),1)2AndLeft(Trim(科目代码),1)3Thenqm=rst.Fields(0).ValueElseqm=-rst.Fields(0).ValueEndIfEndIfSetrst=Nothing''+发生csqlstr=selectsum(md-mc)FROMgl_accvouchwhereiperiod=1andiperiod=&月份&ANDiflagisnullANDccodeIfifbend(conn,科目代码)=1Thencsqlstr=csqlstr&=&SqlStr(科目代码)Elsecsqlstr=csqlstr&like&SqlStr(科目代码&%)EndIf'注意辅助编码若以0开头,必须加上引号IfTrim(辅助核算方式)=AndTrim(辅助核算编码)=Thencsqlstr=csqlstrElseIfTrim(辅助核算方式)=客户Thencsqlstr=csqlstr&andccus_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=供应商Thencsqlstr=csqlstr&andcsup_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=个人Thencsqlstr=csqlstr&andcperson_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=项目Thencsqlstr=csqlstr&andcitem_id=&'&Trim(辅助核算编码)&'EndIfSetrst=NewADODB.RecordsetWithrst.ActiveConnection=conn.OpencsqlstrEndWithIfIsNumeric(rst.Fields(0).Value)=TrueThenIfLeft(Trim(科目代码),1)2AndLeft(Trim(科目代码),1)3Thenqm=qm+rst.Fields(0).ValueElseqm=qm-rst.Fields(0).ValueEndIfEndIfSetrst=NothingElse''如果不包含未记账csqlstr=SELECTSUM((CASEWHENa.cendd_c'贷'THENa.meELSE-a.meEND))&_ASSumVal&_FROMcodebINNERJOIN&_gl_accassaONb.ccode=a.ccode&_WHEREa.iperiod=&月份&ANDa.ccode=&SqlStr(科目代码)'注意辅助编码若以0开头,必须加上引号IfTrim(辅助核算方式)=AndTrim(辅助核算编码)=Thencsqlstr=csqlstrElseIfTrim(辅助核算方式)=客户Thencsqlstr=csqlstr&andccus_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=供应商Thencsqlstr=csqlstr&andcsup_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=个人Thencsqlstr=csqlstr&andcperson_id=&'&Trim(辅助核算编码)&'ElseIfTrim(辅助核算方式)=项目Thencsqlstr=csqlstr&andcitem_id=&'&Trim(辅助核算编码)&'EndIfSetrst=NewADODB.RecordsetWithrst.ActiveConnection=conn.OpencsqlstrEndWithIfIsNumeric(rst.Fields(0).Value)=TrueThenIfLeft(Trim(科目代码),1)2AndLeft(Trim(科目代码),1)3Thenqm=rst.Fields(0).ValueElseqm=-rst.Fields(0).ValueEndIfEndIfSetrst=NothingEndIfconn.CloseSetconn=NothingEndFunction最终效果:
本文标题:VBA自定义用友报表函数
链接地址:https://www.777doc.com/doc-8761093 .html