Excel - импортировать лист из другой рабочей книги - PullRequest
0 голосов
/ 21 ноября 2018

Я застрял, и мне нужна помощь.Мне нужна функция - открывать рабочие книги через диалоговое окно и импортировать определенный лист в активную рабочую книгу.Приведенный ниже макрос работает, если есть только один лист, но у кого-то возникла идея добавить еще один лист, а затем он выходит из строя ...

Как изменить код, чтобы он импортировал только конкретный именованный лист?

<pre>
<code>
Sub Files()
Dim openfiles
Dim wb As Workbook
Dim sourcewb As Workbook
Dim newName As String
Dim x As Integer

Set wb = Application.ActiveWorkbook

Application.ScreenUpdating = False
Application.DisplayAlerts = False

openfiles = Application.GetOpenFilename(FileFilter:="Microsoft Excel Files 
(*.xls;*.xlsx),*.xls;*.xlsx", MultiSelect:=True, Title:="Select file(s) for 
import!")

If TypeName(openfiles) = "Boolean" Then
MsgBox "You have to choose a file"
GoTo ExitHandler
End If


With wb
x = 1
While x <= UBound(openfiles)
    Set sourcewb = Workbooks.Open(Filename:=openfiles(x))
    newName = sourcewb.Name

For i = 1 To sourcewb.Sheets.Count
    sourcewb.Worksheets(i).Copy After:=.Sheets(.Sheets.Count)
    .Worksheets(.Sheets.Count).Name = newName
    Next
    sourcewb.Close
    x = x + 1
Wend
End With

'There is a lot of other code below this

Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub


1 Ответ

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

Как изменить код, чтобы он импортировал только определенный именованный лист?

Ваш код не проверяет имена листов, он просто копирует все листы из книги sourcewb в папку назначения.Если вы хотите копировать только листы с указанным именем, вы должны проверить, существует ли он:

For i = 1 To sourcewb.Sheets.Count
    If sourcewb.Worksheets(i).Name = "This is it" Then
        sourcewb.Worksheets(i).Copy After:=.Sheets(.Sheets.Count)
        .Worksheets(.Sheets.Count).Name = newName
        sourcewb.Close
        Exit Sub
    End If
    x = x + 1
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...