• ベストアンサー

EXCEL VBA 他のアプリケーションからの自動貼り付け

OSはWIN XP HOME, EXCELは2002を使用しています。 よろしくお願いします。 ●現在の運用 1.全く別のアプリケーションの情報をコピー(ユーザー操作) 2.sheet1のセル"a10"を一度左クリック後、右クリックして貼り付け(ユーザー操作) 3.マクロ実行(ユーザー操作) ●上記の運用を以下のようにしたいと思っています。 1.全く別のアプリケーションの情報をコピー(ユーザー操作) 2.マクロ実行(ユーザー操作) つまりマクロのはじめの部分に Range("a10").Select ActiveSheet.Paste というような内容を挿入した後に本来のマクロを実行したいのですが、ActiveSheet.Paste のところで「Worksheetクラスの Paste メソッドが失敗しました。」と表示されてしまい、うまく行きません。 ユーザーがクリックする場所をA9や B10などを選択してしまうと期待する結果が出ないため、是非とも対応したいと思っています。よい方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • oui1012
  • ベストアンサー率25% (25/97)
回答No.4

#1です. >ユーザー操作で他のアプリケーションのコピーまでは行いますので、パソコンが一時記憶している状態のコピーデータを取り出す(貼り付ける)方法があればよいのですが・・・・ >ちなみに今、メモ帳とWORDからできるかどうか試してみましたが、問題なくできました。でも、同じアプリケーションのエクセルからは出来ないようです。 結論ですが,できます. ただ,コピーするのがどんなデータなのか 詳細がわかればもう少し答えられるんですけど… 例えば,コピーするデータに 空白・改行等が含まれていると, エクセルで貼り付けする際に 自動的に形式が決定されたりします.

min128mini
質問者

お礼

ご回答どうもありがとうございました。 いろいろ試してみたのですが、どうやら私の質問そのものが間違えていたようです。 このやり方で他のアプリケーションのデータの貼り付けは可能なようです。 しかし、この質問をする前の私の実験ではエクセルの別BOOKを他のアプリケーションと想定して行っていたのですが、この場合のみ(エクセルの場合のみ)質問にあるようなエラーメッセージが出てしまうようです。 コピーするデータは、経理データの一覧のようなものです。空白や改行などはありますが、この後のマクロで処理していますので大丈夫かと思います。 とりあえず、解決いたしました。皆様どうもありがとうござました。

その他の回答 (3)

  • kojitti
  • ベストアンサー率32% (449/1386)
回答No.3

以下ように修正してください。 ActiveSheet.Paste ---> Worksheets(1).Paste

min128mini
質問者

お礼

ご回答どうもありがとうございました。 いろいろ試してみたのですが、どうやら私の質問そのものが間違えていたようです。 このやり方で他のアプリケーションのデータの貼り付けは可能なようです。 しかし、この質問をする前の私の実験ではエクセルの別BOOKを他のアプリケーションとして想定して行っていたのですが、この場合のみ(エクセルの場合のみ)質問にあるようなエラーメッセージが出てしまうようです。 とりあえず、解決いたしました。皆様どうもありがとうござました。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

別アプリの内容を別アプリでコピーするので、ClipBoard経由が易しい(またはせざるを得ない)のでは。 でもVBならClipboard.SetTextなど使えるようですが エクセル・アクセスのVBAでは不可で、APIを使う方法が載っています。 http://support.microsoft.com/default.aspx?scid=kb;ja;JP138910 私は未経験ですが、これは使えませんでしょうか。 見当違いの場合はご免ください。

min128mini
質問者

お礼

ご回答ありがとうございました。ご紹介いただいた内容を勉強してみます。

  • oui1012
  • ベストアンサー率25% (25/97)
回答No.1

いま手持ちの環境でテストできないのですけど, マクロを実行するまえに その対象シートをactiveにしておかないとダメかもしれません. つまり,  ・コピー  ・シートを選択(シートのタブをクリックするとか)  ・マクロ実行 という感じでしょうか. もちろん,アクティブシートを指定するメソッドもあるので, それをマクロに追加してもいいかもしれません.

min128mini
質問者

お礼

早速のご回答ありがとうございます。 他のアプリケーションとはEXCELでもWORDなどのMICROSOFTの製品でもない全く別のソフトなのですが、 EXCEL VBAから指定することはできるのでしょうか? ユーザー操作で他のアプリケーションのコピーまでは行いますので、パソコンが一時記憶している状態のコピーデータを取り出す(貼り付ける)方法があればよいのですが・・・・ ちなみに今、メモ帳とWORDからできるかどうか試してみましたが、問題なくできました。でも、同じアプリケーションのエクセルからは出来ないようです。

関連するQ&A