Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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 有时,特殊的测距方法会因1004错误而失败_Excel_Vba_Excel Formula - Fatal编程技术网

Excel 有时,特殊的测距方法会因1004错误而失败

Excel 有时,特殊的测距方法会因1004错误而失败,excel,vba,excel-formula,Excel,Vba,Excel Formula,我需要你的帮助!因此,基本上我要做的是将一个筛选范围从一个工作簿(wbimport)复制到我的活动工作簿(wsData)中。我做了两次。一次是实际日期(szToday)和日期1,因为我的wbimport文件的日期是结束日期,我需要比较两个日期的数据 如上所述,我得到了范围失败的特殊方法的错误(1004错误)。我知道,关于同一个错误有很多其他帖子,但我找不到任何帮助。我花了这么多时间,还是想不出来 错误发生在: wsData.Range(“H1”).paste特殊XLPaste值 提前谢谢 Sub

我需要你的帮助!因此,基本上我要做的是将一个筛选范围从一个工作簿(wbimport)复制到我的活动工作簿(wsData)中。我做了两次。一次是实际日期(szToday)和日期1,因为我的wbimport文件的日期是结束日期,我需要比较两个日期的数据

如上所述,我得到了范围失败的特殊方法的错误(1004错误)。我知道,关于同一个错误有很多其他帖子,但我找不到任何帮助。我花了这么多时间,还是想不出来

错误发生在:

wsData.Range(“H1”).paste特殊XLPaste值

提前谢谢

Sub ImportDat()
 
    Application.DisplayAlerts = False
    Sheets(4).Delete
    Sheets(4).Delete
    Application.DisplayAlerts = True
    
    Application.ScreenUpdating = False
    
    szToday = Format(Date, "dd-mm-yy")
    Dim d1 As String
    d1 = Range("b7").Value2
    date1 = Format(d1, "dd-mm-yy")
    
    Dim Dates(1 To 2) As String
    
    Dates(2) = szToday
    Dates(1) = date1
    
    Dim i As Variant
    
    For Each i In Dates()


    Dim App As New Excel.Application 'create a new (hidden) Excel
    
    
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Name = i
    
    ' remember active sheet
    Dim wsData As Worksheet
    Set wsData = ThisWorkbook.Sheets(i)
    
    wsData.Cells.ClearContents

    ' open the import workbook in new Excel (as read only)
    Dim wbImport As Workbook
    Dim FileN As String
    FileN = "***" & Format(i, "YYYY-MM-DD") & ".xlsb"
    Set wbImport = App.Workbooks.Open(Filename:=FileN, UpdateLinks:=True, ReadOnly:=True)
    
    'wbImport.Worksheets("Data").Activate'
    
    'Array für PH1 Bedingungen'
    
    Dim lngCriteriaCountPH1 As Long
    Dim arrCriteriaPH1() As String
    
    lngCriteriaCountPH1 = 6
    
    ReDim arrCriteriaPH1(0 To lngCriteriaCountPH1 - 1)
    
    arrCriteriaPH1(0) = "Commercial All-In-One"
    arrCriteriaPH1(1) = "Commercial Desktop"
    arrCriteriaPH1(2) = "Commercial Notebook"
    arrCriteriaPH1(3) = "Commercial Tablet"
    arrCriteriaPH1(4) = "Visuals"
    arrCriteriaPH1(5) = "Workstation"
    
    'Array für Distributoren'
    
    Dim lngCriteriaCountCN As Long
    Dim arrCriteriaCN() As String
    
    lngCriteriaCountCN = 7
    
    ReDim arrCriteriaCN(0 To lngCriteriaCountCN - 1)
    
    arrCriteriaCN(0) = "ALSO Deutschland GmbH"
    arrCriteriaCN(1) = "api Computerhandels GmbH"
    arrCriteriaCN(2) = "BYTEC Bodry Technology GmbH"
    arrCriteriaCN(3) = "Ingram Micro GmbH"
    arrCriteriaCN(4) = "Ingram Micro Distribution GmbH"
    arrCriteriaCN(5) = "Tech Data Service GmbH"
    arrCriteriaCN(6) = "Tech Data Service GmbH EURO PLAZA, Gebau"
    
    'Autofilter aktivieren'
    Dim LastRowColumnA As Long
    LastRowColumnA = wbImport.Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
    
    Dim LastCol As Long
    LastCol = wbImport.Worksheets("Data").Cells(1, Columns.Count).End(xlToLeft).Column
    ColLetter = Split(Cells(1, LastCol).Address, "$")(1)
 
    Set rngFilterRange = wbImport.Worksheets("Data").Range("A1:" & ColLetter & LastRowColumnA)
    
    rngFilterRange.AutoFilter
    rngFilterRange.AutoFilter Field:=2, Criteria1:="GAT", Operator:=xlFilterValues
    rngFilterRange.AutoFilter Field:=7, Criteria1:=arrCriteriaPH1(), Operator:=xlFilterValues
    rngFilterRange.AutoFilter Field:=19, Criteria1:="Y", Operator:=xlFilterValues
    rngFilterRange.AutoFilter Field:=39, Criteria1:=arrCriteriaCN(), Operator:=xlFilterValues
       
    'copy the data of the import sheet
    wbImport.Worksheets("Data").Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
    wsData.Range("H1").PasteSpecial xlPasteValues
  
    Dim LastRowColumnH As Long
    LastRowColumnH = Cells(Rows.Count, 8).End(xlUp).Row
    
    'PH3 Adjusted'
    Range("G1").Value = "PH3 Adjusted"
    Range("G2:G" & LastRowColumnH).Formula = "=IFERROR(VLOOKUP(N2&P2,Filter!O:P,2,0),P2)"
    
    'HLPCLM'
    Range("F1").Value = "HLPCLM"
    Range("F2:F" & LastRowColumnH).Formula = "=CONCAT(Y2,U2)"
    
    'OLDMFG'
    Range("E1").Value = "OLD MFG"
    Range("E2:E" & LastRowColumnH).Formula = "=IFERROR(IF(VLOOKUP(F2,'" & date1 & "'!F:AN,35,0)=0,"""",VLOOKUP(F2,'" & date1 & "'!F:AN,35,0)),"""")"
    Range("E2:E" & LastRowColumnH).NumberFormat = "dd.mm.yyyy"
    
    'CHANGES'
    Range("D1").Value = "CHANGES"
    Range("D2:D" & LastRowColumnH).Formula = "=IF(AND(AN128="""",E128<>""""),""Deleted"",IF(AND(AN2<>"""",E2=""""),""New"",IF(AN2=E2,"""",IF(AN2>E2,""Postponed"",IF(AN2<E2,""Forwarded"",""-"")))))"
    
    'DISTRIBUTOR'
    Range("C1").Value = "Distributor"
    Range("C2:C" & LastRowColumnH).Formula = "=IF(AT2=""ALSO Deutschland GmbH"",""ALSO"",IF(AT2=""api Computerhandels GmbH"",""API"",IF(AT2=""Bytec Bodry Technology GmbH"",""BYTEC"",IF(OR(AT2=""Ingram Micro Distribution GmbH"",AT2=""Ingram Micro GmbH""),""INGRAM"",IF(OR(AT2=""Tech Data Service GmbH"",AT2=""Tech Data Service GmbH EURO PLAZA, Gebau""),""TECHDATA"","""")))))"

    
    'DEAL PN'
    Range("B1").Value = "Deal PN"
    Range("B2:B" & LastRowColumnH).Formula = "=IFERROR(VLOOKUP(Y2,Filter!S:T,2,0),""No"")"

    App.CutCopyMode = False 'clear clipboard (prevents asking when wb is closed)
    wbImport.Close SaveChanges:=False 'close wb without saving
    App.Quit 'quit the hidden Excel
    
    Next i
    
    'Replace old dates'
    
    
    Worksheets("Summary").Range("B3").Value = szToday
    Worksheets("Summary").Range("E3").Value = date1
    
    
    Sheets("Overview").Select
    Cells(1, 1).Select
   Application.ScreenUpdating = True
End Sub
Sub-ImportDat()
Application.DisplayAlerts=False
第(4)页。删除
第(4)页。删除
Application.DisplayAlerts=True
Application.ScreenUpdating=False
szToday=格式(日期,“dd-mm-yy”)
将d1设置为字符串
d1=范围(“b7”)。值2
日期1=格式(d1,“日-月-年”)
变暗日期(1到2)作为字符串
日期(2)=今天
日期(1)=日期1
Dim i作为变体
对于日期()中的每个i
将应用程序设置为新Excel。应用程序“创建新(隐藏)Excel”
Sheets.Add After:=ActiveSheet
ActiveSheet.Name=i
'还记得活动表吗
将wsData设置为工作表
设置wsData=ThisWorkbook.Sheets(i)
wsData.Cells.ClearContents
'在新Excel中打开导入工作簿(只读)
将WBI导入为工作簿
将文件变暗为字符串
FileN=“***”和格式(i,“YYYY-MM-DD”)和“.xlsb”
设置wbImport=App.Workbooks.Open(文件名:=FileN,UpdateLinks:=True,只读:=True)
'wbImport.Worksheets(“数据”).Activate'
“阵列für PH1 Bedingungen”
暗lngCriteriaCountPH1的长度
Dim ARRCITERIAPH1()作为字符串
lngCriteriaCountPH1=6
ReDim arrCriteriaPH1(0到lngCriteriaCountPH1-1)
arrCriteriaPH1(0)=“商业一体化”
arrCriteriaPH1(1)=“商业桌面”
arrCriteriaPH1(2)=“商用笔记本”
arrCriteriaPH1(3)=“商用平板电脑”
arrCriteriaPH1(4)=“视觉效果”
arrCriteriaPH1(5)=“工作站”
“Array für Distributoren”
暗淡的lngCriteriaCountCN尽可能长
Dim arrCriteriaCN()作为字符串
lngCriteriaCountCN=7
ReDim arrCriteriaCN(0到lngcriteriaccountcn-1)
Arrcritericn(0)=“也是德国股份有限公司”
arrCriteriaCN(1)=“api Computerhandels GmbH”
ARRCITERIACN(2)=“比泰克博德里技术有限公司”
Arrcritericn(3)=“英格拉姆微型股份有限公司”
Arrcritericn(4)=“英格拉姆微型分销有限公司”
ARRCITERIACN(5)=“技术数据服务有限公司”
ARRCITERIACN(6)=“Gebau欧洲广场技术数据服务有限公司”
“自动筛选aktivieren”
暗淡的最后一排圆柱一样长
LastRowColumnA=wbImport.Worksheets(“数据”).Cells(Rows.Count,1).End(xlUp).Row
暗淡如长
LastCol=wbImport.Worksheets(“数据”).CELL(1,Columns.Count).End(xlToLeft).Column
ColLetter=Split(单元格(1,LastCol).地址,“$”(1)
设置rngFilterRange=wbImport.Worksheets(“数据”).Range(“A1:”&ColLetter&LastRowColumnA)
rngFilterRange.AutoFilter
rngFilterRange.AutoFilter字段:=2,准则1:=“GAT”,运算符:=xlFilterValues
rngFilterRange.AutoFilter字段:=7,Criteria1:=arrciteriaph1(),运算符:=xlFilterValues
rngFilterRange.AutoFilter字段:=19,准则1:=“Y”,运算符:=xlFilterValues
rngFilterRange.AutoFilter字段:=39,准则1:=arrCriteriaCN(),运算符:=xlFilterValues
'复制导入工作表的数据
wbImport.Worksheets(“数据”).Range(“A1”).CurrentRegion.SpecialCells(xlCellTypeVisible)。复制
wsData.Range(“H1”).paste特殊XLPaste值
暗淡的最后一行与长
LastRowColumnH=单元格(Rows.Count,8).End(xlUp).Row
“PH3已调整”
范围(“G1”)。值=“已调整PH3”
范围(“G2:G”和LastRowColumnH)。公式=“=IFERROR(VLOOKUP(N2和P2,过滤器!O:P,2,0),P2)”
“HLPCLM”
范围(“F1”).Value=“HLPCLM”
范围(“F2:F”和LastRowColumnH)。公式=“=CONCAT(Y2,U2)”
“OLDMFG”
范围(“E1”).Value=“旧制造商”
Range(“E2:E”和LastRowColumnH).Formula=“=IFERROR(如果(VLOOKUP(F2,“&date1&”!F:AN,35,0)=0,”,VLOOKUP(F2,“&date1&”!F:AN,35,0)),“
范围(“E2:E”和LastRowColumnH).NumberFormat=“dd.mm.yyyy”
“变化”
范围(“D1”).Value=“变更”

范围(“D2:D”和LastRowColumnH)。公式=“=IF(和(AN128=“”,E128)”,“已删除”,“IF(和(AN2)”,E2=“”),“新建”,“IF(AN2=E2)”,“IF(AN2>E2)”,“延期”,“如果”(AN2我怀疑这很可能是因为您的筛选器没有返回任何数据,并且您试图不将任何内容复制到
wsData
中。请将可见单元格指定给
范围
变量。然后您可以检查您的变量是否为
,这有时发生在相同的两个工作簿上……太随机了。有时它工作得很好nd有时会出现错误。即使我没有更改任何内容:/n您是否尝试过用F8一步一步地执行代码?也许这样您可以捕捉错误出现的确切时刻,并查看导致错误的原因。如上所述,粘贴wsData.Range(“H1”)时会发生错误.Paste特殊XLPasteValues我怀疑这很可能是因为您的筛选器未返回任何数据,而您正试图将任何内容复制到
wsData
中。请将可见单元格指定给
范围
变量。然后,您可以检查您的变量是否为
有时会发生在同一两本工作簿上……这太随机了。因此有时,它工作正常,有时会出现错误。即使我没有更改任何内容:/您是否尝试过用F8一步一步地执行代码?也许这样您可以捕捉错误出现的确切时刻,并查看导致错误的原因。如上所述,粘贴wsData.Range(“H1”).Paste特殊XLPaste值时会发生错误