Ошибка компиляции VBA, Попытка скопировать лист из внешнего файла в основной файл - PullRequest
0 голосов
/ 21 ноября 2018

Я получаю сообщение об ошибке компиляции этого кода, я пытаюсь нацелиться на SourceFileName, не открывая его, и загружаю его в свой лист активной книги "извлечение данных"

Я получаю compile error, sub of function not defined.

Sub test()

Set appxl = CreateObject("Excel.application")
Dim myfile As Window
Dim currentSheet As Worksheet
Dim lastRow As Double
Dim sourceFileName As String
 
sourceFileName = "File name"
 
'Open Source File.xlsx
With appxl
    .Workbooks.Open ActiveWorkbook.Path & "\" & sourceFileName
    .Visible = False
End With
  
'Get first sheet data
Set myfile = appxl.Windows(sourceFileName)
myfile.Activate
Set currentSheet = appxl.Sheets(12)
 
'Past the table in my current Excel file
lastRow = currentSheet.Range("A1").End(xlDown).Row
Sheets("Data retrieval").Range("A1:E" & lastRow) = currentSheet.Range("A1:E" & lastRow).Value
 
'Close Source File.xlsx
appxl.Workbooks(sourceFileName).Close

End Sub

После применения приведенной ниже рекомендации Option Explicit и объявления appxl я получаю следующую ошибку:

enter image description here

1 Ответ

0 голосов
/ 21 ноября 2018

Я рекомендую следующее

Option Explicit

Sub test()
    Dim AppXl As Excel.Application
    Set AppXl = New Excel.Application
    AppXl.Visible = False

    Dim sourceFileName As String
    sourceFileName = "File name"

    'Open Source File.xlsx
    Dim SourceWb As Workbook 'remember workbook in a variable so we can easily access it
    Set SourceWb = AppXl.Workbooks.Open(ThisWorkbook.Path & "\" & sourceFileName)

    'Get first sheet data
    Dim currentSheet As Worksheet
    Set currentSheet = SourceWb.Sheets(12)

    'Past the table in my current Excel file
    Dim lastRow As Long 'row counting variables MUST be Long
    lastRow = currentSheet.Range("A1").End(xlDown).Row

    'define the workbook here
    ThisWorkbook.Worksheets("Data retrieval").Range("A1:E" & lastRow).Value = currentSheet.Range("A1:E" & lastRow).Value

    'Close Source File.xlsx
    SourceWb.Close SaveChanges:=False 'close source without saving
    AppXl.Quit
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...