|
▼おやじ さん:
>試行錯誤中に見つけたのですが、参照するシート名が該当するファイルに無いと、「シートの選択」画面が表示されます。
>これもトラップして、例えば「原紙のシート名に誤りがある、管理者に問い合わせしろ」的な案内を出したいと思いました。
このメッセージの発生を掴めるかと言われると・・
自分にはやり方がわかりません。
有識者のResをお待ちください。
このダイアログで"キャンセル"を押した場合には、
On Error Goto で掴めそうですけど。
下記の構文なら「該当のBookを開く」必要があります。
開かずにSheet名を取得するには
こちらの「Office TANAKA」のページに詳しく書いてありますが、
自分は面倒くさいのでやったことはありません。
://www.officetanaka.net/excel/vba/tips/tips29.htm
おとなしく開くの良いと思います。
開くならわざわさリンク式を駆使する必要もないですけどね。
>そこで、上記のElse以降に以下を入れてみたのですが、最初の「c = Workbooks(・・・」でインデックスが有効範囲に無いとエラーが出ました。
>対象ファイルを開いていないとだめかと、やってみたのですが同じでした。
>変数を使わずにストレートに「\\SV\原紙\62_2」としてみたのですが、同じです。
>
>やっていることは、原紙のシート数を数え、インデックス番号を利用して、同じシート名が有れば自分のシートにリンク式を入力。
>無ければ、B1セルが空欄のままなので、それを拾って、同じシート名が無いです。と表示させ抜けようとしています。
>シート数は1ブックに原則1シート、多くても3シート以内です。
>For Each・・NextやDo Loopを使えばスマートでしょうが、そこまで行かない所でこけてしまっています。(これだと、シートのインデックス番号が変わったり、飛び番号になったら、またエラーですものね。・・・今気が付きました)
>
>ついでと言っては大変無礼で申し訳ないのですが、お分かりになりませでしょうか?
>
> c = Workbooks(FuPa & "\" & WbName).Worksheets.Count
> For i = 1 To c
> If Workbooks(FuPa & "\" & WbName).Worksheets(c).Name =WsName Then
> Worksheets(WsName).Range("B1").Value = "='" & FuPa& "\[" & WbName & ".xls]" & WsName & "'!$A$1"
> End If
> Next i
> If Worksheets(WsName).Range("B1").Value = "" Then
> MsgBox "保管されている原紙のシート名が間違っている"
> ActiveWorkbook.Saved = True
> Application.Quit
> Else
> If Worksheets(WsName).Range("A1").Value <> Worksheets(WsName).Range("B1").Value Then
> MsgBox "この様式は旧版。使用できない。", vbOKOnly+ vbCritical
> ActiveWorkbook.Saved = True
> Application.Quit
> End If
> End If
|
|