• 締切済み

シートの可視セル部分のみに「名前の定義

お世話になっております。 EXCEL2013で作ったシートの可視セル部分のみに「名前の定義」を設定する方法を教えてください。 「名前の定義」で設定した範囲をACCESSでインポートしたいと考えているのですが、 可視セルのみに名前の定義を付ける方法が分かりません。 よろしくお願いします。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。 データ範囲に名前を付けて、その一部行・列を非表示にしたままでも、普通にAccessからリンクテーブルにして「非表示行列を含む全体が」取得できましたので、本筋には関係ないですが、一応訂正しておきます。

全文を見る
すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

当方xl2010ですが、Excel VBAでシート中のUsedRangeの、SpecialCells(xlCellTypeVisible)に名前を付けるのは下記の様にできます。手動でもホーム/検索と選択/条件を指定して選択で同様に出来ると思います。(xl2010の場合) Sub test() Dim myWbk As Workbook Dim mySh As Worksheet Dim myRange As Range Dim myArea As Range Set myWbk = ThisWorkbook Set mySh = myWbk.Sheets(1) Set myRange = mySh.UsedRange.SpecialCells(xlCellTypeVisible) myWbk.Names.Add Name:="testName", RefersTo:=myRange For Each myArea In myRange.Areas Debug.Print myArea.Address Next myArea End Sub '出力 '範囲中に非表示の行と列が存在する場合です。Areaは4つ存在しています。 '$B$3:$D$14 '$K$3:$L$14 '$B$22:$D$30 '$K$22:$L$30 '名前の管理で確認 'testName {...} =Sheet1!$B$3:$D$14,Sheet1!$K$3:$L$14,Sheet1!$B$22:$D$30,Sheet1!$K$22:$L$30 ブック ただ、こうやって付けた名前は、Accessからインポートしようとしても認識されませんし、試しにADOでワークシートに接続しようとしても、 「オブジェクト 'testName' が見つかりませんでした。」という実行時エラーになってしまいます。 非表示行・列を無くして上記コードを実行してから接続すると問題なく接続できました。 非表示が行だけならArea毎に名前をつけてインポートしてやれば良いですが、列の非表示もあると面倒ですね。 非表示は解除して、ワークシートをリンクテーブルにして、Access側で非表示にする条件でクエリを作成して取り込んではどうでしょうか。 または、エクセル側でSpecialCells(xlCellTypeVisible)を選択してコピーし、別シートに貼り付けると非表示行・列は切り詰めて貼り付けられますので、そちらを利用する案も考えられます。 ご参考まで。

LETMEKNOW13
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 可視セル設定をデフォルトにしたい

    エクセル2000を使っています。 コピー&ペーストのたびにいちいち可視セルの設定をするのが面倒です。 シートを開けたら可視セル設定がデフォルトになってるという方法は無いんでしょうか?

  • Excelの可視セルを知りたい

    ExcelにおいてVBAを使っています。シートをスクロールして表示された左上位置にある可視セルを知ることはできますか。アクティブセルとか範囲指定されている場合のようにできないものでしょうか。

  • マクロで可視セルのみの削除

    A行に数字を入れ、B行にA行同列セルの数字に対して 数値を返す数式を入れています。 B行は非表示にしています。 (C・D行、E・F行・・・とも同じ処理) 数字を入力する範囲(A、C、E・・・)を選択し、 入力されている数字を消去するようマクロを組みました。 (範囲選択→ツールの編集→ジャンプ→可視セルを選択後、Delete) これはうまく作動します。 が、数式が壊れるのを防ぐ為、念には念を・・・と、 入力範囲部分はセルの書式設定で保護ロックを外し、 シートを保護しました。 そうすると、保護されているからだめ!と エラーが出て、マクロが作動しません。 (可視セル選択部分にデバッグがでます。) ・非表示のセルがある ・一部を除きシートを保護している 状態で、マクロで可視セルのみ削除することは不可能なんでしょうか? 宜しくお願いします。

  • フィルター後、可視セル一部データ参照 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で可視部分のコピー・貼り付けの方法について

    excelで可視部分のコピー・貼り付けの方法について データをフィルタにかけてその抽出した部分のみを他のセルまたはsheetにコピー・貼り付けしたいのですが、抽出した部分以外も一緒に貼り付けされてしまいます。 同じような質問の回答例を検索したところ、「貼り付ける範囲を選択し、ジャンプ→可視セルで先頭に「=」を入力して貼り付けたいセルをクリックし「Ctrl+Enteer」でできる」とありました。 私はExcel2007を使っており、以前の2003と画面操作が随分変わってしまったため、操作のためのアイコンがどこにあるのかが見つけられません。Excel2007での操作方法をわかりやすく教えていただけないでしょうか。 よろしくお願いいたします。

  • エクセルの名前について教えてください。

    エクセルのセル範囲の名前について質問です。 エクセルのシートでセルの範囲を選択して、左上の名前ボックスに直接名前を入力すると名前が定義できます。しかし、別のセル範囲を選択して、同じ(既に定義されている)名前を定義しようとすると、定義済みの範囲にアクティブセルが飛ばされます。異なるシートで同じ名前をつけようとしても同じ結果になります。名前がついたセル範囲を移動させようと、カットペをすると移動します。もしくは、挿入-名前-定義で名前を削除してから名前ボックスで定義する必要があります。ここで、質問です。しかし、名前が定義されたシートをタブ(一番下のシートの名前が書かれていて選択する部分)を右クリックしてシートのコピーをすると同じ名前がついた異なるセルが出来てしまいます。 色々試してみると、前に、imogasi様にご指導頂いた。名前は、ブックレベルとシートレベルとであるとの内容にからんだことだと思いました。(以下にその時の転記) >名前定義はブック単位とシート単位の2つがあります。上記の2つが >その例です。 シート上でも、=Book1!名前1や='Sheet1'!名前1って出てきました。 考え方として次のような考え方で宜しいのでしょうか? 名前ボックスでは、ブックレベルでの名前定義になる。 シートレベルでの定義は、エクセルのシートからは出来ない? bookレベルを指す時は、Book1!と''でくくらない Sheetレベルを指す時は、'Sheet1'!とシート名の部分を''でくくる 同じセル範囲を、同じ名前であっても、シートレベルとブックレベルで重複定義できる? vbaで使用する時は、同じく、'Sheet1'でくくる どなたか?詳しいかた教えて頂けないでしょうか?宜しくお願いします。

  • エクセルの名前の定義について質問です

    エクセル2000を使用しています 複数のセルを範囲指定して名前を付けたのですが、シートコピーした場合はその名前は各々そのシート内のみで有効なのですが、新たに別のシート(仮に01)で、すでに他のシート(仮に02)で使用している名前と同じ名前を付けると範囲がシート(01)の方に移動してしまいます。 シートコピーでなくシート個々に他のシートでも定義されているおなじ名前を付ける方法はないのでしょうか。

  • エクセル 名前の定義 増える

    表題の通りですが、 名前を定義したシートをコピーした時に増えていくのは仕方ないとして、 テーブル化したセル内に名前を定義した後(参照範囲が=テーブル1[テーブル1]など)、 別の空白のシートを挿入、その空白のシートをコピーして増やすと名前の定義が増えます。 テーブル化せずに名前の定義をした場合は増えません。 Excel2016なのですが、これは仕様?バグ?どうなんでしょうか。 何もない空白のシートをコピーすると増えていくのがバグだと思わないと理解できないのです。

  • 名前定義で定義している値が、自動的に可変してしまう

    Excel の質問です。 名前の定義について、教えて下さい。 僕が仕様を理解していないのか、関数の記述が間違っているのでしょうか ■現象 シートクリック時に、定義している関数の値が可変してしまう ■データ ワークシート[Sheet1]上データ  |A     |B ------------------------------------ 1|りんご   | 2|みかん   | 3|バナナ   | 4|パイナップル| 5|もも    | A1 ~ A5 は、データを直接入力 ■名前の定義 (1).数式リボン> 名前の管理> 新規作成 (2).以下 名前: 最終行番号 範囲: Sheet1 参照範囲: =MAX(INDEX((Sheet1!A:A<>"")*ROW(Sheet1!A:A),0)) (3).D10 に、「=最終行番号」と入力 ■結果 ・入力直後、D10 は、5 となるが、どこかのセルをクリック後、名前の定義を見ると「A:A」になっていない。  ・異なる列範囲になっている  ・規則性不明 ■期待結果 ・上記の場合、どのセルをクリックしても、名前の定義で定義した範囲が「A:A」のままであって欲しい。 ■現象確認 Excel2010 ■その他 ・参照範囲で設定している記述が、参照ではないからでしょうか?(自己定義関数を、名前の定義で呼び出している感じで、間違った使い方をしているから?)

専門家に質問してみよう