В основном мой макрос извлекает данные из определенных столбцов из определенного файла, а затем вставляет поверх листа другого файла. Но теперь я получаю сообщение об ошибкеНесоответствие типов в Excel VBA
Тип несовпадения в Excel VBA
на этой линии: With Worksheets(wkbSourceBook)
Sub ImportDatafromotherworksheet()
Dim wkbCrntWorkBook As Workbook
Dim wkbSourceBook As Workbook
Dim rngSourceRange As Range
Dim rngDestination As Range
Dim row As Integer
Dim row1 As Integer
Dim hello As Range
Dim hello1 As Range
Dim lastRow As Long, i As Long
Dim CopyRange As Range
Set wkbCrntWorkBook = ActiveWorkbook
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count > 0 Then
Workbooks.Open .SelectedItems(1)
Set wkbSourceBook = ActiveWorkbook
With Worksheets(wkbSourceBook)
lastRow = .Range("A" & .Rows.Count).End(xlUp).row
For i = 4 To lastRow
If Len(Trim(.Range("A" & i).Value)) <> 0 Then
If CopyRange Is Nothing Then
Set CopyRange = .Rows(i)
Else
Set CopyRange = Union(CopyRange, .Rows(i))
End If
End If
Next
If Not CopyRange Is Nothing Then
row = rngSourceRange.row
Set hello = Range("O" & row & ",Q" & row & ",W" & row)
wkbCrntWorkBook.Activate
Set rngDestination = Application.InputBox(Prompt:="Select destination cell", Title:="Select Destination", Default:="A1", Type:=8)
row1 = rngSourceRange.row
Set hello1 = Range("AD" & row & ",AI" & row & ",AF" & row)
hello.Copy hello1
rngDestination.CurrentRegion.EntireColumn.AutoFit
wkbSourceBook.Close False
'~~> Change Sheet2 to relevant sheet name
End If
End With
End If
End With
End Sub
Но для моего дела есть какие-либо способы использования объекта рабочей книги в качестве аргумента? – excel
Вы хотите использовать имя объекта рабочей книги. 'With Worksheets (wkbSourceBook.Name)', но эта проблема не будет работать, потому что имя листа не будет содержать расширение файла (.xlsx или .csv или что-то еще). Поэтому сохраните имя в строковой переменной, а затем удалите extesnion. – ChipsLetten
Set wkbSourceBook = Workbooks.Open (.SelectedItems (1)) С wkbSourceBook.Worksheets (1) – LagGyver