2016-12-30 30 views
1

私はExcelで次のことをすることを許可します。これはおそらくマクロを使用して達成されるでしょう。 Excel-vba:クリップボードからのみ画像を貼り付け+後で再利用できるようにする

  • コードは、その後からの画像を貼り付けます、クリップボードに画像が含まれているかどう

    1. ユーザーは、Snipping Toolを
    2. コードチェックと同じように、スクリーンショットを取る(クリップボードに画像を保持している場合にのみ、コードは実行します)クリップボードを指定された領域(例:Cell J55)に移動します。
    3. 同時に、この貼り付けたイメージにID(例:imgSource1)を与えて、ユーザーが後でこのイメージを別のシートで再利用できるようにしたいとします(例えば、シート2上でimgSource1を呼び出して貼り付けますそこに)

    私はこれまでに、上記の場所でExcelに何かを貼り付ける方法を学びました。私は、クリップボードが画像を保持しているかどうかを確認するための作業コードを見つけることができませんでした。今私は画像のみを貼り付ける方法を把握する必要があります(貼り付ける前にクリップボードが画像を保持しているかどうかをチェックする方法)。次のコードは私にとってはうまくいかないようです。

    Sub btn_addImg1() 
    If (Clipboard.GetImage() != null) 
        Sheet1.Paste Destination:=Range("J55"), Link:=False 
    Else 
        'do nothing 
    End If 
    

    If (Clipboard.GetImage()"ラインは赤であり、それはそれが必要と私に言っています 『ローカルドライブに画像を保存すると、私のような状況のために実行可能な解決策ではないこと)「!=』で」。

    注意を。それは、クリップボードから貼り付けるを持っている。

    ありがとう!

  • 答えて

    0

    を私はいくつかの回避策を考え出したが、それはテストが必要です。

    Btw、ツール - >参照 - > Microsoft Forms 2.0 Oject Librartyを実行してMSFormsを動作させる必要があります。

    Sub btn_addImg1() 
        Dim DataObj As New MSForms.DataObject 
        DataObj.GetFromClipboard 
        On Error GoTo Img 
         GetClipboardText = DataObj.GetText 
        On Error GoTo 0 
    Img: 
        If Err = -2147221404 Then 
         Err = 0 
         Sheet1.Paste Destination:=Sheet1.Range("J55"), Link:=False 
        Else 
         'do nothing 
        End If 
        End Sub 
    
    +0

    ありがとうございます。私は試して、それがどのように戻って報告します。私がコードを理解していることを確かめるために、MSFormsを使ってエラーをチェックしています。最初にクリップボードからデータを取得し、msformに送信してエラーをチェックします。エラーが検出されると、Imgに進みます。これは私が少し失ったところです: 'GetText'は何をしますか?また、なぜ 'error = -2157221404? 'ですか? – Baineteo

    +0

    ' GetText'を使用してクリップボードのミラーを含む 'DataObj'から文字列を取得します。クリップボードに文字列ではなくイメージが含まれている間、 'GetText'関数はエラーを返します。このエラー番号は-2147221404です。クリップボードが空であるか、別の種類のオブジェクトが含まれているときに、同じエラーが表示されるかどうかをチェックする必要があります。だから私はそれが回避策だと言ったが、テストが必要だ。あなたのご意見、おめでとうございます! :) – Limak

    関連する問題