[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Webページ保存したシートの開き方』(のの)
Webページで保存したhtmファイルの、3番目のシートを直接ブラウザで開きたいのですが、どうしても1番目のシートしか開きません。どのようにしたら良いでしょうか。
やりたいことは、別のメニューページから、シートを指定して開きたいのです。たとえば、AAAA.xlsxで作成した、AAAA.htm の中の3番目のシートを表示したい。
メニューページのソースで、a href="AAAA.files/sheet003.htm" と3番目のシートを直接指定しても、1番目のシートが開いてしまいます。
もちろん、そこから、3番目のシートのタブをクリックすれば3番目が表示されますが、それを直接開きたいのです。
試しに、保存した際に出来る「AAAA.files」フォルダに入っている、3番目のシートのファイル「sheet003.htm」をダブルクリックし直接ブラウザで開いても、なぜか1番目のシート表示になってしまいます。
当然、sheet001.htm〜sheet003.htmのファイルは別々の内容です。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
(γ) 2017/11/08(水) 20:37
絶対パスでも、相対パスでも同様でした。
というよりも、AAA.filesフォルダのsheet003.htmを直接開いても1番目のシート表示になってしまうことが不思議です。
ファイルはsheet001.htm、sheet002.htm、sheet003.htmと別々にあっても、すべて1番目のシート(sheet001.htmに値する画面)が表示される仕様なのでしょうか?
sheet003.htmのソース内容を直接書き換えてでも、表示できる方法はないでしょうか?
(のの) 2017/11/08(水) 22:55
何か違うことをやってしまっているのでしょうね。
ありがとうございました。
(のの) 2017/11/09(木) 01:31
>sheet003.htmのソース内容を直接書き換えてでも、表示できる方法はないでしょうか?
こう云うのは、JavaScriptを知っている人なら直ぐ分かるんでしょうが、 私は知らないので、簡単な実験をしてみました。
htmファイルとして保存する時に、アクティブにしていたシートが表示されるようです。
なので、保存する際に、Sheet3をアクティブにしておけばいいと思います。
※Sheet1をアクティブにして保存した後なら 「Webページで保存したhtmファイル」(親の方)をメモ帳で開いてみると、ずーっと下の方に 「最初に表示されるタブの定義」が書かれていますので、 そこを直接書換えてから保存すればsheet3に行くようです。
ここをsheet003.htmに書き換える ↓ > <frame src="のの1.files/sheet001.htm" name="frSheet">
(半平太) 2017/11/09(木) 09:21
(γ) 2017/11/09(木) 20:47
ページ数が多いため、複数のExcelで作成しています。
なので、別にメニューのページを作り、リンクを貼ろうと考えています。
しかし同じエクセルのシートにしかハイパーリンクは貼れないため、フレームで分けたページにメニューフレームとメインのExcelから作成したページのフレームを入れようと考えました。
普通のhtmlファイルなら、メニューフレームからメインフレームに、<a href="XXX" target="〜で簡単に呼び出せるのですが、Excelから作ったhtmファイルは、上記の通りうまくいかない状態です。
最悪、半平太先生の言うように、htmの呼び出し先を書き換えたシート数分のhtmを用意して、それにリンク付けするしかないか、と考えてもいます。
もう少し、あれこれやってみます。
(のの) 2017/11/10(金) 01:00
>別にメニューのページを作り、リンクを貼ろうと考えています。
ブックとシートを指定してリンクしたい、ということなら 次のようにすれば、Excelファイルのままで対応可能です。
(1) メニューのシートには、
A列 B列 Book1.xlsm Sheet1 Book1.xlsm Sheet2 Book1.xlsm Sheet3
のように、 ・A列は、通常どおり、そのブックへのハイパーリンクを設定します。 (Hyperlink関数ではなく、"ハイパーリンクの挿入"から入るやつです) ・B列に、対象シート名を書きます。
(2) メニューシートのシートモジュールに、 以下のマクロを書きます。 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim sheetName As String sheetName = Target.Range.Offset(0, 1).Value If Target.Address <> "" Then Application.Goto Workbooks(Target.Address).Worksheets(sheetName).Range("A1") End If End Sub
(3) こうしておいて、リンクをクリックすれば、マクロが同時に動いて 指定したシートに飛びます。 もし、セル範囲の指定も必要なら、C列にセル範囲を書いておいて、 上記マクロに手を入れるだけです。 (γ) 2017/11/10(金) 04:04
ようやく、やりたいことが分かった気がします。
「Sheet001.htm」とか、「Sheet002.htm」とかを直接指定したら、 指定した通りのタブが選ばれて表示されるようにしたい」 と言うことですよね?
(初めから、そう書いてあったんでしょうが、理解できなかったです)
「Sheet001.htm」とか、「Sheet002.htm」とかをそれぞれメモ帳で開くと、 上から30行目辺りに下のような記述がありますので
<!-- function fnUpdateTabs()
上段のタグの「--」を消去して上書きすればいいです。
つまり ↓ <! function fnUpdateTabs()
(半平太) 2017/11/10(金) 10:24
説明がうまく出来ず遠回りして、皆様にご迷惑おかけしました。
ご尽力頂いた方々に感謝です。
ありがとうございました。
(のの) 2017/11/10(金) 23:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.