- ベストアンサー
コピーした文字列を現在開いているシート名にセットしたい
現在開いているシート名を、クリップボードにある(?)文字列に 書き換える(?)マクロをつくりたいです。例えば、 (1) セルA1に、「aaa111」と入力されているとします。 (2) A1セルをダブルクリック(ないし、数式バーから必要な文字列だけを選択)します。 (3) 「111」だけをコピー(Ctrl+C)します。 (4) 「Sheet1」のタブをWクリックします。 (5) 貼り付け(Ctrl+V)により「Sheet1」が「111」に書き換えられます。 (6) Enterキーで確定します。 参考までに今の動作をマクロ記録してみると、次のようになったのですが、 「111」だけをコピーしたつもりなのに、「aaa111」がクリップボードに 格納されてしまっています。 Sub Macro1() ActiveCell.FormulaR1C1 = "aaa111" Sheets("Sheet1").Select Sheets("Sheet1").Name = "111" End Sub 任意のセルをダブルクリックして 必要な文字列(=シート名にしたい文字列)だけをコピーし、 マクロを実行(ショートカットキーを押下)するだけで サッと書き換わるイメージですが、実現可能でしょうか。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- komorebi99
- ベストアンサー率33% (15/45)
回答No.1
お礼
KenKen_SPさん、いつもお世話になってます! > VBA はクリップボード操作の命令が貧弱で、クリップボードのデータ > を直接操作することはできません。 キーボードマクロで拾えなかった理由は そういうことだったのですが。 > ・#1 のご回答のとおり、一度セルを経由させる > ・MS Forms2 Object Library を使う > ・API の GetClipboardData 関数を使う なるほど、VBAの範疇でないことは、よそから プログラムを借りて解決できるというわけですね。 以前もマクロで質問させていただいたとき、APIを活用した 解法をご教示いただいたことがありました。 > のいずれかの方法をとることになります。下記のコードでは API を > 使って直接クリップボードの文字列を取得しています。 早速導入させていただきましたが、あまりにも 希望した動作だったので感動しました(^^; 個人用マクロブックに入れて永久保存版にさせていただきますm(_ _)m > 直接シートタブ上で Ctrl+V として貼り付けても手間は変わらない た、確かにそうかもしれませんね。 キーボードから手を離さないで済むだけでも十分に生産性は上がり ますので、活躍の場はたくさんありそうです。 本当にありがとうございました。今後ともよろしくお願い致します。