Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Excel 2007)
コピペ
投稿日時: 18/03/14 18:32:52
投稿者: またや

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim cO As LONG
Cancel = True


Select Case Range("a4").Value
Case 1
 Range("e2").Copy
 cO = 2
 
 Case 2
 Range("f2").Copy
 cO = 0
End Select
Range("a4") = cO
Range("a2").Select


End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case Range("a2").Address
         Range("a3").Copy
    Range("a4") = 1
    
End Select
Range("a2").Select


End Sub

別のアプリへエクセルからデータをコピーする効率的な方法を教えてください。
現状。
@A2セルへキーワードを入力し、
AA3セルの値を別アプリに貼り付けます。
Bエクセルをダブルクリックし、
CE2セルの値を別アプリに貼り付けます。
Dもう一度エクセルをダブルクリックし、
EF2セルの値を別アプリに貼り付けます。
 
理想は@の後、エクセルに戻ることなくFIFO又はLIFOで別アプリのほうへ貼り付けることです。
cliborというクリップボードのフリーソフトで試してみましたが、うまくコピーできません。
VBAのみでは別アプリを制御しない限り、できないものだとは思いますが、コピペだけなので、
クリップボードを介して、手間を省く方法があれば教えていただきたいです。
よろしくお願いいたします。
 
 

回答
投稿日時: 18/03/14 20:32:36
投稿者: WinArrow
投稿者のウェブサイトに移動

>VBAのみでは別アプリを制御しない限り、できないもの
その通りです。
 
例え、コピペとしても制御できません。

回答
投稿日時: 18/03/14 21:01:52
投稿者: simple

蛇足です。
 
>コピペだけなので、 クリップボードを介して、手間を省く方法があれば教えていただきたいです。
コピペ = Copy + Paste
Copyはマクロでいくらでもコントロールできます。
しかし、Pasteは相手(アプリケーション)がありますから簡単ではないです。
アプリケーションが、WordとかOutlook、PowerPointなどのOfficeなら可能です。
それ以外なら難しいですね。
貼り付ける場所のコントロールがExcelからはできないはずですから。

回答
投稿日時: 18/03/14 21:41:44
投稿者: もこな2

質問がピンときてないですが、後半の質問者さんの説明を見ていると、
 @特定セルへの入力をイベントとして、
 A別セルの値をクリップボードに送り
 B別アプリに出力して
 CExcelに戻ってきて
 DAとは別のセルの値をクリップボードに送り
 E別アプリに出力
したい
 
ってことなんでしょうか?
 
ものすごーく頑張れば、SendKeysステートメントを使って、やることはできるかもしれないですが、simpleさんが指摘されておられるとおり、相手がOfficeならもうちょっと簡単なやり方もありそうな気がします。
 
とりあえず、出力先のアプリケーション次第だなぁと思いました。
 
なお、Copyメソッドを使ったアプローチを考えておられるようですが、少なくともクリップボードに値を送るものではないとおもうので、上記の推測があっているようであれば、
http://www.moug.net/tech/exvba/0150091.html
こちらのトピックを一度確認されたほうがよいかもしれません。

投稿日時: 18/03/14 22:27:54
投稿者: またや

回答ありがとうございます。
貼り付け位置は手動で選択します。
エクセルに戻って、ダブルクリックする部分を
何とかしたいと思っています。

回答
投稿日時: 18/03/15 10:22:49
投稿者: mattuwan44

>エクセルに戻って、ダブルクリックする部分を
>何とかしたいと思っています。
こんなこと、手動でした方がストレスが無いような気がします。
 
セルを編集状態にするなら、F2キー押下
セル内の全部の文字を選択するなら、Ctrlキー+Aキー
コピーするならCtrlキー+Cキー
貼りつけは Ctrlキー+Vキー
アプリケーションの切り替えはAltキー+Tabキー
 
あと、どんなアプリなのか解らないですが、入力欄移動はTabキーかも?
 
この辺のショートカットキーはWindowsに合わせて色々なアプリで大抵共通なので、
それを覚えて慣れるのが一番かと思います。
 
手が、キーボードとマウスをうろうろしなくなるだけで、
だいぶストレスが無くなると思います。
(左手でキーボード押下、右手でマウスで選択)
 
また、そういった操作をマクロ化するフリーのソフトもあると思うので、
画面の表示がいつも同じになるなら、そういったソフトで、
マウスの操作や、キーボードの操作を一連で自動実行してくれますが、
動作が安定しない(見た目のままが、記録される)のであまりおすすめではないと思います。
また、画面を28インチや31.5インチのような大画面にすることで、
2つの画面を行ったり来たりするのにウィンドウが重ならないように出来るので、
操作はすごく楽になると思います。
また、画面を買い換えることが出来ない場合は、
17インチとか19インチとかでも事務機やさんとか、
リース屋さんとか中古が無料または安価で譲ってもらえるなら、
2つ画面を繋ぐというのもありかなぁとは思います。
 
僕は会社でノートパソコンを支給されてますが、
個人で28インチを用意して使ってます。
キーボードも別途買足してます。
下手したらメモリーも勝手に増設してるかも。
使いにくい道具でストレス溜めながら仕事するのはプロじゃないですよね?
手や目に触れる部分は結構重要だと思ってます。
まぁ、どんな環境でも結果が出せるのがプロとも言えますが。。。。

回答
投稿日時: 18/03/15 11:31:27
投稿者: Suzu

またや さんの引用:
回答ありがとうございます。
貼り付け位置は手動で選択します。
エクセルに戻って、ダブルクリックする部分を
何とかしたいと思っています。

 
ダブルクリックの部分 と言う話であれば、コピーの部分だけ。
貼り付けの部分は、大丈夫なのであれば、
 
Officeクリップボードを使い、複数の内容をクリップボードに保持できます。
 
"Officeクリップボード VBA" で WEB検索してみましょう。

回答
投稿日時: 18/05/01 22:12:35
投稿者: MachGoGoGo
メールを送信

UWSC(現在,サイトのトップページはつながらないとかで騒がれている)とか,海外のソフトウエアの
Macro Toolworksとか,Excelをその支配下において動くアプリケーションで作ったほうが早そう。

トピックに返信