乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>vba</em>读取同目录下<em>excel</em>指定列(

<em>vba</em>读取同目录下<em>excel</em>指定列(

作者:乔山办公网日期:

返回目录:excel表格制作


不打开文件是不可能获取内容的,这个要求相当于有人说麻烦你不进入我家、把我客厅的手机给我拿来。
另外,读一个不断增加的巨大文件的末尾部分,这个想法不太科学,效率很差,会给你的系统带来巨大的压力。建议稍微改进一下,修改写文件的程序,生成的结果数据除了不断添加到一个长文件末尾,同时把最新数据的最后一行不断覆盖写入一个小文件。

  • 打开一个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)就是指第一行第二列e799bee5baa6e4b893e5b19e365的单元格。执行语句的意思是:将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,顺便送大家一句话:

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

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


用ExecuteExcel4Macro从未打开的Excel工作簿中读取数据(转载)

从另外一个未打开的Excel文件中读取数据的函数

下面这个函数调用XLM宏从未打开的工作簿中读取数据.

*注意: 该函e799bee5baa6e997aee7ad94e4b893e5b19e335数不能用于公式.

GetValue函数,需要以下四个变量

path: 未打开的Excel文件的路径 (e.g., "d:\test")

file: 文件名(e.g., "test.xls")

sheet: 工作表的名称 (e.g., "Sheet1")

ref: 引用的单元格 (e.g., "C4")

'*********函数如下

Private Function GetValue(path, file, sheet, ref)

' 从未打开的Excel文件中检索数据

Dim arg As String

' 确保该文件存在

If Right(path, 1) <> "\" Then path = path & "\"

If Dir(path & file) = "" Then

GetValue = "File Not Found"

Exit Function

End If

' 创建变量

arg = "'" & path & "[" & file & "]" & sheet & "'!" & _

Range(ref).Range("A1").Address(, , xlR1C1)

' 执行XLM 宏

GetValue = ExecuteExcel4Macro(arg)

End Function

使用该函数:

将该语句复制到VBA的模块中,然后,在适当的语句中调用该函数. 下面的例子显示D:\test 下的文件test.xls 的Sheet1中的单元格”A1”的内容.

Sub TestGetValue()

p = "d:\test"

f = "test.xls"

s = "Sheet1"

a = "A1"

MsgBox GetValue(p, f, s, a)

End Sub

下面还有一个例子.这个语句从一个未打开的文件中读取1200个数值(100行12列),并将结果填到当前工作表中.

Sub TestGetValue2()

p = "d:\test "

f = "test.xls"

s = "Sheet1"

Application.ScreenUpdating = False

For r = 1 To 100

For c = 1 To 12

a = Cells(r, c).Address

Cells(r, c) = GetValue(p, f, s, a)

Next c

Next r

Application.ScreenUpdating = True

End Sub

说明: 如果工作簿处于隐藏状态,或者工作表是图表工作表,将会报错.

只能给你个几个参考,当然还有其他方法,希望能够帮到你 望采纳
getobject函数 本质是打开的,只是看不到窗口
Dim wb as workbook
set wb = getobject(具体路径+文件)
with wb
.............(operation on wb)
end with
wb.close false
set wb=nothing

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网