Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用我的Excel VBA代码的方法或数据成员问题_Vba_Excel_Excel 2013 - Fatal编程技术网

使用我的Excel VBA代码的方法或数据成员问题

使用我的Excel VBA代码的方法或数据成员问题,vba,excel,excel-2013,Vba,Excel,Excel 2013,您好,我开始编写宏,遇到一个错误,说明找不到方法或数据成员,并将其指向代码中的以下行: Set wsSheet = wsTPCC.Sheets("TPCC") 我完全不知道为什么会发生这种情况,我希望能得到一些帮助来弄清楚这一点,但也希望能贯穿编程的其余部分,因为这只是我代码的开始。以下是全部代码,以防万一 Option Explicit Sub TrainingHoursMacro() Dim wbTHMacro As Workbook, wsRegulares As Worksheet,

您好,我开始编写宏,遇到一个错误,说明找不到方法或数据成员,并将其指向代码中的以下行:

Set wsSheet = wsTPCC.Sheets("TPCC")
我完全不知道为什么会发生这种情况,我希望能得到一些帮助来弄清楚这一点,但也希望能贯穿编程的其余部分,因为这只是我代码的开始。以下是全部代码,以防万一

Option Explicit
Sub TrainingHoursMacro()

Dim wbTHMacro As Workbook, wsRegulares As Worksheet, wsRegularesDemitidos As Worksheet, wsTempActivos As Worksheet, wsTempJA As Worksheet, wsTempFit As Worksheet, _
    wsTempDemitidos As Worksheet, wsPS As Worksheet, wsResultados As Worksheet, wsDLList As Worksheet, wsSheet As Worksheet
Dim wbRegularesBruto As Workbook, wsMovimentacao As Worksheet, wsDemitidos As Worksheet
Dim wbTemporariosBruto As Workbook, wsTemporariosAtivos As Worksheet, wsJAAtivos As Worksheet, wsAprendizesFit As Worksheet
Dim wbPresenceSystem As Workbook, wsTPCC As Worksheet

Set wbTHMacro = Workbooks("Training Hours Macro.xlsm")
Set wsRegulares = wbTHMacro.Sheets("Regulares")
wsRegulares.Cells.ClearContents

Set wbRegularesBruto = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Regulares Bruto.xls")
If Not wbRegularesBruto Is Nothing Then

    Set wsSheet = wbRegularesBruto.Sheets("Movimentacao")
    wsSheet.Cells.Copy wsRegulares.Range("A1")
    Set wsSheet = wbRegularesBruto.Sheets("Demitidos")
    Set wsRegularesDemitidos = wbTHMacro.Sheets("Regulares Demitidos")
    wsSheet.Cells.Copy wsRegularesDemitidos.Range("A1")
    wbRegularesBruto.Close False
Else
    Exit Sub
End If

Set wbTemporariosBruto = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Temporarios Bruto.xlsx")
If Not wbTemporariosBruto Is Nothing Then

    Set wsSheet = wbTemporariosBruto.Sheets("Temporarios Ativos")
    Set wsTempActivos = wbTHMacro.Sheets("Temp Activos")
    wsSheet.Cells.Copy wsTempActivos.Range("A1")
    Set wsSheet = wbTemporariosBruto.Sheets("JA Ativos")
    Set wsTempJA = wbTHMacro.Sheets("Temp JA")
    wsSheet.Cells.Copy wsTempJA.Range("A1")
    Set wsSheet = wbTemporariosBruto.Sheets("Aprendizes FIT")
    Set wsTempFit = wbTHMacro.Sheets("Temp Fit")
    wsSheet.Cells.Copy wsTempFit.Range("A1")
    Set wsSheet = wbTemporariosBruto.Sheets("Demitidos")
    Set wsTempDemitidos = wbTHMacro.Sheets("Temp Demitidos")
    wsSheet.Cells.Copy wsTempDemitidos.Range("A1")
    wbTemporariosBruto.Close False
Else
    Exit Sub
End If

Set wbPresenceSystem = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Presence System Bruto.xls")
If Not wbPresenceSystem Is Nothing Then

    'Set wsSheet = wsTPCC.Sheets("TPCC")
    Set wsPS = wbTHMacro.Sheets("PS")
    'wsSheet.Cells.Copy wsTempActivos.Range("A1")

    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "CC"
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "MO"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "38697263859*"
    Columns("A:A").Select
    Selection.Replace What:="*", Replacement:="", LookAt:=xlPart, _
                      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                      ReplaceFormat:=False
    Cells.Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.RowHeight = 15
    Range("A1").Select
    Selection.AutoFilter

    Sheets("TreimentosPorCentroDeCusto (5)").Select
    Sheets("TreimentosPorCentroDeCusto (5)").Name = "TPCC"

    Set wsSheet = wsTPCC.Sheets("TPCC")
    Set wsPS = wbTHMacro.Sheets("PS")
    wsSheet.Cells.Copy wsTempActivos.Range("A1")
    wbPresenceSystem.Close False
Else
    Exit Sub
End If

End Sub

以下是宏的代码,以防万一:

Option Explicit
Sub TrainingHoursMacro()

Dim wbTHMacro As Workbook, wsRegulares As Worksheet, wsRegularesDemitidos As Worksheet, wsTempActivos As Worksheet, wsTempJA As Worksheet, wsTempFit As Worksheet, _
wsTempDemitidos As Worksheet, wsPS As Worksheet, wsResultados As Worksheet, wsDLList As Worksheet, wssheet As Worksheet
Dim wbRegularesBruto As Workbook, wsMovimentacao As Worksheet, wsDemitidos As Worksheet
Dim wbTemporariosBruto As Workbook, wsTemporariosAtivos As Worksheet, wsJAAtivos As Worksheet, wsAprendizesFit As Worksheet
Dim wbPresenceSystem As Workbook, wsTPCC As Worksheet
Dim wbFlexUTrainingHours As Workbook, wsHours As Worksheet, wsFlexU As Worksheet
Dim rcell As Range

Set wbTHMacro = Workbooks("Training Hours Macro.xlsm")
Set wsRegulares = wbTHMacro.Sheets("Regulares")
wsRegulares.Cells.ClearContents

Set wbRegularesBruto = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Regulares Bruto.xls")
If Not wbRegularesBruto Is Nothing Then

Set wssheet = wbRegularesBruto.Sheets("Movimentacao")
    wssheet.Cells.Copy wsRegulares.Range("A1")
        Set wssheet = wbRegularesBruto.Sheets("Demitidos")
Set wsRegularesDemitidos = wbTHMacro.Sheets("Regulares Demitidos")
    wssheet.Cells.Copy wsRegularesDemitidos.Range("A1")
        wbRegularesBruto.Close False
Else
    Exit Sub
            End If

Set wbTemporariosBruto = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Temporarios Bruto.xlsx")
If Not wbTemporariosBruto Is Nothing Then

Set wssheet = wbTemporariosBruto.Sheets("Temporarios Ativos")
    Set wsTempActivos = wbTHMacro.Sheets("Temp Activos")
    wssheet.Cells.Copy wsTempActivos.Range("A1")
Set wssheet = wbTemporariosBruto.Sheets("JA Ativos")
    Set wsTempJA = wbTHMacro.Sheets("Temp JA")
    wssheet.Cells.Copy wsTempJA.Range("A1")
Set wssheet = wbTemporariosBruto.Sheets("Aprendizes FIT")
    Set wsTempFit = wbTHMacro.Sheets("Temp Fit")
    wssheet.Cells.Copy wsTempFit.Range("A1")
Set wssheet = wbTemporariosBruto.Sheets("Demitidos")
    Set wsTempDemitidos = wbTHMacro.Sheets("Temp Demitidos")
    wssheet.Cells.Copy wsTempDemitidos.Range("A1")
        wbTemporariosBruto.Close False
Else
    Exit Sub
            End If

Set wbPresenceSystem = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Presence System Bruto.xls")
If Not wbPresenceSystem Is Nothing Then

Set wsPS = wbTHMacro.Sheets("PS")

    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "CC"
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "MO"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "38697263859 "

       For Each rcell In Range("A2:A" & Range("A" & Rows.Count).End(3)(1).Row)
    rcell.Value = Left(rcell, Len(rcell) - 1)
    'rcell.Value = Trim(rcell)
Next rcell

    Cells.Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.RowHeight = 15
    Range("A1").Select
    Selection.AutoFilter

For Each wssheet In ActiveWorkbook.Worksheets
    If Left(wssheet.Name, 27) = "TreimentosPorCentroDeCustro" Then
    wssheet.Activate
    End If
    ActiveSheet.Name = "TPCC"
    Exit For
Next wssheet

Set wssheet = wbPresenceSystem.Sheets("TPCC")
    Set wsPS = wbTHMacro.Sheets("PS")
    wssheet.Cells.Copy wsPS.Range("A1")
    wbPresenceSystem.Close False
Else
    Exit Sub
            End If

Set wbFlexUTrainingHours = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Flex U Training Hours.xls")
If Not wbFlexUTrainingHours Is Nothing Then

For Each wssheet In ActiveWorkbook.Worksheets
    If Left(wssheet.Name, 29) = "Training_Hours_12_37_24_PM 1 " Then
    wssheet.Activate
    End If
    ActiveSheet.Name = "Hours"
    Exit For
Next wssheet

Set wssheet = wbFlexUTrainingHours.Sheets("Hours")
    Set wsFlexU = wbTHMacro.Sheets("Flex U")
    wssheet.Cells.Copy wsFlexU.Range("A1")
        wbFlexUTrainingHours.Close False
Else
    Exit Sub
            End If

End Sub

wsTPCC是一个工作表,不是工作簿,所以它没有Sheets属性。谢谢,我明白你的意思了。。。设置wsSheet=wbPresenceSystem.SheetsTPCC,但现在我有一个更大的问题。。。它会在导入时删除PS表A列中的数据。。。为什么?因为你告诉它在这里选择。替换什么:=*,替换:=。如果要替换星号,请使用选择。替换内容:=~*,替换:=报告中有类似于38697263859的数字,末尾有一个空格,因此我希望宏删除列a中每个数字末尾的空格。。。另一个问题是,工作表的名称会有所不同,我想将名称更改为TPCC,无论状态系统工作簿中工作表的名称是什么。。。是否需要修改代码来完成此操作?SheetStreementOSPorcentRodeCustom 5。选择SheetStreementOSPorcentRodeCustom 5。名称=tpc然后使用选择。替换内容:=,替换:=。如何识别要重命名的工作表?