excel vba代码以高效的方式将值从打开的excel文件复制到字符串数组中
我使用打开了一个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
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
我会做循环,但可能不是最有效的