• 締切済み

【VBA】ハイパーリンク付の項目をフィルタで抽出後に転記する方法

現在、データベースに検索をかけて抽出された項目を別シートに転記するプログラムを組んでいます。 そこで、フィルタ後に表示された可視セルをコピーで転記すると、データベース内に貼ってあるハイパーリンクがなくなってしまい困っています。 <例> 果物   注文個数   業者サイト名(ハイパーリンクあり) りんご  1個      スーパーA店 みかん  2個      スーパーB店 バナナ  5個      スーパーB店 りんご  3個      スーパーC店 例えば、上記のようなデータからフィルタで「果物=りんご」を検索し、その結果の行を別のシートに転記する場合に「業者サイト名」に貼り付けてあるハイパーリンクも同時に転記する場合のプログラムをご教示願えませんでしょうか。 以前作成したハイパーリンクをコピーするプログラムでは、If文でハイパーリンクの有無を確認してから、コピーを行っていましたが、それをさらに可視セルかどうかを確認して行うとなるとどうしていいか分からなくなっています。 VBA初心者のため、少し複雑なプログラムになると書くことができなくて困っており、知見のある方にアドバイスをいただければと思います。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

普通にコピー&ペーストした場合はハイパーリンクも付いていくと思います。 マクロ中で値のみ貼り付けにしていませんか? 該当箇所のコードを提示して貰えると的確な回答が付くと思います。

関連するQ&A

  • フィルター後、可視セル一部データ参照 VBA

    いつもお世話になっております。 Excel2003を使用しております。 フィルターを掛けたあと、範囲を別シートにコピーする プログラムを組みました。 その際に、一部分だけ持っておきたいのですが どのようにすれば良いでしょうか? たとえば、フィルター後の内容が 名前,テスト1,テスト2,テスト3 A,テスト1,テスト2,テスト3 B,テスト1,テスト2,テスト3 とあったとして、テスト2の内容だけをコピーし Sheet2のA1にコピーすることはできるのでしょうか? 現段階では、 AとBを範囲指定してコピー テスト3を範囲指定してコピー という作業をしております。 -------------------- .Range("F2:F" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Select '可視セルの選択 Selection.Copy '可視セルコピー Worksheets("製品別グラフ").Range("A" & j).PasteSpecial 'A列に貼り付け! Excel.Application.CutCopyMode = False 'クリップボードの内容クリア ---------------------------------- このように行っているため、 全範囲選択してコピー…ということはやりたいことと違うため どうしたらいいのか分からず困っています。 可視セルの指定行(A2:?) の一部の可視セルを取り出したいのです。 何か良いサイト、方法がありましたら教えてください。 よろしくお願い致します。

  • Excel VBA データの転記

    Excel2003を使用しています。 Sheet1のB1セルとSheet2のB1セルのデータが一致したら、Sheet2のB1セル~E1セルのデータをSheet1のF1セル~Iセルに転記するというコードを書いています。 Sheet1のデータ最終行を取得して、上記の条件を満たさなかったSheet2のB1セル~E1セルのデータをSheet1のデータ最終行の1行下から順に転記するという内容を追加したいのですが、転記先の指定の仕方が悪いのか、希望通りになりません。 どなたか一例を示していただけないでしょうか? スマホからの投稿で、実際に書いているコードを記載できず、分かりづらくて申し訳ないのですが、よろしくお願いします。

  • VBA オートフィルタの使い方について

    VBAのオートフィルタの使い方について 教えていただきたい部分がございます。 画像について ①~④までの果物、個数、値段を別のシートにコピーしたいと思っています。 それまではできるのですが、 ⑤個目の果物が増えたりした場合も自動的にコピーして 別シートに貼り付けれるようにしたいと思っています。 ①でフィルタして、コピーして、貼り付けて 次は②でフィルタして、コピーして貼り付けてを繰り返すのに ⑤個目が増えたり、④がなくなった場合でも ある分だけをコピーして貼り付けれるようにしたいです。 一つずつ Selection.AutoFilter Field:=1, Criteria1:="①" みたいな感じでやらずに①~ある分だけフィルタをかけるみたいなやり方はないでしょうか。 説明がわかりずらくて、申し訳ございません。 回答をよろしくお願いいたします。

  • VBA のオートフィルタについて

    ExcelVBA初心者でございます。 2点質問がございます。 (1)エクセルVBAのオートフィルタの機能を使い、"マスタ0701"シートの13行目が”ABC”の行を、"検索結果"というシートにコピーしたいです。 以下のマクロを実行しますと、まず"マスタ0701"のB1のセル(13行目はブランク)がコピーされ、その下に13行目が”ABC”に該当する行がコピーされます。 なぜ、B1セルまでコピーされるのかご教示頂けますと幸いです。 (2)また検索結果だけでなく、オートフィルタのタイトル行もコピーするようにするにはどうしたら良いでしょうか? よろしくお願いいたします。 Sub 絞り込み() With Worksheets("マスタ0701").Range("A1") .AutoFilter Field:=13, Criteria1:="ABC" .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("検索結果").Range("A1") .AutoFilter End With End Sub

  • 【VBA】オートフィルタで抽出した内容を隣のセルにコピーする方法

    A列   B列 1       都道府県 2       神奈川 3       神奈川 4       埼玉 5       東京 6       千葉 7       東京 8       神奈川 9       東京 1行目にオートフィルタを使用してB列から東京だけを抽出。 A列   B列 1       都道府県 5       東京 7       東京 9       東京 B列の内容を隣のセルにコピー。 A列   B列 1       都道府県 5東京       東京 7東京       東京 9東京       東京 このような処理をVBAで行うにはどうしたらいいでしょうか? 可視セルを他シートに貼り付ける処理は分かりましたが、同シート内での処理が分かりません。 宜しくお願いします。

  • EXCELのハイパーリンクのセルを探す方法

    いつもお世話になります。コピーしてきたEXCELファイルを自分用に編集したのですが、どうやら前にハイパーリンクが設定されたらしく、ファイルを開く度にリンクについての質問をされます。ハイパーリンクを消したいのですが、シート数が19ページもあり、どのシートのどのセルに設定されているのかがわかりません。 全ページを"HYPER"で検索したのですが、ハイパーリンクの設定されているセルはありませんでした。ハイパーリンクの設定されているセルを探す方法をご存知の方がいらっしゃいましたら、アドバイス宜しくお願い致します。

  • オートフィルタで抽出されたデータをうまく印刷したい

    Excel2003で作ったA1:AU1666にデータが入っている表があります。 オートフィルタで、ある項目が○のものだけを抽出し、その部分だけ印刷したいのですが、 印刷しようとすると細かく改ページがされてしまします。 青い線を動かそうとしても動かせません。 そこで、可視セルだけをコピーして他のシートにでも貼り付けようとしたのですが、 「結合されたセルの一部を変更することが出来ません」となりコピーできません。 結合を解除しようとも思ったのですが、結合されている部分とされていない部分がたくさんあり、一気に解除ができません。 オートフィルタを使った表の見えている部分だけをうまくページに収めることは出来ないのでしょうか?

  • フィルタオプションの設定を使って、他のシートの情報を抽出しております。

    フィルタオプションの設定を使って、他のシートの情報を抽出しております。 しかし、他のシートでハイパーリンク設定しているセルを抽出すると、 ハイパーリンクが解除されてしまっており、困っております。 フィルタオプションを使ってハイパーリンクを生かす方法があればご教示いただけると幸いです。

  • エクセルのフィルタリングされたのデータコピー

    Excel(2003、またはそれ以降)の質問です。 フィルタで抽出(可視化された)したデータだけをコピーし 別シートのフィルタで抽出したセルだけに張り付けることは可能でしょうか? (例) フィルタにより、シートAの1・2・5行目を抽出し、可視化された項目セルのみをコピー ↓ フィルタにより、シートBの3・6・9行目を抽出し、可視化された項目セルに張り付け。 ※普通にやろうとすると、コピーした内容が、シートBの不可視セルにまで張り付けられてしまいます。 ※コピー元、貼り付け先のセルのサイズや書式は同じです。 今はVLOOKUPで、シートA・Bの共通項目をキーにセルの内容を引っ張ってきてるんですが もう少し楽にコピペできればな、と思い質問しました。 分かりにくい質問ですみません。 何か良い方法があれば、教えてください。

  • VBA転記について教えて下さい

    200件位のデータがあるとします。顧客情報AB・商品C~AY 氏名 性  青森りんご 長野りんご みかん バナナ 送料 AA  男   1             2      100 BB  女          1            100 CC  男                   3     0 このデータを別シートAにはりんごと送料 別シートBにはそれ以外のデータに分けたいのです。 シートA 氏名 性  青森りんご 長野りんご  送料 AA  男   1           100 BB  女        1    100 CC  男 シートB 氏名 性  みかん バナナ AA  男    2 BB  女 CC  男       3 こんな感じです。 色々参考にして作成しましたがうまくいきませんでしたので 教えて欲しいです。 よろしくお願いします。 エクセルは2002です。 1、項目名の転記でデータは200位ですが変動があるので最終行で作成したら うまくいきませんでした。 2、データ域の転記が動きません。 Sub サンプル() Dim i As Long Dim lastRow As Long Dim lastcolumns As Long Dim S1 As Worksheet, S2 As Worksheet, S3 As Worksheet Dim myColumns As Long Dim myKey As String Set S1 = Worksheets("データ") Set S2 = Worksheets("りんご") Set S3 = Worksheets("その他") ' Sheet1の最終行を取得 lastRow = S1.Range("A" & Rows.Count).End(xlUp).Row ' Sheet1の最終列を取得 lastcolumns = S1.Cells(1, Columns.Count).End(xlToLeft).Column ' 項目名の転記 S2.Range("A1:B200").Value = _ S1.Range("A1:B200").Value S3.Range("A1:B200").Value = _ S1.Range("A1:B200").Value 'データ域の転記 For i = 2 To lastcolumns myKey = S1.Cells(1 & i).Value If myKey <> "" Then myColumns = Worksheets(myKey).Cells(1, Columns.Count).End(xlUp).Columns + 1 S1.Range(S1.Cells(1, i), S1.Cells(lastRow, i)).Copy _ Worksheets(myKey).Range(Cells(1, myColumns), Cells(lastRow, myColumns)) End If Next i End Sub

専門家に質問してみよう