エクセルのマクロ(たぶん)についての質問です。

自分の使っているエクセルシートにはA列~F列まで上から下まで1000行程度使って色々なデータがあります。
この中でF列は上から下まで
【詳細について】 :::【ご注文について】
という文章が載ってます。自分がやりたいのは他の色々なサイトからコピー&テイストしてきた
文章をこの :::の部分に1行ごとに貼り付けたいのですが通常の動作であればまず①F列にカーソルを
あわせて②マウスをダブルクリックして③:::の部分までカーソルを移動させ④貼り付ける。
という風になるのですが大変手間なので省略して①F列にカーソルをあわせる②自動的に:::の
部分にカーソルが合わさり③そのままエンターキーを押せば貼り付けできる
というように簡略化したいのですが操作を教えて下さい。

回答の条件
  • 1人10回まで
  • 登録:2009/10/31 04:07:51
  • 終了:2009/11/06 15:39:14

ベストアンサー

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/10/31 06:12:34

ポイント350pt

(準備作業)

・Excelで ツール → マクロ → VisualBasicEditer

・VisualBasicEditerで ツール → 参照設定

・参照設定で Microsoft Forms 2.0 Object Library にチェックを入れる。


(マクロ作成)

(1)とりあえず空のマクロ作成

・Excelで ツール → マクロ → 新しいマクロの記録

・マクロの記録は とりあえず何も変更せずにOKをクリック

・Excelで A1をクリック → 記録終了をクリック

(記録終了のボタンが見当たらない場合は、ツール → マクロ → 記録終了)

(2)編集作業

・Excelで ツール → マクロ → VisualBasicEditer

・VisualBasicEditer左側にて 標準モジュール → Module1 を選択

Sub Macro1()
' Macro1 Macro
' マクロ記録日 : 2009/10/31  ユーザー名 :
Range("A1").Select
End Sub

といったものが右に出てくるので、以下に書き換え

Sub Macro1()
    Dim c As Variant, d As New DataObject, t As String
    c = Application.ClipboardFormats
    If c(1) = xlClipboardFormatText Then
        d.GetFromClipboard
        Cells(ActiveCell.Row, 6).Value = Replace(Cells(ActiveCell.Row, 6).Value, " :::", d.GetText)
    Else
       MsgBox ("クリップボードの内容が文字ではないので貼り付け出来ません")
    End If
End Sub

(3)動作確認

・一旦、Excel画面に戻って、いつもどおりA列に記入し、

 書籍検索も行い、コピーまでを実行する。

・VisualBasicEditorの画面に戻って、先ほどのマクロ内のどこかをクリックしておいてから、

 実行 → Sub/ユーザーフォームの実行(ツールバーにもあるので、それをクリックでもOK)

・Excel画面に戻って、貼り付けが正しく行われているかをチェック。

 上記マクロは実行テストを行ったものを貼り付けていますので、動かないとすれば、

 F列の:::が実は半角文字だったといった具合に、どこかが微妙に違うため、

 置換されなかったということになりますので、よくご確認ください。


(マクロ登録) Ctrl + V で動くようにしたい場合

Excelで ツール → マクロ → マクロ

マクロのダイアログで Macro1を選択 → オプション

マクロオプションダイアログで V を入力

※これによってCtrl+Vという貼り付け動作がマクロ動作に切り替わりますが、

 それは、このファイルだけです。他のファイルでは通常通りの動作となります。


(補足)

・このマクロではカーソルは移動せず、F列の内容だけが書き換わるように作ってます。

・Excelに切り替えて、Ctrl+V で F列の内容が変わるように作ってますので、

 別質問 question:1256930412 のような作業は不要になります。

・間違った操作をする度にメッセージが出るのが煩わしいという場合は、

 MsgBoxの行を削除するなり、コメントアウトするなりします。

・画像などは貼り付けられない仕様にしています。

 画像貼り付けなどを希望する場合は、IF判定の部分を適宜改造することになります。

 その際には [XL95] 組込み定数一覧 (1/3) などが参考になることでしょう。

id:seconduser2008

すごすぎます。ちょっとやってみますのでお待ち下さい。あとでコメントでお答えします。

あと皆様、コメントは回答前でもどんどんして頂ければ幸いですので宜しくお願いします。

2009/11/01 03:12:11
  • id:kn1967
    ソースコード中の 6 という数字を 4 に変えれば
      D列【詳細について】 :::【其の外】
    にも対応できます。

    ちなみに、
      Fはアルファベットの6番目なので6
      Dはアルファベットの4番目なので4
    という計算になり、例えば、
      Z列ならば26
      AA列ならば26x1+1=27
      BC列ならば26x2+3=55
    といった具合になります。
  • id:horosco75
    上のコメントは回答に対するものですよね。
    なぜ回答オープンしていないのに、コメントが書かれているのでしょう?
  • id:ken3memo
    >なぜ回答オープンしていないのに、コメントが書かれているのでしょう?
    それは、たぶん(自信ないけど)、回答を一回登録すると、回答が開かれていなくても
    回答の修正ができない
    ^^^^^^^^^^^^^^^^^
    から、補足事項をコメントとして書き加えたのでは?と勝手な妄想・予想。
    普通に考えると、回答が開いていないんだから、コメントに載せないで回答に合わせて書いた方がいいと思いますが、
    はてなのシステムが、回答を登録すると修正不可なので、コメント欄に追記する場面をたまにみかけます。
    回答登録前に見直して、追記がないようにするのが一番よいのですが、、、と自分のことを棚に上げて書いてみました。
    >この質問・回答へコメントを書く
    ↑[この]が開いてないのに[この質問]に対するコメントが書ける、そんなシステムなのかなぁ。
  • id:seconduser2008
    (準備作業)


    ・参照設定で Microsoft Forms 2.0 Object Library にチェック

    すいません。この段階で

    Microsoft Forms 2.0 Object Library が一覧に出てこないのですがどうすればよろしいでしょうか。
  • id:seconduser2008
    今使っているパソコンはシステム情報では

    ウインドウズXP home eddition

    Version 2002

    サービスパック 3
    となってます
  • id:kn1967
    見当たらないという経験がないので、ちょっと検索してみました。

    ほんとにちょっと検索しただけなので、該当するかどうか不安ではあるのですが・・・。
    http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1113418901
    VisualVasicEditorで
    >>引用ここから
    [挿入]-[ユーザーフォーム]-[UserForm]を追加。
    [ツール]-[参照設定]-[Microsoft Forms 2.0 Object Library]にチェックがついている事を確認。
    <<ここまで
    という事なので、上記Q&Aをお読みの上、一度確認してみてください。
  • id:horonict
    Excelのバージョンが違うために話がかみ合っていないのでは?
  • id:seconduser2008
    本日、ちょっと急用の為、明日又やってみますので今しばらくお待ち下さい。
  • id:seconduser2008
    何がおかしいのかちょっと試行錯誤してます。
    お待ち下さい。
  • id:kn1967
    id:horonict さん >Excelのバージョンが違うために話がかみ合っていない

    Microsoft Forms 2.0 Object Library という存在も、使い方も、
    97から2007まで共通ですが・・・?

    seconduser2008 さん>何がおかしいのかちょっと試行錯誤してます。

    いま、どのあたりでしょうか?
  • id:seconduser2008
    とりあえず終了しておきました。
    経過はこのコメント欄で報告致します。
  • id:seconduser2008
    いまのところうまくいってます。
    ちょっとお待ち下さい。
  • id:seconduser2008
    完璧に出来ました!
    あとはもしこれをA列でなくD列のものを
    F列に貼り付ける場合のコードを教えて下さい。
  • id:kn1967
    >A列でなくD列のものをF列に貼り付ける

    すみません。話の流れが読めません。

    【詳細について】 :::【其の外】 に対応させたいという事でよければ、

    (1)今回作ったマクロを丸ごとコピー
    ※ Sub Macro1() を例えば Sub Macro2() といった具合に別の名前にする。
    (2)6 という数字の箇所はF列を示しているので、4 (D列)に変更する。
    (3)マクロ登録はExcelのショートカットで使われていない Ctrl+Q あたりを登録すると良いでしょう。

    これで Ctrl+VならF列の:::と、Ctrl+QならD列の:::と置き換わるようになります。
  • id:seconduser2008
    すいません。ちょっと解りにくすぎましたね。
    A列でなくD列のものをF列に貼り付ける、という
    事ですがD列には待ったく別の項目で
    D1「近代日本哲学思想家辞典」
    D2「串田孫一哲学散歩」
    D3「契沖全集」
    D4「契沖伝」
    D5「経学研究序説」
    D6「元明時代の儒教」
    などと並んでいます。
    これらをコピーして「日本の古本屋」で
    検索したあとでF列に「日本の古本屋」で
    コピーしたモノを貼り付けたい、という事です。













  • id:kn1967
    それって、もしかして私kn1967の作ったマクロではなくて、
    別質問(http://q.hatena.ne.jp/1256930412)のほうで
    id:ken3memo さんの作られたマクロのほうの話では?
  • id:kn1967
    ken3memo さんの作られたマクロは検証してませんが、
    下記の1を4に替えればD列を対象にしてくれるはずですよ。

    If Target.Column = 1 Then 'A列の場合だけ、処理する。
           ↓
    If Target.Column = 4 Then 'D列の場合だけ、処理する。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません