VBA заполнить существующее значение до последней строки - PullRequest
0 голосов
/ 14 октября 2019

У меня уже есть рабочий макрос, который транспонирует 5 строк в столбцы и добавляет их после последнего столбца.

Проблема в том, что мне нужен длинный формат, поэтому в основном я хочу автоматизировать заполнение с помощьюте же данные, до конца данных (в основном, последняя строка). У меня есть 600 файлов, и все эти файлы имеют разное количество строк.

Sub LoopFiles()
    Dim xFd As FileDialog
    Dim xFdItem As Variant
    Dim xFileName As String
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    If xFd.Show = -1 Then
        xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
        xFileName = Dir(xFdItem & "*.xls*")
        Do While xFileName <> ""
            With Workbooks.Open(xFdItem & xFileName)
                'your code here
                Range("A2:B6").Select
                Selection.Copy
                Range("I10").Select
                Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
                    False, Transpose:=True
                Rows("1:8").Select
                Application.CutCopyMode = False
                Selection.Delete Shift:=xlUp
                With Sheets("Calculated Saccades")
                    .Range("I3").AutoFill .Range("I4:I" & .Cells(.Rows.Count, "A").End(xlUp).Row)
                End With
                ActiveWorkbook.Save
                ActiveWorkbook.Close
            End With
            xFileName = Dir
        Loop
    End If
End Sub

With Sheets возвращает ошибку. Есть идеи? Большое вам спасибо!

1 Ответ

1 голос
/ 14 октября 2019

Вы уже находитесь внутри блока With...End With (With Workbooks.Open(xFdItem & xFileName) - это циклически перебирает рабочие книги, если в диалоговом окне «Открыть файл» выбрано более одной книги);Вы не можете вложить их.

Вы можете просто заменить

    With Sheets("Calculated Saccades")
  .Range("I3").AutoFill .Range("I4:I" & .Cells(.Rows.Count, "A").End(xlUp).Row)
    End With

на:

    Sheets("Calculated Saccades").Range("I3").AutoFill
    Sheets("Calculated Saccades").Range("I4:I" & .Cells(.Rows.Count, "A").End(xlUp).Row)

Вы также должны прочитать Как избежать использования Выбрать вExcel VBA .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...