Назначьте CommandButtton для загрузки книги - PullRequest
0 голосов
/ 25 мая 2020

Я хотел создать командную кнопку для загрузки / открытия существующей книги в качестве исходного файла для запуска моего макроса, я пытался найти ответ, но пока не добился большого успеха. Вот как это выглядит сейчас

enter image description here

Я хотел знать, можно ли создать с помощью commandButton, чтобы открыть или загрузить существующую книгу с помощью vba в excel, любая помощь будет признательна ^^

1 Ответ

0 голосов
/ 26 мая 2020

Изображение не отображалось на моем компьютере, поэтому я предполагаю, что есть две ситуации, когда вы хотите выполнить программу как:

  1. Просто откройте другой файл Excel и скопируйте данные вручную.
  2. Автоматически считывать данные из другого 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...