質問: エクセルシート1にwebページの文字列貼付け⇒その『リンク』をシート2にもコピーする関数 excelについてお尋ねします。 例えば、yahooのトップページを開くと、真ん中にニュースの見出しが表示され、その見出しはクリックできる青文字で表示されており、そのタイトルをクリックすると、ニュース詳細ページに飛びます。 このタイトルの1~8行目までの文字列をドラッグしてコピーし、excelの「sheet1」の「a1セル」に貼り付けると、a1~a8セルまでに8行のニュースタイトルが並び、このタイトルは青文字で表示されていて、それをクリックするとブラウザーが立ち上がり、そのニュース詳細が表示されますよね? このハイパーリンクが自動的にsheet2のa1~a8セルにコピーされ、sheet2のa1~a8セルのいずれかをクリックすると、そのニュース詳細ページに飛ぶようにしたいのですが、どういった関数を使用すれば良いのでしょうか? 単純にsheet1のa1~a8セルをコピーして、sheet2のa1セルに貼り付ければ済むのですが、上記のヤフーニュースは単なる例でして、実際はsheet1はwebページの文字列をコピーして貼り付けるだけの貼付け専用シートとし、その中の文字列をsheet2に抜き出して表を作っている為、一度のコピーペーストで済むようにしたいのです。 ご回答よろしくお願い致します。
回答: 続けてお邪魔します。 >マクロで行う場合で、sheet2のc3~c50にのみその操作を行いたい場合、教えて頂いたコードのどの部分を変更する必要がありますでしょうか? 今までのコード(これから提示するコード)はsheet1のセルのデータ変更があった場合に 実行されるコードですので、sheet2の設定は何も必要ありません。 結局sheet1のc3~c50セルデータ変更時のみのコードで良いと思いますので、 ↓のコードに変更してみてください。 private sub worksheet_change(byval target as range) '//この行から dim c as range '//対象セルが c3:c50 以外ならなにもしない if intersect(target, range("c:c")) is nothing or target.count > 100 then exit sub application.screenupdating = false for each c in target if c.row >= 3 and c.row <= 50 then '//対象セルをsheet2の同じセル番地にコピー&ペースト c.copy worksheets("sheet2").cells(c.row, "c").pastespecial paste:=xlpasteall end if next c application.cutcopymode = false application.screenupdating = true end sub '//この行まで ※ no.1で書いたように、sheet1のシートモジュールですので 画面左下、sheet見出しの「sheet1」上で右クリック → ・・・中略(no.1の操作)・・・として sheet1のデータを変更するだけです。 ※ 書式のみの変更では何も反応はしません。 データ変更があった場合のみマクロが実行されます。m(_ _)m