在没有excel

时间:2017-10-17 09:57:45

标签: vba

我一直在寻找,但找不到问题的答案。我的VBA技能很差。所以我在工作中使用VBA和内部系统,所以不使用excel。我正在使用以下宏:

    ' Common variable declarations
    Dim ibmCurrentTerminal As IbmTerminal
    Dim ibmCurrentScreen As IbmScreen
    Dim hiddenTextEntry As String
    Dim returnValue As Integer
    Dim timeout As Integer
    timeout = 15000

    Set ibmCurrentTerminal = ThisFrame.SelectedView.control
    Set ibmCurrentScreen = ibmCurrentTerminal.Screen
    '---------------------------------------------------------------------


    ibmCurrentScreen.SendControlKey (ControlKeyCode_F12)
    ibmCurrentScreen.SendKeys ("224")
    ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)
    ibmCurrentScreen.SendControlKey (ControlKeyCode_Erase_Eof)
    ibmCurrentScreen.Paste
    ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)

因此我们从一个程序中复制一个数字,并希望使用此宏在另一个程序中进行检查。问题是复制的数字需要7个字符长,例如“1234567”,当我们粘贴它时,但有时我们复制的数字是5个字符长,例如“12345”。

我想要做的是让宏在将其粘贴到其他程序之前添加“00”,例如“0012345”,如果数字短于7个字符。请记住,这需要在宏中完成,因为我们不使用任何excel来保存单元格中的信息。

我的问题是如何将其编程到宏中,关键部分是

    ibmCurrentScreen.Paste
    ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)

谢谢

2 个答案:

答案 0 :(得分:0)

您应该可以使用Format()功能执行此操作,如下所示:

ibmCurrentScreen.SendControlKey (Format(ControlKeyCode_Transmit, "0000000"))

答案 1 :(得分:0)

这个解决方案解决了我的问题。需要从剪贴板中获取信息。注意:该解决方案没有以任何方式使用Excel,这使得它有点困难。

' retrieve the value from the clipboard
Dim textFromClipboard As String
Dim objData As New MSForms.DataObject
objData.GetFromClipboard
textFromClipboard = objData.GetText()

' Format the value to have leading zeros 
Dim formattedText As String
formattedText = Format(textFromClipboard, "0000000")


' Enter the formatted text to the terminal and hit enter
ibmCurrentScreen.SendKeys (formattedText)
ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)

End Sub