SQL数据透视表VBA数据透视表的超级应用

SQL+数据透视表+VBA数据透视表的超级应用SQL+数据透视表+VBA使数据透视表走向更灵活,更智能,更适用。这个是我和师傅一撇首度合作,他提供了文件并提出了要求,我帮他实现其效果下面从几个方面解释一下:1、功能一个源文件和一个通过用SQL查询生成的数据透视表将源文件拖到电脑的任意位置,甚至将文件名也改掉,用VBA配上代码和窗体找到文件,数据透视表仍然能够正常工作2、套用现在来讲讲怎么使做出来的东东适应大家的需要2、1用OLEDB窗口引用工作表或写SQL语句,因为用这个方法同VBA相通,copy下来代码区的的语句2、2打开透视表文件,将透视表中的字段全部拖出来,也就是变成一个空数据透视表。右击下面工作表图标或者工具》宏》visualbasic编辑器,点击模块看到代码区2、3将2、1步骤copy的语句commandtext的数据Array中的引号中.CommandText=Array("")可能不同版本会有一些差别,同时SQL语句中如果添加了文本生成新字段,双引号要成对翻倍如:"出库"AS表单选项要改成""出库""AS表单选项2、4语句太长的处理:在代码区如果你想好看一些,你可以插入“_”来换行,当然不能插在一个单词或自动名等中间。2、5将文件存盘,重新打开就会有了数据,你可以将字段拖入数据透视表中,创建你自己的数据透视表,2、6这样文件就可以使用,相信VBA的引导不用教就可以交给别人使用了下面附上代码,包含3个区:1、工作簿去,打开文件时工作PrivateSubWorkbook_Open()DimOPIfDir(Sheets("path").Range("A1"))=""ThenOP=MsgBox("源文件已被移走,请选择下列选项"+Chr(10)+"1、选择是,重新输入文件全名"+Chr(10)+"2、选择否,打开原有的数据透视表"+Chr(10)+"3、选择取消,关闭文件",vbYesNoCancel,"Scarlett温馨提示")IfOP=vbYesThen---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---UserForm1.ShowEndIfIfOP=vbNoThenActiveWorkbook.CloseTrueEndIfIfOP=vbCancelThenExitSubEndIfElseCallrefreshpvEndIfEndSub2、窗体区,实现文件的查找PrivateSubCommandButton1_Click()DimfopenAsFileDialogSetfopen=Application.FileDialog(msoFileDialogFilePicker)fopen.ShowTextBox1.Value=fopen.SelectedItems(1)Setfopen=NothingEndSubPrivateSubCommandButton2_Click()IfInStr(TextBox1.Value,".")>0ThenSheets("path").Range("A1")=TextBox1.ValueCallrefreshpvunloadmeElseMsgBox"文件名要带路径含后缀的文件名","Scarlett_88温馨提示"TextBox1.SetFocusEndIfEndSubPrivateSubCommandButton3_Click()UnloadMeEndSubPrivateSubTextBox1_Change()EndSubPrivateSubUserForm_Activate()---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---EndSubPrivateSubUserForm_Click()TextBox1.Value=Sheets("path").Range("A1")EndSub3、模块区,实现SQL语句的地址更新和刷新数据透视表的数据源Subrefreshpv()WithActiveSheet.PivotTables("数据透视表1").PivotCache.Connection=Array(_"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;UserID=Admin;DataSource="&Sheets("path").Range("A1")&";Mode=ShareDenyWrite;"_,_"ExtendedProperties=""HDR=YES;"";JetOLEDB:Systemdatabase="""";JetOLEDB:RegistryPath="""";JetOLEDB:EngineType=35;JetOLEDB:Databa"_,_"seLockingMode=0;JetOLEDB:GlobalPartialBulkOps=2;JetOLEDB:GlobalBulkTransactions=1;JetOLEDB:NewDatabasePassword="""";Je"_,_"tOLEDB:CreateSystemDatabase=False;JetOLEDB:EncryptDatabase=False;JetOLEDB:Don'tCopyLocaleonCompact=False;JetOLEDB:Com"_,"pactWithoutReplicaRepair=False;JetOLEDB:SFP=False").CommandType=xlCmdTable.CommandText=Array(_"select""期初""AS表单选项,规格型号,机器号,数量,0as数量3,0as数量2,金额,0as金额3,0as金额2from[期初$]unionallselect""入库""AS表单选项,规格型号,机器号,0"_,_"as数量2,数量,0as数量3,0as金额2,金额,0as金额3from[入库$]unionallselect""出库""AS表单选项,规格型号,机器号,0as数量3,0as数量2,数量,0as金额3,0as金额2,金额from[出库$]"_)EndWithActiveSheet.PivotTables("数据透视表1").PivotCache.RefreshEndSub---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?