Изображение не отображалось на моем компьютере, поэтому я предполагаю, что есть две ситуации, когда вы хотите выполнить программу как:
- Просто откройте другой файл Excel и скопируйте данные вручную.
- Автоматически считывать данные из другого Excel в качестве исходных данных.
Для первого вы можете использовать FileDialog
и Workbooks.Open
, чтобы открыть целевой файл Excel. Код будет примерно таким:
Dim fileDialog As fileDialog
Dim selectedItem As String
Dim xlApp As Excel.Application
Dim xlWb As Excel.Workbook
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
With fileDialog
.Title = "Select a Excel file"
.AllowMultiSelect = False
.InitialFileName = Application.ThisWorkbook.path
If .Show <> -1 Then GoTo ExitCode
selectedItem = .SelectedItems(1)
End With
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWb = xlApp.Workbooks.Open(selectedItem, True, False)
ExitCode:
Set fileDialog = Nothing
Затем для второго вы можете использовать FileDialog
и ADODB Connection
для загрузки исходных данных в текущий файл.
Dim fileDialog As fileDialog
Dim selectedItem As String
Dim excelConn As New ADODB.Connection
Dim excelRst As ADODB.Recordset
Dim excelStrConn As String
Dim excelStrSQL As String
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
With fileDialog
.Title = "Select a Excel file"
.AllowMultiSelect = False
.InitialFileName = Application.ThisWorkbook.path
If .Show <> -1 Then GoTo ExitCode
selectedItem = .SelectedItems(1)
End With
excelStrConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" + selectedItem + ";" & _
"Extended Properties=""Excel 8.0;"""
excelConn.Open excelStrConn
excelStrSQL = "SELECT * FROM [Sheet1$]"
Set excelRst = excelConn.Execute(excelStrSQL)
Worksheets("Sheet1$").Range("A1").CopyFromRecordset excelRst
excelRst.Close: excelConn.Close
ExitCode:
Set fileDialog = Nothing