в вашей линии
Set objsheet = bjExcel.ActiveWorkbook.Worksheets("Config_InputAllocation_Weekly")
Set objsheet2 = objExcel.ActiveWorkbook.Worksheets("Config_Project")
вы пытаетесь установить оба листа активны, что не возможно. Будет только один активный лист. Но вам не нужно активировать их. Используйте следующую технику:
Dim objExcel as Object
Set objExcel = CreateObject("Excel.Application")
Dim myWb as workbook, myws1 as worksheet, myWs2 as worksheet
Set myWb = objExcel.Workbooks.Open("C:\Users\ABC\Documents\NSL\Automation Macro\NSL_DM_Tracker.xlsm")
Set myWs1 = myWb.Worksheets("Config_InputAllocation_Weekly")
Set myWs2 = myWb.Worksheets("Config_Project")
Тогда вы можете легко вызвать данные из обоих листов, являются ли они активными или нет:
Msgbox myWs1.Cells(1,1).value
Msgbox myWs2.Cells(1,1).value
Тогда другая проблема заключается в том, что вы определили Sub searchdata()
, но его не вызывается внутри вашего CommandButton1_Click()
Sub.
Кроме того использовать Option Explicit установку, то есть, поставить эту строку в самой верхней части кода:
Option Explicit
Это поможет вам отладки кода. И последнее, но не менее важное: в вашем Sub searchdata()
не указаны рабочие листы. Таким образом, он не будет знать, какой из них (myWs1 или myWs2) использовать и когда.
удачи, Виктора
Sub searchdata() дим erow As String Dim WS As Worksheet Тусклого lastrow As String дим рассчитывать As Integer lastrow = Листы ("Config_InputAllocation_Weekly"). Клетки (Ряды .count, 1) .End (xlUp) .Row Если листы («Config_InputAllocation_Weekly»). Ячейки (x, 3) = Sheet1.Range («B2») Затем Sheet1.Range («A5») = Листы («Config_InputAllocation_Weekly»). Ячейки (x, 3) Sheet1.Range («B5») = Таблицы («Config_InputAllocation_Weekly»). Ячейки (x, 7) Sheet1.Range («C5») = Таблицы («Config_InputAllocation_Weekly»). Ячейки (x, 8) End If End Sub –
Может ли кто-нибудь помочь мне в решении этой проблемы? –