Часто задаваемые вопросы о TBarCode OCX
Печать через Excel VBA: штрихкод не обновляется
Печать через Excel VBA: штрихкод не обновляется
Вы изменяете содержимое связанных ячеек или элемента управления штрихкодом, а затем печатаете напрямую из VBA. Но видите, что элементы управления штрихкодом по-прежнему содержат старые значения. Причина в том, что Excel не отправляет команду перерисовки элементам управления ActiveX перед печатью (если печать выполняется из VBA). Это ошибка в Excel.
Есть обходной путь, чтобы принудительно вызвать перерисовку объектов: нужно программно обратиться к каждому элементу управления ActiveX со штрихкодом в VBA и изменить его размер перед печатью. Тогда Excel его перерисует.
'redraw a single barcode object by addressing it through its instance name Dim origValue origValue = TBarCode101.Width TBarCode101.Width = origValue + 1 TBarCode101.Width = origValue
' redraw all ActiveX Controls on the current sheet
Sub UpdateOLEControls()
Dim myShape As shape
Dim counter As Integer
Dim origWidth As Single
For counter = 1 To ActiveSheet.Shapes.Count
Set myShape = ActiveSheet.Shapes(counter)
If (myShape.Type = msoOLEControlObject) Then
' resize => force redraw
origWidth = myShape.Width
myShape.Width = origWidth + 1
myShape.Width = origWidth
End If
Next counter
End Sub