Я недавно обновил 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