问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样用VBA将多个工作簿指定相同区域复制到新的工作薄中指定区域?

发布网友 发布时间:2023-03-01 12:57

我来回答

2个回答

热心网友 时间:2024-03-23 15:35

其实你的这个要求并不难实现,如果设置得当的话,也不需要VBA。只用公式,名称就完全可以达到这个目的。

当然,我这个是在同一个工作簿中:

1、 定义B1:I11,即原数据表为 名称 “xuesheng”;

2、在目标表中姓名列下输入如图的公式,再下拉到所需要的单元格即可。

对于不在同一个工作簿中的,可以用以下方法来变相实现:

1、 在目标表所在的工作簿中新建一个工作表(以下简称“A表”),同时,打开原基础数据表(以下简称“B表”);

2、 在A表中A1单元格输入“=”,然后选到B表,点击B表的A1单元格;也就是建立引用关系。

至于是用绝对引用,还是用相对引用,请自行根据应用实际情况决定;

3、此时就可以像之前在一个工作簿一样操作,设置,就能显示所需要的姓名列表了。

每次打开该工作簿时,会提示要更新链接,直接点确定就好了。嫌麻烦,可以在“信任中心”里把“更新链接”设置为启动时自动更新。

热心网友 时间:2024-03-23 15:35

答:下面程序是按照你的要求从每个文件的B列取数,然后汇总到同一张表中。而且自动添加了文件名。

Sub ReadFromCSV()
    Dim vFiles As Variant
    Dim nIndex As Integer
    Dim Wkb As Workbook
    Dim DesRng As Range  

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    vFiles = Application.GetOpenFilename(FileFilter:="CSV文件(*.csv),*.csv", _
    Title:="选择需读取的文件", MultiSelect:=True)
    If Not IsArray(vFiles) Then Exit Sub
    Set DesRng = ActiveSheet.Range("B3")
    For nIndex = 1 To UBound(vFiles)
        Set Wkb = Workbooks.Open(vFiles(nIndex))
        DesRng = Replace(Wkb.Name, ".csv", "")
        With Wkb
            .Sheets(1).Range("B20:B220").Copy
            DesRng.Offset(1, 0).PasteSpecial xlPasteValues
            .Close savechanges:=False
        End With
        Set Wkb = Nothing
        Set DesRng = DesRng.Offset(0, 1)
    Next nIndex
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "读取完成!", vbInformation, "提示"
End Sub

追问初步功能实现了
我的想法是在EXCEL中做个按钮。点击按钮,会把excel当前目录下“固定文件夹”里的所有.CSV文件内容自动导入,不需要手动选取。
能不能再帮我改改。还有速度有点慢,能提下速不?

追答

现在把弹框选择文件改写为从固定目录中读取,代码中的“strPath”目录你再修改。

Sub ReadFromCSV()
    Dim Wkb As Workbook
    Dim DesRng As Range
    Dim strPath As String
    Dim FileName As String  

    strPath = "D:\CSV文件夹\"
    FileName = Dir(strPath & "*.csv")
    Set DesRng = ActiveSheet.Range("B3")
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Do Until FileName = ""
        Set Wkb = Workbooks.Open(strPath & FileName)
            DesRng = Replace(Wkb.Name, ".csv", "")
            With Wkb
                .Sheets(1).Range("B20:B220").Copy
                DesRng.Offset(1, 0).PasteSpecial xlPasteValues
                .Close savechanges:=False
            End With
            Set Wkb = Nothing
            Set DesRng = DesRng.Offset(0, 1)
            FileName = Dir()
     Loop
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox "读取完成!", vbInformation, "提示"
End Sub

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
荨麻疹吃什么食物好荨麻疹饮食禁忌有哪些 三极管9015的参数有哪些 4岁孩子缺锌比别人矮,还能长高吗 婴儿出生时很矮长大一定矮吗 陌陌表情红唇怎么弄 因为不知道SUMIF函数还能横着用她一上午的工作被别人一分钟搞定_百度知 ... EXCEL中SUMIF公式的运用问题?请教! 苹果手机没有用的软件怎么办苹果手机不常用的软件怎么打开 血尿一般是什么原因引起的 win7桌面图标消失了 桌面图标消失了怎么恢复 ...长了怎么去除小窍门衣服上的油渍时间长了如何清洗呢 阿胶糕粘牙是好还是不好 阿胶糕越粘越好吗 ...新盘子、新碗)上面贴的那个标签胶水怎样能除干净? 餐具上的标签怎么处理干净 羊绒衫在家的正确洗法 梦见在悬崖边,别人跳下来,我去只是坐在边上没有掉下去,但有压迫不断但更边缘,我想向后退却退不了 水浒Q传 神兽技能 水浒Q传 洗兽药问题 苏芮是孤儿吗 ems补充申报线下还是线上 ...露的商检注意事项,3304 ,3305 ,3307 这些商检要备案吗? 理发店卖洗护产品需要备案吗 在唯品会买的衣服,退错货,唯品会已经签收了怎么办 细数瑜伽减肥的九大经典动作 我记得以前苏芮不是很瘦嘛,怎么这几年一下就发福了? 如何治疗痔疮的小窍门 盐水洗痔疮还是醋洗好 痔疮治疗土方法有奇效 盐水洗痔疮放多少才好 如何用盐水洗痔疮 ...View中要添加一列下拉选框,请问DataGridViewComboBoxColumn... C#高手请进 datagridview中有一列datagridcheckboxcolumn列 想控制给... 新衣服有味道怎么去除 试试这几个简单又实用的小妙招吧 乘坐地铁可以带面粉吗 gitlab关闭网页端访问 gitlab源码管理报错 王宝强演得hello!树先生什么意思啊?看不懂那个 ,知道的给解释下 哪位神人能看的懂《hello!树先生》的 ?能否给我一个权威的解释??? 刚和男朋友分手,但梦见他的头发全白了,请问下是什么意思呢? 非凡微商7.0和苹果11.2系统兼容吗 非凡微商4.0激活码多少钱 求告知,非凡微商怎么样才不容易封号,莪前天 2.0得线管可以穿几个20平方的电线 郑多燕减肥操可以瘦全身吗? 脚痒,不痛不红.死皮很厚.怎么治疗? 我妈妈最近脚上长了死皮,还很痒,是怎么回 iphone4怎么剪卡??不用剪卡器,移动的卡,最好附图 固态硬盘可以装vista吗 excel里公式单元格如何通过vba自动记录时向下复制到尾行后再向上覆盖并... 梦见活观音菩萨叫我到哪个寺庙去找他是什么意思? 梦见贵人帮助 梦见下巴被虫子咬了一下很疼