簡體   English   中英

使用工作表 position 和 range.value

[英]Using worksheet position and range.value

我有一個代碼,它通過將選定的工作表復制並移動到新工作簿中來生成工作簿。 這個新工作簿的第一頁是摘要頁。 在此我想通過使用 range.value 方法從后續工作表中提取數據。 但是,例如,我可以在引用工作表位置時使用它嗎

Dim wb As Workbook, wbAll As Workbook
Dim ws As Worksheet

Set wbAll = Workbooks.Add
On Error Resume Next
For t = 1 To 100         
    Set wb = Workbooks("Book" & t)
    For Each ws In wb.Sheets
        ws.Move after:=wbAll.Sheets(Sheets.Count)
    Next
Next
Workbooks("Book" & t).Activate
ActiveWorkbook.Sheets("Sheet1").Select

'compile worksheets into list
Dim wss As Worksheet
Dim x As Integer

On Error Resume Next
 
x = 17
 
Sheets("Sheet1").Range("c17:E46").ClearContents

 
For Each wss In ActiveWorkbook.Worksheets
    If wss.Name <> "Sheet1" Then
         Sheets("Sheet1").Cells(x, 3) = wss.Name
         x = x + 1
    End If
Next wss

'COMPILE COSTS
ActiveWorkbook.Sheet1.Range("C17").Value = ActiveWorkbook.Worksheet(2).Range("Q118").Value
ActiveWorkbook.Sheet1.Range("C18").Value = ActiveWorkbook.Worksheet(3).Range("Q118").Value
.
.
ActiveWorkbook.Sheet1.Range("C45").Value = ActiveWorkbook.Worksheet(30).Range("Q118").Value
ActiveWorkbook.Sheet1.Range("C46").Value = ActiveWorkbook.Worksheet(31).Range("Q118").Value

'Compile WBS
ActiveWorkbook.Sheet1.Range("D17").Value = ActiveWorkbook.Worksheet(2).Range("D10").Value
ActiveWorkbook.Sheet1.Range("D18").Value = ActiveWorkbook.Worksheet(3).Range("D10").Value
.
.
ActiveWorkbook.Sheet1.Range("D45").Value = ActiveWorkbook.Worksheet(30).Range("D10").Value
ActiveWorkbook.Sheet1.Range("D46").Value = ActiveWorkbook.Worksheet(31).Range("D10").Value


'Week Number name
ActiveWorkbook.Sheet1.Range("C10").Value = ActiveWorkbook.Worksheet(2).Range("D4").Value
'Supplier Name
ActiveWorkbook.Sheet1.Range("C12").Value = ActiveWorkbook.Worksheet(2).Range("D5").Value

然而,這給了我一條 object 定義錯誤的錯誤消息

這可能會有所幫助:

Sub Tester()
    
    Dim wb As Workbook, wbAll As Workbook
    Dim ws As Worksheet
    Dim wss As Worksheet
    Dim x As Integer, wsSummary, t As Long
    
    Set wbAll = Workbooks.Add
    
    For t = 1 To 100
        Set wb = Nothing
        On Error Resume Next    'ignore any error
        Set wb = Workbooks("Book" & t)
        On Error GoTo 0         'cancel OERN as soon as possible
        If Not wb Is Nothing Then
            For Each ws In wb.Sheets
                ws.Move after:=wbAll.Sheets(wbAll.Sheets.Count)
            Next
        End If
    Next
    'Workbooks("Book" & t).Activate   'not sure what this is for?
    'ActiveWorkbook.Sheets("Sheet1").Select
    
    'compile worksheets into list
    x = 17
    Set wsSummary = wbAll.Sheets("Sheet1")
    wsSummary.Range("C17:E46").ClearContents
    
    For Each wss In wbAll.Worksheets
        If wss.Name <> wsSummary.Name Then
             With wsSummary.Rows(x)
                .Cells(3).Value = wss.Name
                .Cells(4).Value = wss.Range("Q118").Value
                .Cells(5).Value = wss.Range("D10").Value
                'etc etc
             End With
             x = x + 1
        End If
    Next wss

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM