Объединение нескольких листов из одной рабочей книги в один лист в другой рабочей книге с помощью макроса

#vba #excel

#vba #excel

Вопрос:

Я просто пытаюсь ускорить сравнение затрат, за исключением того, что мои навыки программирования на данный момент смехотворны. Это то, что у меня есть до сих пор…

 Sub CommandButton1_Click()

'Last cell in column
Dim WS As Worksheet
Dim LastCell As Range
Dim LastCellRowNumber As Long

Set WS = Worksheets("Asphalt")
With WS
    Set LastCell = .Cells(.Rows.Count, "C").End(xlUp)
    LastCellRowNumber = LastCell.Row   1
End With

Dim wb As Workbook, wb2 As Workbook
Dim vFile As Variant

'Set source workbook
Set wb = ActiveWorkbook

'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
    1, "Select One File To Open", , False)

'if the user didn't select a file, exit sub
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile

'Set selectedworkbook
Set wb2 = ActiveWorkbook

'Select cells to copy
wb2.Worksheets("Asphalt").Range("J3:R3").Copy

'Go back to original workbook you want to paste into
wb.Activate

'Paste starting at the last empty row
wb.Worksheets("Asphalt").Range("C" amp; LastCellRowNumber).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True

'Close and save the workbook you copied from
wb2.Save
wb2.Close

End Sub
  

Теперь первое, что я не могу открыть другую рабочую книгу .xls по какой-либо причине. Во-вторых, я получаю сообщение о том, что мой индекс находится вне диапазона.

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

Теперь я знаю, что это сложная задача, и я продолжу свой путь к достижению своей цели — созданию этой мощной электронной таблицы, но я был бы очень признателен за любую помощь, которую я могу получить.

Вот примерно то, как я хотел бы, чтобы выглядел конечный проект http://imgur.com/3EnYEcP просто минус ручной ввод всех чисел, как пещерный человек 😉

Комментарии:

1. Dim vFile As Variant означает, что это не имеет никакого отношения к VB.NET

Ответ №1:

Удалите часть с надписью, включая кавычки «Excel-files,*.xlsx», чтобы разрешить ей открывать все типы файлов. Код должен быть

vFile = Application.GetOpenFileName(, _ 1, «Выберите один файл для открытия», , False)

Что касается нижнего индекса вне диапазона, который может быть для различных reasons…so вам нужно было бы подробнее рассказать о том, какая часть кода выдает ошибку нижнего индекса.

Надеюсь, это поможет

H