Извините, если это кажется легкомысленным, но я потратил последние 8 часов, разбивая голову об стену этим. Независимо от того, какой вариант я пробую, этот код постоянно выдает ошибки всех степеней. Я компетентен, и я взял так много примеров и ничего из них не работает. Я начинаю думать, что что-то не так с тем, где код находится в моей книге. Я положил его в Module1, где я обычно храню весь код.
Актуальная проблема - копировать / вставлять значения из одного листа книги в другой после выбора файла во всплывающем окне. Вот и все. Структура таблицы та же, но ее нужно переместить на 5 строк вверх на целевом листе.
Я пробовал так много разных типов кода, которые вы можете увидеть как закомментированные, когда я пытаюсь повторить что-то другое. В ОТНОШЕНИИ ОТКРЫТОГО РАБОЧЕГО КНИГА НЕ БУДЕТ По-прежнему выдает ошибки, как будто я пытаюсь получить доступ к некоторой скрытой базе данных darknet вместо файла рядом с ним ......
Я пробовал так много разных подходов, но все они заканчиваются разными ошибками. приведенный выше код дает мне «Ошибка выполнения 13. Тип, несоответствие.» в строке в цикле, который пытается скопировать код.
Я думаю, что все это связано с тем, что Excel не может правильно ссылаться на открытый файл. хотя это должно .......................
Sub ImportEstimatorData()
Dim xTargetWb As Workbook 'Consolidator
Dim xSourceWb As Workbook 'Estimator
Set xTargetWb = ActiveWorkbook
Dim xTargetRng As Range 'Target row/column in new sheet, changes row starting
Dim xSourceRng As Range 'Source data from Estimator, Never changes
Dim xSourceSt As Worksheet
Dim xTargetSt As Worksheet
Sheets("CR Data").Activate
Set xTargetSt = ThisWorkbook.Sheets("CR Data")
Dim vFile As Variant
'fileToOpen = Application _
' .GetOpenFilename("Text Files (*.txt), *.txt")
'If fileToOpen <> False Then
' MsgBox "Open " & fileToOpen
'End If
'Dim vFile As Variant
'vFile = Application.GetOpenFilename("Excel-files,*.xlsx", 1, "Select One File To Open", , False)
'if the user didn't select a file, exit sub
'If vFile = "" Then Exit Sub
'Set targetworkbook
'Set xSourceWb = Workbooks.Open(vFile)
If Not Application.OperatingSystem Like "*Mac*" Then
' Is Windows.
vFile = Application.GetOpenFilename("Excel-files,*.xlsm", 1, "Select One File To Open", , False)
'if the user didn't select a file, exit sub
If vFile = "" Then
Exit Sub
End If
Else
Exit Sub
End If
' Is a Mac and will test if running Excel 2011 or higher.
' If Val(Application.Version) > 14 Then
' Set xSourceWb = Select_File_Or_Files_Mac
' End If
' End If
'Workbooks.Open (vFile)
Set xSourceWb = Workbooks.Open(vFile)
'Workbooks(xSourceWb).Open
'Workbooks(xSourceWb).Activate
'Set Sheets for both Source & Target Workbooks
'Set xSourceSt = xSourceWb.Sheets("Output data GPE")
'Set xTargetRng = xTargetSt.Range(Cells(4, 2), Cells(80, 16))
Sheets("Output Sheet GPE").Activate 'Range(Cells(1, 1), Cells(2, 2)).Select
Set xSourceWb = ActiveWorkbook
'xSourceWb.Activate
'Set xSourceRng = xSourceSt.Range(Cells(4, 2), Cells(80, 16))
'xSourceRng.Copy xTargetRng
'Workbooks(xSourceWb).Worksheets("Output Sheet GPE").Range(Cells(8, 2), Cells(84, 16)).Copy Workbooks(xTargetWb).Worksheets("CR Data").Range(Cells(4, 2), Cells(80, 16))
For i = 8 To 84
For j = 2 To 16
Workbooks(xSourceWb).Worksheets("Output Sheet GPE").Cells(i, j) = Workbooks(xTargetWb).Worksheets("CR Data").Cells(i - 4, j)
'Debug error here
Next j
Next i
'Workbooks(xWb).Worksheets("CR Data").Range(Cells(4, 2), Cells(80, 16)).Copy Workbooks(xTargetWb).Worksheets("C").Range(Cells(4, 2), Cells(80, 16))
'Workbooks(xTargetWb).Worksheets("CR Data").Range(Cells(4, 2), Cells(80, 16)).PasteSpecial Paste:=xlPasteValues
'Workbooks(xTargetWb).Sheets("CR Data").Range(Cells(4, 2), Cells(80, 16)).Value = Workbooks(xSourceWb).Sheets("Output Sheet GPE").Range(Cells(4, 2), Cells(80, 16))
'xSourceWb.Close
'End If
'End With
End Sub'