MS EXCEL VBA - мне нужно импортировать лист из одного файла Excel в другой - PullRequest
3 голосов
/ 20 марта 2012

Мне нужно импортировать лист из одной книги Excel (имя листа не всегда одно и то же) и импортировать его в текущую активную книгу.

Вот что у меня есть:

Sub openFile_Click()
    FileToOpen = Application.GetOpenFilename _
    (Title:="Please choose a Report to Parse", _
    FileFilter:="Report Files *.rpt (*.rpt),")

    If FileToOpen = False Then
        MsgBox "No File Specified.", vbExclamation, "ERROR"
        Exit Sub
    Else
        Workbooks.Open Filename:=FileToOpen

        Dim wb1 As Workbook
        Dim wb2 As Workbook
        Set wb1 = ActiveWorkbook
        wb2 = Workbooks(FileToOpen)     'This is where I am stuck..I can't give it a static name

        For Each Sheet In wb1.Sheets
            If Sheets.Visible = True Then
                Sheets.Copy After:=wb2.Sheets(wb2.Sheets.Count)
            End If

        Next Sheet

    End If

Ответы [ 2 ]

2 голосов
/ 07 июля 2013

Этот код будет работать так, как вы хотите. Я сделал следующие исправления.

  1. Переместите все объявления переменных в начало процедуры, чтобы они объявлялись перед использованием. Это просто хорошая практика.

  2. Назначьте вашу активную рабочую книгу переменной, прежде чем открывать вторую рабочую книгу, чтобы была открыта только одна рабочая книга.

  3. В каждое утверждение также внесено несколько исправлений.

    Sub openFile_Click()
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    
    Set wb1 = ActiveWorkbook
    
    FileToOpen = Application.GetOpenFilename _
    (Title:="Please choose a Report to Parse", _
    FileFilter:="Report Files *.rpt (*.rpt),")
    
    If FileToOpen = False Then
        MsgBox "No File Specified.", vbExclamation, "ERROR"
        Exit Sub
    Else
        Set wb2 = Workbooks.Open(Filename:=FileToOpen)
    
        For Each Sheet In wb2.Sheets
            If Sheet.Visible = True Then
                Sheet.Copy After:=wb1.Sheets(wb1.Sheets.Count)
            End If
        Next Sheet
    
    End If
    
    End Sub
    
0 голосов
/ 19 июня 2013

Установить книгу открытой (или установить книгу позже без пути к файлу)

Вот, пожалуйста,

Sub openFile_Click()
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a Report to Parse", _
FileFilter:="Report Files *.rpt (*.rpt),")

If FileToOpen = False Then
    MsgBox "No File Specified.", vbExclamation, "ERROR"
    Exit Sub
Else
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Set wb1 = ActiveWorkbook
    Set wb2 = Workbooks.Open(FileToOpen)




    For Each Sheet In wb1.Sheets
        If Sheet.Visible = True Then
            Sheets.Copy After:=wb2.Sheets(wb2.Sheets.Count)
        End If

    Next Sheet

End If
End Sub
...