Обновленная команда оболочки Windows теперь не будет работать. Определение оболочки как недопустимого вызова процедуры или аргумента (ошибка 5). - PullRequest
0 голосов
/ 13 июня 2019

Я недавно обновил Microsoft Excel на рабочем компьютере. Ожидается, что это будет запускать образцы меток. Мы знаем, что это работает так же, как и на других компьютерах (которые не получили обновленный Excel). Однако теперь он возвращает shell(pa) ошибка 5 как

нераспознанная процедура или аргумент

У меня очень ограниченный опыт работы с vba, и этот код мне дал предшественник. Любая помощь будет высоко ценится!

Sub PrintThisLabel()

    Dim firstRow As Long
    Dim lastRow As Long
    Dim myFileName As String
    Dim wSheet As Worksheet
    Dim stringOfText As String
    Dim folio As String
    Dim pa As String
    Dim delimitingCharacter As String
    Dim i As Long
    Dim j As Long
    Dim file2Write As Integer
    Dim file2Read As Integer
    Dim stringArray As Variant
    Dim CurrentUser As String
    Dim excelColumn As String
    Dim currentTick As Integer
    Dim totalTick As Integer
    Dim currentCol As Integer
    Dim totalCol As Integer
    Dim row As String

    CurrentUser = VBA.Interaction.Environ("UserName")

    pa = ""
    stringOfText = ""
    pa = ActiveWorkbook.Path & "\printLabel.bat"
    myFileName = ActiveWorkbook.Path & "\SampleLabel.txt" ' replace myFileName.txt with any filename you prefer

    delimitingCharacter = vbNewLine ' Add Delimiting Character - currently set as new line


     ' *****************************************************************************************
     '   The following code takes all values from Column A from the first worksheet in your
     '   workbook and places them into a string variable named stringOfText.
     '******************************************************************************************

    'If Sheets(1).Range("A65536").Value = "" Then
     '   lastRow = Sheets(1).Range("A" & "65536").End(xlUp).Row
    'Else
     '   lastRow = 65536
    'End If
    'If Selection.Row <= 1 Then
     '   firstRow = 9999
    'Else
     '   firstRow = Selection.Row
    'End If
    'If Selection.Row + Selection.Rows.Count - 1 <= 1 Then
     '   lastRow = 9999
    'Else
     'lastRow = Selection.Row + Selection.Rows.Count - 1
    'End If

    'firstRow = Selection.Row
    'lastRow = Selection.Row + Selection.Rows.Count - 1

    firstRow = 2
    lastRow = 2

    For i = firstRow To lastRow

        If Sheets(1).Range("K" & i).Value = "" Then

        Sheets(1).Range("J" & i).Value = CurrentUser
        Sheets(1).Range("A" & i).Value = Now()
        folio = (CStr(CInt(Sheets(1).Range("I" & (i + 1)).Value) + 1))

        While (Len(folio) < 6)
            folio = "0" & folio
        Wend

        Sheets(1).Range("I" & i).Value = folio

        totalTick = 4


        For currentTick = 1 To totalTick

            stringOfText = stringOfText & "N" & delimitingCharacter
            stringOfText = stringOfText & "Q203,16" & delimitingCharacter
            stringOfText = stringOfText & "R0,0" & delimitingCharacter
            stringOfText = stringOfText & "S2" & delimitingCharacter
            stringOfText = stringOfText & "D5" & delimitingCharacter
            stringOfText = stringOfText & "ZT" & delimitingCharacter
            stringOfText = stringOfText & "TTh:m:s:,+" & delimitingCharacter
            stringOfText = stringOfText & "TDy2.mn.dd" & delimitingCharacter

            totalCol = 10
            row = "20"

            For currentCol = 1 To totalCol

                excelColumn = VBA.Strings.Chr$(currentCol + 64)
                    stringOfText = stringOfText & "A150," & row & ",0,3,1,1,N," & """" & Sheets(1).Range(excelColumn & 1).Value & """" & delimitingCharacter
                    stringOfText = stringOfText & "A370," & row & ",0,4,1,1,N," & """" & Sheets(1).Range(excelColumn & i).Value & """" & delimitingCharacter
                row = (CStr(CInt(row + 32)))
            Next currentCol
            row = (CStr(CInt(row + 0)))
            stringOfText = stringOfText & "A150," & row & ",0,3,1,1,N," & """" & "# de TICKET" & """" & delimitingCharacter
            stringOfText = stringOfText & "A370," & row & ",0,4,1,1,N," & """" & (CStr(currentTick)) & """" & delimitingCharacter

            'stringOfText = stringOfText & "A150,56,0,3,1,1,N," & """" & Sheets(1).Range("B" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,56,0,4,1,1,N," & """" & Sheets(1).Range("B" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A540,56,0,4,1,1,N," & """" & Sheets(1).Range("C" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,92,0,3,1,1,N," & """" & Sheets(1).Range("D" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,96,0,4,1,1,N," & """" & Sheets(1).Range("D" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,132,0,3,1,1,N," & """" & Sheets(1).Range("E" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,132,0,4,1,1,N," & """" & Sheets(1).Range("E" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,168,0,3,1,1,N," & """" & Sheets(1).Range("F" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,168,0,4,1,1,N," & """" & Sheets(1).Range("F" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,204,0,3,1,1,N," & """" & Sheets(1).Range("G" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,204,0,4,1,1,N," & """" & Sheets(1).Range("G" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,240,0,3,1,1,N," & """" & Sheets(1).Range("H" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,240,0,4,1,1,N," & """" & Sheets(1).Range("H" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,276,0,3,1,1,N," & """" & Sheets(1).Range("I" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,276,0,4,1,1,N," & """" & Sheets(1).Range("I" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,312,0,3,1,1,N," & """" & Sheets(1).Range("J" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,312,0,4,1,1,N," & """" & Sheets(1).Range("J" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A150,348,0,3,1,1,N," & """" & Sheets(1).Range("K" & 1).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A370,348,0,4,1,1,N," & """" & Sheets(1).Range("K" & i).Value & """" & delimitingCharacter
            'stringOfText = stringOfText & "A500,348,0,4,1,1,N," & """" & Sheets(1).Range("L" & i).Value & """" & delimitingCharacter

            stringOfText = stringOfText & "P1" & delimitingCharacter

        file2Write = FreeFile() ' assign next free file number to this variable

        'myFileName = ActiveWorkbook.path & "\SampleLabel" & (CStr(currentTick)) & ".txt"

        'Shell ("copy ""SampleLabel.txt"" COM2:")
        Application.Wait (Now + TimeValue("0:00:01"))

        Next currentTick

        Open myFileName For Output As file2Write ' output is for writing to a file
        Print #file2Write, stringOfText

        Close #file2Write
        stringOfText = ""

        Shell (pa)

        Worksheets("Sheet1").Range("A" & i & ":J" & i).Locked = True
        ActiveCell.EntireRow.Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
        Worksheets("Sheet1").Range("B" & i & ":H" & i).Locked = False



        'If Selection.Information(wdWithInTable) = True Then
        'Selection.Rows.Add BeforeRow:=Selection.Rows(1)
        'End If

        End If

    Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...