Макрос VBA не работает в режиме совместимости с XLS` - PullRequest
0 голосов
/ 19 ноября 2018

Этот макрос работает с файлами .xlsx, чтобы открыть два эталонных файла для получения различных описательных данных, используя «Стиль» в качестве первичного ключа.Он выполняет поиск слева направо в активной ячейке и ссылается на первый действительный «стиль» (используя файл «Stylemaster.xlsx» в качестве лексикона) для уравнения Vlookup, которое в конце вводится в активную ячейку.

Есть ли в этом команда, которую нельзя использовать для файлов .XLS?Или я что-то здесь упускаю.

Два файла откроются и скроются после выполнения, и будет выполняться do while, но активная ячейка останется пустой.

Sub StyleINVLookLeft()
Dim form
Dim x As Workbook
Dim wb As Workbook
Dim col As Integer
Dim leng As Integer
Dim cel
Dim flg


Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayAlerts = False

On Error Resume Next
    Set wb = Workbooks("INV Master.xlsx")
    If Err Then
    wb = Workbooks.Open("J:\INV Master.xlsx")
    End If

On Error Resume Next
    Set x = Workbooks("BC Style Master ALL2.xlsx")
    If Err Then
    x = Workbooks.Open("J:\BC Style Master ALL2.xlsx")
    End If

If Right(ActiveWorkbook.Path, 3) = "xls" Then
flg = 1
col = -1
GoTo Skipsearch
End If


flg = 0
col = -13

TryAgain:

col = col + 1

With ActiveCell
    On Error Resume Next
    cel = ActiveCell.Offset(0, col)
    leng = Len(cel)
        Do While leng <> 6 And col > -13 And col < 12
        col = col + 1
            On Error Resume Next
        cel = ActiveCell.Offset(0, col)
        leng = Len(cel)
            If col > 300 Then MsgBox "Error: Infinite Loop Triggered"
            If col > 300 Then End
        Loop

If col >= 12 And leng <> 6 Then
    col = -1
    flg = 1
End If

End With

Skipsearch:

If IsError(Application.VLookup(cel, x.Worksheets("Sheet1").Range("a:A"), 1, 0)) And flg = 0 Then
    GoTo TryAgain
End If

ActiveCell.formula = "=VLOOKUP(RC[" & col & "],'[INV Master.xlsx]Style INV'!c1:c8,7,FALSE)"
            form = Left(ActiveCell.formula, 9) & "$" & Right(ActiveCell.formula, Len(ActiveCell.formula) - 9)
            ActiveCell.Select
            ActiveCell.formula = form
            form = ""

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

Workbooks("INV Master.xlsx").Windows(1).Visible = False
Workbooks("BC Style Master ALL2.xlsx").Windows(1).Visible = False

End Sub
...