Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel vba代码以高效的方式将值从打开的excel文件复制到字符串数组中_Vba_Excel - Fatal编程技术网

excel vba代码以高效的方式将值从打开的excel文件复制到字符串数组中

excel vba代码以高效的方式将值从打开的excel文件复制到字符串数组中,vba,excel,Vba,Excel,我使用打开了一个excel文件 exlFileName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select a excel File", MultiSelect:=False) If exlFileName = False Then Exit Sub Application.Workbooks.Open (exlFileName) Worksheets("Fruit

我使用打开了一个excel文件

 exlFileName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select a excel File", MultiSelect:=False)
 If exlFileName = False Then Exit Sub

Application.Workbooks.Open (exlFileName)
Worksheets("Fruits").Activate
Fruits=ActiveSheet.UsedRange.Value
ActiveWorkbook.Close
基本上我认为现在水果只是有范围值,而不是内容。这是我真正想要的 假设在打开的excel表格中有水果列表,每行一个,例如1.苹果 2.橙色 3.葡萄
因此,我希望水果变量包含ArrayApple、Orange、Grapes等。实际上,我的excel工作表中只有一列中有一个长长的项目列表。另外,请建议一种有效的方法。

如果只有一列数据,则只能创建这样的一维数组。如果是这种情况,您可以使用以下逻辑创建UDF:

Function Val2Array(rng As Range) As Variant
    Val2Array = WorksheetFunction.Transpose(rng)
End Function

'// Example use:  

 exlFileName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select a excel File", MultiSelect:=False)
 If exlFileName = False Then Exit Sub

Application.Workbooks.Open (exlFileName)
Worksheets("Fruits").Activate
Fruits = Val2Array(ActiveSheet.UsedRange.Columns(1)) '// <~~~
ActiveWorkbook.Close

您可以使用WorksheetFunction.Transpose方法从VBA中的列创建一维数组。

与其他建议类似,但具有错误处理,并确保仅返回我使用的感兴趣列a列的实际使用范围

Sub TEst()
Dim Wb As Workbook
Dim ws As Worksheet
Dim X

exlFileName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select a excel File", MultiSelect:=False)
If exlFileName = False Then Exit Sub

Set Wb = Workbooks.Open(exlFileName)
On Error Resume Next
Set ws = Sheets("Fruits")
On Error GoTo 0

If ws Is Nothing Then Exit Sub
X = Application.Transpose(Range(ws.[a1], ws.Cells(Rows.Count, "A").End(xlUp)))
Wb.Close False

End Sub

我会做循环,但可能不是最有效的