1

У меня есть несколько файлов в одной папке со столбцом "Номер детали", но не все они находятся в одном номере столбца. Список не обязательно начинается в той же строке.

Поэтому я сначала ищу строку "Номер детали", а затем копирую ее адрес как начало диапазона, который я хочу скопировать.

В столбце "Номер детали" есть пробелы в некоторых элементах, поэтому я не могу их использовать.Конец (xlDown) для поиска последней строки.

Поэтому я использую столбец «Кол-во», чтобы найти последнюю строку и скопировать номер строки.

У меня есть ячейка, где начинается диапазон, номер столбца и номер строки, где диапазон должен закончиться. Однако я получаю сообщение об ошибке "Приложение или объектная ошибка".

Макрос не закончен, но я не могу двигаться вперед, пока не решу это. Вот что я получил:

Option Explicit

Sub mergeworkbooks()


Dim path As String
Dim filename As String
Dim wbk As Workbook
Dim wks As Worksheet
Dim lastrow As Long
Dim lastcolumn As Long
Dim rangestart As String
Dim lastcol As Long
Dim rangefinish As String
Dim activesht As String


path = "D:\RubenBK\TEST\"
filename = Dir(path)

       Do While filename <> ""

              Set wbk = Workbooks.Open(path & filename)
              For Each wks In Worksheets
                    If Not wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False) Is Nothing Then
                    wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Activate
                    rangestart = wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Address
                    lastcolumn = wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Column
                    lastrow = wks.UsedRange.Find("qty", lookat:=xlPart, MatchCase:=False).End(xlDown).row
                    rangefinish = Cells(lastrow, lastcolumn).Address(xlA1)
                    activesht = ActiveSheet.Name

                    'AND HERE IS WHERE I GET THE ERROR, THE Range("rangestart: rangefinish") PART:

                    wbk.Sheets(activesht).Range("rangestart: rangefinish").Copy Destination:=ThisWorkbook.Sheets("Sheet1").Range("A10")
                    End If
                    wbk.Close
              Next
        filename = Dir
        Loop


End Sub

Любое предложение?

1 ответ1

1

Вы проблема в том , у вас есть RangeStart и rangefinish завернутые в кавычки.

Попробуйте переместить их за пределы кавычек, и это должно сработать.

wbk.Sheets(activesht).Range(rangestart & ":" & rangefinish).Copy

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .