我已经耗尽了我的搜索功能,正在寻找解决方案 . 以下是我想要做的概述:
-
用户打开启用宏的Excel文件
-
立即提示,供用户输入或选择所需工作簿的文件路径 . 他们需要选择两个文件,文件名可能不一致
-
输入文件位置后,第一个文件选择的第一个工作表将被复制到启用宏的工作簿的第一个工作表,第二个文件选择的第一个工作表将被复制到启用宏的第二个工作表工作簿 .
我遇到过一些ADO的引用,但我还不熟悉它 .
编辑:我找到了一个从已关闭文件导入数据的代码 . 我需要调整范围以返回变量结果 .
Private Function GetValue(path, file, sheet, ref)
path = "C:\Users\crathbun\Desktop"
file = "test.xlsx"
sheet = "Sheet1"
ref = "A1:R30"
' Retrieves a value from a closed workbook
Dim arg As String
' 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).Range("A1").Address(, , xlR1C1)
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Sub TestGetValue()
path = "C:\Users\crathbun\Desktop"
file = "test"
sheet = "Sheet1"
Application.ScreenUpdating = False
For r = 1 To 30
For C = 1 To 18
a = Cells(r, C).Address
Cells(r, C) = GetValue(path, file, sheet, a)
Next C
Next r
Application.ScreenUpdating = True
End Sub
现在,我需要一个命令按钮或用户窗体,它将立即提示用户定义文件路径,并从该文件导入数据 .
2 回答
这是一个基本代码 . 此代码要求用户选择两个文件,然后将相关工作表导入当前工作簿 . 我有两个选择 . 拿你的选择:)
TRIED AND TESTED
OPTION 1 (Import the Sheets directly instead of copying into sheet1 and 2)
OPTION 2 (Import the Sheets contents into sheet1 and 2)
下面的函数从已关闭的Excel文件中读取数据并将结果返回到数组中 . 它会丢失格式,公式等 . 您可能希望在主代码中调用isArrayEmpty函数(在底部)来测试函数返回的内容 .
样品用途: