从关闭的Excel工作簿返回单元格值
我从数据库中提取数据并手动将其输入Excel报告模板 我想用VBA代码查找导出的带数据的封闭Excel文件(从关闭的Excel工作簿返回单元格值,excel,vba,Excel,Vba,我从数据库中提取数据并手动将其输入Excel报告模板 我想用VBA代码查找导出的带数据的封闭Excel文件(Test.xls)(例如单元格中的B1:B21) 单元格中的数据B1:B21每行之间都有空格。因此,垂直方向上的一列将如下所示 Data1 Space Space Data2 .... 我希望将空格放入Excel报告文件中,并水平显示(A10:“Data1”,B10:“Data2”,C10:“data3”…),而不是垂直显示 出于安全原因,我无法将数据直接从数据库拉入E
Test.xls
)(例如单元格中的B1:B21
)
单元格中的数据B1:B21
每行之间都有空格。因此,垂直方向上的一列将如下所示
Data1
Space
Space
Data2
....
我希望将空格放入Excel报告文件中,并水平显示(A10:“Data1”
,B10:“Data2”
,C10:“data3”
…),而不是垂直显示
出于安全原因,我无法将数据直接从数据库拉入Excel模板。私有函数GetValue(路径、文件、工作表、参考、v)
Private Function GetValue(path, file, sheet, ref, v)
path = "C:\Documents and Settings\sdavis\Desktop\Index\XXX\Results"
file = "test.xls"
sheet = "Sheet1"
ref = "A1:R30"
' Retrieves a value from a closed workbook
Dim arg As String
Dim p As Integer
' Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Cells(v, 2).Address(, , xlR1C1)
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Sub TestGetValue()
'Declare
Dim v As Integer
'Starting Point
v = 21
'File Location
path = "C:\Documents and Settings\sdavis\Desktop\Index\XXX\Results"
file = "test"
sheet = "Sheet1"
Application.ScreenUpdating = False
For C = 1 To 15
a = Cells(5, C).Address
Cells(5, C) = GetValue(path, file, sheet, a, v)
v = v + 3
Next C
Application.ScreenUpdating = True
End Sub
path=“C:\Documents and Settings\sdavis\Desktop\Index\XXX\Results”
file=“test.xls”
sheet=“Sheet1”
ref=“A1:R30”
'从关闭的工作簿中检索值
作为字符串的Dim arg
作为整数的Dim p
'确保该文件存在
如果正确(路径,1)“\”则路径=路径&“\”
如果Dir(路径和文件)=“”,则
GetValue=“未找到文件”
退出功能
如果结束
'创建参数
arg=“”&path&“[”&file&“]”&sheet&“!”&_
范围(参考)。单元格(v,2)。地址(,xlR1C1)
'执行XLM宏
GetValue=ExecuteExcel4Macro(arg)
端函数
子TestGetValue()
"申报,
作为整数的Dim v
"起点",
v=21
'文件位置
path=“C:\Documents and Settings\sdavis\Desktop\Index\XXX\Results”
file=“test”
sheet=“Sheet1”
Application.ScreenUpdating=False
对于C=1到15
a=单元(5,C).地址
单元格(5,C)=GetValue(路径、文件、工作表、a、v)
v=v+3
下一个C
Application.ScreenUpdating=True
端接头
我相信您需要打开xls才能真正从中读取,但如果在vba中执行,excel实例可能会被隐藏,即用户不会觉得正在打开另一个excel文件。查看并了解一下转置
功能:)打开文件,将列复制/粘贴到新工作表,过滤空白,复制/粘贴特殊转置。请单击左侧的勾号接受此答案?这标志着问题已经解决;)