2017-10-17 10 views
0

私は検索していて、私の問題の答えを見つけることができません。私のVBAスキルは非常に悪いです。だから私は自分の仕事で内部システムとVBAを使用しているので、Excelを使用していません。私は次のマクロを使用しています:コピーした番号を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) 

私は1つのプログラムから数値をコピーし、このマクロを使って別のプログラムでこれをチェックしたいと思います。問題は、コピーされた番号が7文字でなければならないということです。貼り付けたときに "1234567"と表示されますが、コピーする数字は5文字です。 "12345"。

私がしたいことは、マクロが他のプログラムに貼り付ける前に "00"を追加することです。数字が7文字未満の場合は "0"となります。これは、細胞内の情報を保持するためにExcelを使用しないため、マクロで行う必要があることを忘れないでください。

私の質問は、マクロにこれをプログラムする方法で、重要な部分は、あなたが以下のようにFormat()機能を使用してこれを行うことができるはず

ibmCurrentScreen.Paste 
    ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit) 

おかげ

+0

先頭のゼロを付けると、数値がテキストとして扱われます。あなたは 'FORMAT(" 12345 "、" 0000000 ")'を使うことができます - 'ControlKeyCode_Transmit'は値を保持していますか? 'FORMAT(ControlKeyCode_Transmit、" 0000000 ")' –

+0

いいえ、私は 'ControlKeyCode_Transmit'がどんな値も保持しているとは思いません。貼り付けられる前に、数字「12345」をコピーし、マクロに「00」を加えてみてください。私が理解していない問題の1つは、貼り付けられる前に "00"のソースからコピーされた番号をどのように豊かにするかということです。 – cptGT

+0

どこにコピーしているのかわかりません - それは 'SendKey'コマンドの一つだと思います。数値をコピーするのではなく、変数に配置する必要があります.Excelでは、MyVariable = Range( "A1")のようになります。そのとき、MyVariableはその時点で範囲A1に格納されていた値を保持する'FORMAT(MyVariable、" 0000000 ")'を使うことができます 'あなたのコードで' hiddenTextEntry'や 'ReturnValue'で保持されているのでしょうか? –

答えて

0

です:

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

私はこの 'ibmCurrentScreen.SendControlKey(ControlKeyCode_Erase_Eof) ibmCurrentScreen.SendControlKey(フォーマット(ControlKeyCode_Transmit、 "0000000")) ibmCurrentScreen.Paste ibmCurrentScreen.SendControlKey(ControlKeyCode_Transmitを)'試してみました、それが動作しません。私は問題はどのようにそれが任意のソースからコピーされたときにコピーされた番号に "00"を追加することだと思う。貼り付ける前にコピーした数字が "00"になるようにコードを書くにはどうしたらいいですか? 'ibmcurrentScreen(Format(Paste、" 000000 "))'のようなコードはありますか?数字は6文字でも構いませんが、常に7文字にする必要があります。 – cptGT

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 
関連する問題