VBA不打开读取文件内容
我需要用VBA代码不打开文件读取.xls,.xlsx文件。(不打开的原因是:如果已经打开,用open语句会出错)
请问大虾们有什么办法做。我网上查了就是用ExecuteExcel4Macro做。但是我不是很清楚。
里面的sheet1是名字,但是我要是用worksheets(1)(指定编号而不是名字)就出错。而且这个函数执行到
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
这句时就出错,错在Range上面。而且我可能会读这个sheet的大量数据,会不会很慢?或者有什么更好的方法?
分不够再加。
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
[解决办法]
但是我要是用worksheets(1)(指定编号而不是名字)就出错
-------------
sheets(1)
dim book as workbook
Dim sheet As Worksheet
set book =Application.Workbooks.Open (path + fileName)
for each sheet in book.sheets
Debug.Print sheet.name
next
[解决办法]
不打开没法做 回复内容太短了
[解决办法]
没有真正的不打开就能取值的
ADO,方便点
[解决办法]
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
这段错了
你的参数ref是代表啥意思?是单元格嘛?要是的话,后面的Range("A1")就删掉,range写了两遍当然错了。
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1) 取出单元格ref的内容
或者
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range("A1").Address(, , xlR1C1) 取出单元格“A1”的内容
说个题外话,你这段代码也太不规范了。。。
function的返回值类型不写,参数的类型不写,错误处理也没有,假如你要读的文件不存在、或者别的啥原因出错了,你就只有崩一条路了
[解决办法]
“(不打开的原因是:如果已经打开,用open语句会出错)”
你是什么版本,具体open语句怎么写的,我试过重复打开并不会出错
即使出错,代码这样保护一下就行了
Sub TryFileOpen() On Error Resume Next Set wb = Application.Workbooks.Open("1.xls") If Err.Number <> 0 Then Err.Clear On Error GoTo 0 Set wb = Application.Workbooks("1.xls") End IfEnd Sub