ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: OKJSJSF

[求助] 至关重要的Range对象,我的核心!

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-9 22:19 | 显示全部楼层
下面是其中单击按钮,把代码所在工作簿的三张数据表下载至新建工作簿的过程。
Private Sub CommandButton3_Click()
    ThisWorkbook.Unprotect
    Application.ScreenUpdating = False
    Worksheets("对私库").Visible = xlSheetVisible
    Worksheets("对公库").Visible = xlSheetVisible
    Worksheets("合同库").Visible = xlSheetVisible
    Worksheets(Array("对私库", "对公库", "合同库")).Copy
    Dim mstr As String
    mstr = InputBox("1、如在文本框中输录数字 1 后单击确定或回车,可把数据导出至当前位置;" & Chr(10) & "2、如在文本框中输录数字 2 后单击确定或回车,可把数据导出至桌面;" & Chr(10) & "3、否则您需自定义保存位置与文件名。")
    On Error GoTo r
    With ActiveWorkbook
        If mstr = 1 Then
            .SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Now(), "客户借款数据库yyyymmdd hhmmss") & ".xls"
        ElseIf mstr = 2 Then
            .SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & Format(Now(), "客户借款数据库yyyymmdd hhmmss") & ".xls"
        End If
        Application.CommandBars("Control Toolbox").Visible = True
        ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=0, Top:=250, Width:=123, Height:=36.75).Select
        Application.CommandBars("Control Toolbox").Visible = False
        .Close savechanges:=True
    End With
    Worksheets(Array("对私库", "对公库", "合同库")).Visible = xlSheetHidden
    Application.ScreenUpdating = True
    ThisWorkbook.Protect
    ThisWorkbook.Close savechanges:=False
    MsgBox "拷贝完毕。"
    Exit Sub
r:    'MsgBox "稍后执行:Application.Dialogs(5).Show!"
    Windows("借款簿(有宏有按钮)20170712.xls").Activate
    Worksheets(Array("对私库", "对公库", "合同库")).Visible = xlSheetHidden
    Application.ScreenUpdating = True
    ThisWorkbook.Protect
    MsgBox "拷贝完毕。"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-9 23:04 | 显示全部楼层
承前,Worksheets(Array("对私库", "对公库", "合同库")).Copy或Worksheets("对私库").Copy方法下载的数据都可能是错误的!下载得到的工作表的所有单元格的字符数都在255个以内,超过的内容都丢失了,就象18位身份证号输入常规格式的单元格中,最后三位数都是0,保存后没法复原!该不幸问题也出现在另一个场合,我的《窗体按钮控件练习》试卷界面贴子中的获取题库,处理方法是采用移动或全选某表复制粘贴或区域取数赋值。
于是,对代码再作修改,复制的方法不省略,可以获得单元格格式,如下具体过程是取消工作簿保护,被复制的表全部可见,复制生成新工作簿(内存中),保存前重新取数赋值(因为移动或全选某表复制粘贴需多次激活或关闭工作簿及对新建工作簿赋予变量或命名,所以未采用),再按弹窗提示决定下载数据生成的工作簿的三种保存位置与文件名,关闭保存(磁盘中),被复制的表恢复隐藏,工作簿恢复保护,自始至终在代码所在工作簿中进行各项操作,新工作簿不可见。
Private Sub CommandButton3_Click()
    ThisWorkbook.Unprotect
    Application.ScreenUpdating = False
    Worksheets("对私库").Visible = xlSheetVisible
    Worksheets("对公库").Visible = xlSheetVisible
    Worksheets("合同库").Visible = xlSheetVisible
    Worksheets(Array("对私库", "对公库", "合同库")).Copy
    With ThisWorkbook.Worksheets("对私库").Cells(1).CurrentRegion
        ActiveWorkbook.Worksheets("对私库").Cells(1).Resize(.Rows.Count, .Columns.Count) = .Value
    End With
    With ThisWorkbook.Worksheets("对公库").Cells(1).CurrentRegion
        ActiveWorkbook.Worksheets("对公库").Cells(1).Resize(.Rows.Count, .Columns.Count) = .Value
    End With
    With ThisWorkbook.Worksheets("合同库").Cells(1).CurrentRegion
        ActiveWorkbook.Worksheets("合同库").Cells(1).Resize(.Rows.Count, .Columns.Count) = .Value
    End With

    Dim mstr As String
    mstr = InputBox("1、如在文本框中输录数字 1 后单击确定或回车,可把数据导出至当前位置;" & Chr(10) & "2、如在文本框中输录数字 2 后单击确定或回车,可把数据导出至桌面;" & Chr(10) & "3、否则您需自定义保存位置与文件名。")
    On Error GoTo r
    With ActiveWorkbook
        If mstr = 1 Then
            .SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Now(), "客户借款数据库yyyymmdd hhmmss") & ".xls"
        ElseIf mstr = 2 Then
            .SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & Format(Now(), "客户借款数据库yyyymmdd hhmmss") & ".xls"
        End If
        Application.CommandBars("Control Toolbox").Visible = True
        ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=0, Top:=250, Width:=123, Height:=36.75).Select
        Application.CommandBars("Control Toolbox").Visible = False
        .Close savechanges:=True
    End With
    Worksheets(Array("对私库", "对公库", "合同库")).Visible = xlSheetHidden
    Application.ScreenUpdating = True
    ThisWorkbook.Protect
    ThisWorkbook.Close savechanges:=False
    MsgBox "拷贝完毕。"
    Exit Sub
r:    'MsgBox "稍后执行:Application.Dialogs(5).Show!"
    Windows("借款簿(有宏有按钮)20170712.xls").Activate
    Worksheets(Array("对私库", "对公库", "合同库")).Visible = xlSheetHidden
    Application.ScreenUpdating = True
    ThisWorkbook.Protect
    MsgBox "拷贝完毕。"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-9 23:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-10-10 08:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
OKJSJSF 发表于 2018-10-9 22:04
终于。虽然代码很多,都是基础中的基础中的入门级代码,没有字典没有正则也没有FSO与ACCESS网页之类,仅 ...

不是的,真的看别人的代码很费力。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-10 21:49 | 显示全部楼层
jiangxiaoyun 发表于 2018-10-10 08:26
不是的,真的看别人的代码很费力。

发一个贴子风平浪静无人问津,我感到孤独,不管什么建议的回复,都是对我的鼓励,否则,否则我可能会选择离开。有人可能会说,论坛这么多东西,你不会搜索吗?干吗一定要让别人百忙之中回复你?大家工作生存环境不同,excel内容实在有太多,太多无法涉猎,很多东西当我想搜的时候偏偏搜来搜去搜不到,有时又一搜就搜到,焦急的心情,只能直接求助了,是不是?好了,继续谢谢您给我回复!晚安!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-16 20:09 , Processed in 0.023296 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表