vba读取同目录下excel指定列(后台打开,隐藏窗口)

当前的宏能实现同一目录下数据源文件内整个Sheet1全部复制到当前文件下(后台打开,隐藏窗口),但源文件太大(30M++)运行缓慢,所以希望能改成获取指定的列,如:B:F列,T列,X:Z列 等这几列数据的复制。
希望有高手帮忙改下代码,谢谢。
Sub CopyData()
Dim wb As Workbook
Dim Temp As String
Temp = ThisWorkbook.Path & "\数据源.xls"
Set wb = GetObject(Temp)
With wb.Worksheets("Sheet1").Range("A1").CurrentRegion
Range("A1").Clear
Range("A1").Resize(.Rows.Count + 3000, .Columns.Count) = .Value
wb.Close False
End With
Set wb = Nothing
End Sub
已经解决!

    打开一个Excel文件,鼠标右击下面的工作表(如sheet1)。选择“查看代码”,就可以打开VBA编辑界面。

    选择如下图所示的下拉菜单,选择“worksheet”。

    选择如下图所示的下拉菜单,选择对应的触发模式。这里我们选择BeforeDoubleClick,意思就是说:在本工作表鼠标双击(之前),将触发下面的代码程序。(activate意思是说:在sheet表被选取的时候,就触发;Change意思是说:在这个模式下,只要sheet(工作表)发生变化,就将触发;Before Right Click是指在鼠标右击之前触发;SelectionChange是指在鼠标焦点发生变化时,触发。)

    选择完成后,我们会看到下面出现了两条代码;这俩条代码其实是在声明一个函数。

    将鼠标放置在这两行代码之间,我们写上执行语句:

    Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)

    其中:sheet1.cells(1,3)就是指第一行第三列的这个单元格;Sheet1.Cells(1, 1)就是指第一行第一列的这个单元格;Sheet1.Cells(1, 2)就是指第一行第二列的单元格。执行语句的意思是:将cells(1,1)和cells(1,2)的值相加,并赋值给cells(1,3)

    注意的是:写语句的时候,输入法一定要是输入字母的模式。要不然你的语句会报错。

    然后点击保存,回到Excel的原始界面。在cells(1,1)和cells(1,2)中输入两个数值。(楼主输入的是:125895和78954)

    注意看:现在的cells(1,3)数值是空的。

    在sheet1的工作表中,双击你的鼠标。你会发现,cells(1,3)的值变成了cells(1,1)和cells(1,2)的和。(204849=125895+78954)

    8

    总结:其实VBA主要是触发和指定单元格。

    1.触发的原理其实很简单,大家可以选择不同的触发模式,试一下就知道是怎么回事了。

    2.至于怎么指定到单元格,大家可以看看cells语句和Range语句。

    补充说明: VBA不需要过于复杂的VB语句。你只需要知道VB怎么写怎加减乘除,怎么使用IF语句,就可以满足大部分的需求了。

    最后希望大家能够驾驭VBA,顺便送大家一句话:

    眼见为虚,耳听为虚,只有运行才是硬道理。

    别忘了点赞哦,亲,嘿嘿。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-13
自己会自己写吧!人家做,天下没有免费的三餐追问

我会的话就不发到网上来了啊。

追答

我倒是会做。
要看你具体的Excel文档,不好妄自揣测。(如果不方便可以根据实际情况模拟数据)

追问

您好,请帮忙看一下,如图:左侧为数据源文件,  右侧文件中点击“按钮1”后,自动复制数据源文件中指定的数列,按顺序黏贴,

需要注意的是:数据源格式固定(列),行数不固定 同步前需清空右侧文件数据表中的内容。谢谢。

第2个回答  2018-08-14

就是要编写一个函数, 然后可以读取某个目录下有几个子目录。。。并将目录名赋予某几个字符串。。。

取出所有目录和文件。。。包含两个隐藏目录  和目录  以及目录下文件。。。

(详细访问:)

这是几个参考,还有其他方法,

getobject函数  本质是打开的,只是看不到窗口
Dim wb as workbook
set wb = getobject(具体路径+文件)
with wb
.............(operation on wb)
end with
wb.close false
set wb=nothing

(仅供参考)

第3个回答  2018-08-13
从源头优化吧。
优化源文件吧,30++的源文件装多少东西?公式多了吧追问

源头是公司数据库😭,

追答

那就用sql呀

你这样多慢,sql直接针对数据库,又快又好!

楼上那兄弟在帮你了!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网