• ベストアンサー

【VBAでシート名の存在チェックを行いたい】

目的は、特定したExcelファイルを開き、そこに存在するシート名が、あるシート名リストと一致するかどうかの判断を行うことです。 シート名を参照しようとすると、存在しない場合エラーになります。 例: Excelブック     シート名リスト 「顧客」シート   「住所」 「住所」シート   「趣味」 「会社」シート シート名リストの「趣味」がブックに存在しないので、エラーになります。 他の方法をご存知の方、教えて頂けますでしょうか? 宜しくお願いいたします。 Excel2000を使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

指定したシート名が存在するかテストする関数を作ってみました。 もっと良いやり方があるかもしれませんが・ ----------------------------------------------------------- Public Function hasSheet(name As String) As Boolean Dim x As Worksheet For Each x In Sheets If StrComp(name, x.name, vbTextCompare) = 0 Then hasSheet = True Exit Function End If Next hasSheet = False End Function

mari0629
質問者

お礼

具体的な内容まで提示して頂き、ありがとうございます。 早速実装してみたいと思います。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

>シート名を参照しようとすると、存在しない場合エラーになります。 ローテクですが、 「On Error Resume Next」で、エラーを解除したらいかがですか?

mari0629
質問者

お礼

ひとつの方法として参考になりました。 ありがとうございます。

関連するQ&A

  • Access VBAからExcelシートの削除

    お世話になります。 Access VBA から指定したExcelシートの削除を行うプログラムを下記の通りに記載しています。 Set oApp = CreateObject("Excel.Application") oApp.Workbooks.Open FileName:="エクセル.xls" oApp.DisplayAlerts = False oApp.Sheets("シート名1").Delete oApp.DisplayAlerts = True この場合において、"シート名1"が存在していれば問題なく処理されますが、 このシートが存在していなければエラーが起きます。 指定したExcelブックにこのシートが存在するかどうかのチェックを事前に行い、 存在する場合のみ削除処理を行うにはどうすればよいでしょうか? よろしくお願いします。 環境は、Access2007です。

  • シート名が変わる場合のVBAの設定の仕方

    VBAを勉強しながらエクセルで顧客管理シートを作っています。 全顧客の売上データが入ったシートが1枚あり、そのデータを各顧客シートにあるコマンドボタンを クリックすることにより、該当する顧客のデータをその各顧客シートに表示させるようにしたいと 考えています。 顧客が増えたりするとシートを増やすのですが、VBAの参照先シート名が固定されているため、 汎用的ではありません。 そこで顧客シートのオリジナルを作っておき、新しい顧客ができた場合はそれをコピーして使用する ようにしたいと思います。 シート名が変更になった場合でもVBAを書き直したりすることがないようにするにはどのようにしたら よいでしょうか? Excelのシート構成は ”売上データ”シート:ファイル名固定 ”○○会社”シート:ファイル名任意 ”△○会社”シート:ファイル名任意 よろしくお願いいたします。

  • エクセル 複数のブックのなかから 特定のシート名を

    宜しくお願い致します Excel for Microsoft 365を使っています 複数のブックのなかから 特定のシートを探したいのですが ひとつずつブックを開いて 目的のシートを探す方法は すぐ見つかりましたが、フォルダに100余りのエクセルファイルがあり、そのなかから特定の名称のタブ すなわちシートを探したいのですが そのための方法もしくは アプリを 御存じの方 御教示くださいませ windows10使用しています

  • EXCEL関数でシート名が変わる可能性があるシートのデータを表示させたい

    EXCELの同BOOK内の別シートのデータ参照に関して教えてください。 <内容> sheetが2枚有ります。 Sheet2のシート名は変わることがあります。 Sheet1にsheet2の特定セル(A100)のデータを表示させたい。 <困っていること> 色々調べて下記の関数をsheet1の表示させたいセルに設定しました。

  • VBAのコードについて教えてください。

    ユーザーフォームを作成したのですが、コードが分かりません教えて下さい。 ・ユーザーフォームは工場名を選択項目とし以下住所、電話番号等のExcelに記入してある情報が工場名コンボボックスより選択することによって、出てくるようにしたいのですが、可能ですか?個人情報はEXCELシート上にあり、随時追加されていきます。 また工場名のリストはexcelシートのsheet2にマスタとして登録されているところを参照するように設定したいです。

  • 【VBA】EXCELブックを開かずにシート名を取得したい

    VBAに関する質問です。 EXCELブックを開かずに、シート名を取得する方法を教えてください。 http://officetanaka.net/excel/vba/tips/tips29.htm ↑を見たのですが、具体的にどのようにしたらよいのかわかりません。 よろしくお願いします。

  • vba ブック間でシート名のコピーをするには

    始めまして、よろしくお願いします。 excel vba 初心者のものです。 2つのブックがあり同時に開いている状態です。1つのブックはデータがあります。 もう1つは空のブックです。 データのあるブックのシートには、 シート1のシート名は「8月1日」 シート2のシート名は「8月2日」 シート3のシート名は「8月4日」 シート4のシート名は「8月5日」 シート5のシート名は「Sheet1」 やりたいこと データ、シート名があるブックから、 空ブックのシートにシート名をコピーしてきてセルに貼り付けたいです。 シートに名前を付けてるシート数は不規則なので「Sheet1」まで来たら終了したいです。 どうぞご教授の程よろしくお願い申し上げます。

  • エクセルのシート名の参照

    エクセルでブック1とブック2があり、それぞれ日付別に1~31のシートがあります。 ブック1は日報のような内容となっており、ブック2でブック1のデータを参照して、計算をしております。 ブック2の計算式が月ごとに変わるのですが、ブック2のシート1に数式を入力し2~31にコピー&ペーストし、置換を使用して参照シート名を1から2~31へと置換しているのですが、間違いや変更のたびにやりなおしとなり、かなり手間となっています。 何か良い方法は無いでしょうか? 分かりにくくてすいません。

  • Excel2000 VBAで新規シート名を他のシート名と重ならないようにつけるには?

    始めまして。早速ですが、今頭を抱え込んでいる私の悩みを聞いて下さい。 シート名を追加するプログラムで、「シートを追加」というボタンを押すと、 Inputboxを表示し、そこに任意の番号("見積書1"や"請求書1"の数字部分)を入力して、その番号をシート名として取得すると同時に、シートを追加するようにしたいのです。 その過程で、新しいシートの名前をつける際に、同じブック内に既に存在する複数 のシート名と照らし合わせて、もし、既存の番号と同じ番号をInputBoxに入れたときには、「他の番号を入力してください」と再度InputBoxを表示させたいのです。 そして、シート名がブック内に同じものがない場合にのみ、シートを追加するというものです。 VBAを使うより、手動ですれば?という考えももちろん解決方法の一つかとは思いますが、何分Excelを始めて使う年老いた父のために、少しでも簡単に操作できるようにという思いから質問させて頂いております。 どうぞよろしくお願いいたします。

  • 存在しないシートの参照について

    こんにちは、 EXCEL2007を使用しています。 あるシートから存在しない他のシートを参照すると、参照エラー「#REF!」が表示されます。 このとき参照先のシートを追加してもエラー表示のままです。 該当シートが追加されたときに自動で更新させる方法はないのでしょうか? データメニューの「すべて更新」を行っても変化がなく、エラー発生セルでENTERすると更新されます。 よろしくお願いいたします。

専門家に質問してみよう