2010-09-07 4 views
2

У меня возникли проблемы с этим. У меня есть файл xls, который содержит один лист данных. В моем основном приложении, в другой книге, я хочу открыть этот единственный файл xls и скопировать лист в текущую книгу.VBA: откройте файл xls и добавьте его в текущую книгу

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

Set src = Workbooks.Open(Filename:="thefile.xlsx") 

Range("F4:F67").Copy 
ThisWorkbook.Activate 
Sheets("Result").Activate 
Range("A1").Select 
ActiveSheet.Paste 

Я ценю любую помощь с этим.

Благодаря

ответ

4

Вот простое решение, которое не требует .select или .Activate.

Sub getSheetFromA() 
    getSheet "a.xls", 1 
End Sub 

Sub getSheet(filename As String, sheetNr As Integer) 
    Dim srcWorkbook As Workbook 

    Set srcWorkbook = Application.Workbooks.Open(filename) 
    srcWorkbook.Worksheets(sheetNr).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 

    srcWorkbook.Close 
    Set srcWorkbook = Nothing 
End Sub 
+0

спасибо за что – Ian

+0

возможно добавить переменные диск и каталог 'югу getSheet (Drive как строку, каталог как String, имя файла как String, sheetNr как Integer) ChDrive диск Chdir каталог ....' –

2

Я нашел решение:

Set src = Workbooks.Open(Filename:="file.xlsx") 
Cells.Copy 

ThisWorkbook.Activate 
Sheets("Result").Activate 
Range("A1").Select 
ActiveSheet.Paste 
Смежные вопросы