none
エクセルやパワポにハイパーリンク等を張って、offce365のAccess Webアプリの特定のレコードの内容を表示したい。 RRS feed

  • 質問

  • Office365のAccessデータベースのWebアプリの初心者です。よろしくお願いします。

    小さな事務所でOffice365のAccessデータベースのWebアプリをつかって、簡単な企業情報を入れておくデータベースを作りました。

    できれば、パワポやエクセルから、ワンクリックでその企業情報をWeb上でよいので、表示したいと考えています。

    AccessデータベースのWebアプリでは、テーブルをアップロードすると、自動的に、リストとデータシートというURLが作成されます。そのリストの中の特定のレコード(今回の場合は企業情報)を、表示するには、リストの検索windowで企業名を指定するとそのレコードが表示されます。

    今回行いたいのは、エクセルやパワーポイントで、ハイパーリンク(URL)などを指定して、特定の企業情報を表示させたいということです。単純に、リストのURLをハイパーリンクしても、最初のレコードの企業情報が表示され、特定の企業のレコードを表示することはできません。

    そこで、ハイパーリンクのURLに引数(企業名など)を指定して、検索windowsに引き渡して、所望の企業情報のレコードを表示できないだろうかという質問です。

    一般にURLでは、  ...?変数=引数 という形で、変数を指定できると思いますが、Office365のAccessデータベースのWebアプリのリストのURLに引数を渡したりできるのでしょうかという質問でもあります。

    もちろん、他に方法があれば、それでも構いません。

    お教えいただけると大変助かります。

    よろしくお願いします。


    2016年2月8日 2:04

回答

  • > 検索する前と、検索したあとのURLを見てみればよいと思いつき、やってみましたが、
    > Google検索とは違い、同じでした。

    そうすると、質問者さんがやりたいことを実現するには、例えばクエリ文字列を変えて企業別に「企業情報」が表示できるようなページを別に新たに作るか、PowerPoint 資料に URL を埋め込む企業専用のページを別に新たに作るぐらいしか方法はなさそうですね。

    普通の ASP.NET Web アプリなら何も問題なくそういうページは作れるはずですが、Office365 Access アプリでそれが可能なのかどうか自分は全く分かりません。

    お役に立てずすみませんが、他の方の回答をお待ちいただくか、別に新しいスレッドを立てて Office365 Access アプリでのそういうページの作り方を質問いただければと思います。

    • 回答としてマーク YoneJun 2016年2月10日 4:03
    2016年2月10日 2:14

すべての返信

  • 回答でなく質問ばかりですみません。

    > Office365のAccessデータベースのWebアプリをつかって、簡単な企業情報を入れておく
    > データベースを作りました。

    それは IIS 上で動く普通の ASP.NET Web Forms アプリで、データベースに Access を使っていて、クライアントは IE などのブラウザから Web アプリ経由でデーターベースにアクセスするという理解で良いのでしょうか?

    > パワポやエクセルから、ワンクリックでその企業情報をWeb上でよいので、表示したいと考えています。
    > AccessデータベースのWebアプリでは、テーブルをアップロードすると、自動的に、リストとデータシート
    > というURLが作成されます。

    上記で「Web上」というのはどういう意味ですか?

    Excel や PowerPoint 上で表示されたリンクをクリックすると IE などのブラウザが立ち上がって、ブラウザ上にリンクに張られた URL のリソースが表示されると思いますが、そういうことを言ってますか?

    でも、上記のリンクを作成するには、その前に「テーブルをアップロードすると、自動的に、リストとデータシートというURLが作成」という操作が必要なんですよね? それは Excel や PowerPoint ではできないと思いますが、どうしようと考えているのですか?


    #今回の質問とは関係ない話ですが ASP.NET Web アプリで Access を使うのは注意した方がよさそうです。ご参考まで。

    IIS と共に Microsoft Jet を使用する
    https://support.microsoft.com/ja-jp/kb/299973#/ja-jp/kb/299973

    2016年2月8日 4:21
  • 横からですが、Office365のAccessアプリとのことなので、データベースにAccessを使っているわけではないかと。

    http://mukkumuku.blogspot.jp/2013/03/office-365-access-app-1.html

    2016年2月8日 4:44
  • > Office365のAccessアプリとのことなので、データベースにAccessを使っているわけではないかと。

    紹介された記事にあるように「特殊な SharePoint用アプリ」ということなのでしょうか?

    SharePoint というと、自分は IIS + ASP.NET + SQL Server + 独自拡張というイメージしか持ってなかったです。SQL Server に代えて Access を使っているようなシステムなのでしょうか?

    普通に考えると、Excel や PowerPoint で ASP.NET Web アプリにアクセスして質問者さんのやりたいことができるとは思えないです。

    ただ、SharePoint にそれを可能にする独自拡張があるとすると、独自拡張の部分を全く知らない自分のレスはお門違いだったようですね。

    とにかく、質問者さんの返事を待ちたいと思います。

    2016年2月8日 8:16
  • SuferOnWww様、Takashi Shinohara様

    お返事ありがとうございます。

    私が初心者すぎて用語の使い方があいまいで申し訳ありません。

    やっていることは非常に単純で、office365のアプリの追加でAccessアプリを、新たに追加して作成しただけです。

    新しくできたAccessアプリをデスクトップ上のAccessで編集し、テーブルを作成しました。

    テーブルを作成すると自動的に、リストとデータシートというフォームが作成されます。

    できたデータベースをアプリの起動を行いますと、ブラウザ状でアプリが起動され、リスト表示とデータシート表示を選択できます。

    今回の場合、レコードには、顧客の企業名とその企業の情報を記録しています。

    リスト表示では、選択されたレコード(企業名)をクリックするか検索ウインドウで検索すると、対応するレコード(企業情報)の内容が表示されます。

    やりたいことは、エクセルに企業名リストを作っておいて、その企業名をクリックすると、上記のブラウザ上で、対応する企業情報が表示されるようにすることです。単純にエクセルにブラウザ上で起動されているアプリのリスト表示のURLを、エクセルの企業名にハイパーリンクするだけだと、クリックで最初のレコード(企業情報)しか表示できません。

    よろしくお願いします。

    2016年2月8日 11:06
  • PowerPointやExcelからという条件で、かつマクロ使ってもいいならIEで表示させて、検索Boxに値を入れて検索させるとか。

    Option Explicit
    
    Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
    
    Public Sub Search(ByVal url As String, ByVal filterValue As String)
        Dim ie As SHDocVw.InternetExplorer
        Dim doc As MSHTML.HTMLDocument
        Dim filterTextBox As MSHTML.HTMLInputElement
        Dim accSearch As MSHTML.HTMLInputElement
        Dim accFiltered As MSHTML.HTMLInputElement
        Dim elem As MSHTML.HTMLInputElement
        Dim obj As Object
        For Each obj In CreateObject("Shell.Application").Windows
            If TypeName(obj.document) = "HTMLDocument" Then
                Set ie = obj
                Exit For
            End If
        Next
        If (ie Is Nothing) Then
            Set ie = CreateObject("InternetExplorer.Application")
        End If
        ie.Visible = True
        If (ie.LocationURL <> url) Then
            ie.navigate url
        End If
        Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE
            'DoEvents
            Sleep 100
        Loop
        
        Set filterTextBox = Nothing
    
        Dim wait As Integer
        wait = 50 '5秒くらい
        Do While wait > 0
            Set accSearch = Nothing
            Set doc = ie.document
            
            For Each elem In doc.getElementsByTagName("input")
                'Debug.Print elem.className & vbTab & elem.id
                If (Left(elem.id, 12) = "FilterEntry_") Then '検索入力部を探す
                    Set filterTextBox = elem
                End If
                If (elem.className = "acc-search") Then '検索入力部の虫眼鏡を探す
                    Set accSearch = elem
                End If
                If (elem.className = "acc-filtered") Then '検索部の×マークがあったら虫眼鏡状態にする
                    Set accFiltered = elem
                    accFiltered.Click
                    wait = wait + 50
                End If
            Next
            If (filterTextBox Is Nothing Or accSearch Is Nothing) Then
                Sleep 100
                wait = wait - 1
                'DoEvents
            Else
                Exit Do
            End If
        Loop
        
        If (filterTextBox Is Nothing Or accSearch Is Nothing) Then
            MsgBox "検索失敗"
            Exit Sub
        End If
        
        filterTextBox.Value = filterValue '検索文字列セット
        accSearch.Click '検索
    End Sub
    これがだめなら、iframe内でページ表示させるページを用意して、javascriptで検索操作させるとか

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2016年2月8日 11:15
  • 一番最初の私のレスにある質問(?マークがついてます)に答えていただけませんか? 分からないなら分からないという回答でも結構ですのでよろしくお願いします。


    #SharePoint の話のようですが、そうだとすると IIS のフォーラムでの質問は適切ではなかったかもしれませんね。(必要があればフォーラムの移動は管理者の方がやってくれますので、そのままここで続けてください)

    2016年2月9日 1:32
  • SurFerOnWww様

    >それは IIS 上で動く普通の ASP.NET Web Forms アプリで、データベースに Access を使っていて、クライアントは IE など>のブラウザから Web アプリ経由でデーターベースにアクセスするという理解で良いのでしょうか?

    IISとASP.NET Web Formsという用語をきちんと理解していませんが、SharePointと関係ないのdしたら、投降した芭蕉が違ったのかもしれません。

    >> パワポやエクセルから、ワンクリックでその企業情報をWeb上でよいので、表示したいと考えています。
    >> AccessデータベースのWebアプリでは、テーブルをアップロードすると、自動的に、リストとデータシート
    >> というURLが作成されます。

    >上記で「Web上」というのはどういう意味ですか?

    >Excel や PowerPoint 上で表示されたリンクをクリックすると IE などのブラウザが立ち上がって、ブラウザ上にリンクに張られた URL のリソースが表示されると思いますが、そういうことを言ってますか?

    はい、そのとおりです。

    >でも、上記のリンクを作成するには、その前に「テーブルをアップロードすると、自動的に、リストとデータシートというURLが作成」という操作が必要なんですよね? それは Excel や PowerPoint ではできないと思いますが、どうしようと考えているのですか?

    リストとデーターシートは、最初にデータベース作成するときにテーブルを入力すると、できるものです。リスト画面は、初期状態では、検索windowが表示されており、そこに企業名を入力すると、対応するレコード(データベース作成時に入力した情報)が、その画面に表示されます。

    当たり前ですが、リストのURLを、Excel上にコピペして、それをクリックしても、リストの初期画面(検索window)が表示され、対応するk企業情報は表示されません。

    そこで、Google検索を実行した場合と同じように、(例えば、test と入力すると https://www.google.co.jp/search?q=test*****)というように、optionの?を使ってリストの初期画面の検索windowsに企業名などを入れられないかと思いました。ただ、それが可能なのかどうかもわかっていません。

    よろしくお願いします。


    • 編集済み YoneJun 2016年2月9日 5:01
    2016年2月9日 4:53
  • gekka様

    コードまで書いていただきありがとうございます。

    ただ、私の知識では、大分ハードルが高く、理解できません。

    最後の手段として、考えさせていただきます。

    申し訳ありません。

    2016年2月9日 4:58
  • 返答ありがとうございます。

    Office365 Access アプリについて自分でも調べてみましたが、以下の記事の図1に示されるアーキテクチャーのようですね。

    Access の新機能
    https://msdn.microsoft.com/ja-jp/library/office/fp179914.aspx

    簡単に言うと Office365 に含まれる SharePoint(即ち IIS + ASP.NET + SQL Server + 独自拡張・・・図1で SharePoint WFE より右側)の Web アプリで、Access は Web アプリ構築のためのツールと理解しました。(違っていたら指摘ください)

    そして、

    > リストとデーターシートは、最初にデータベース作成するときにテーブルを入力すると、できるものです。

    ここまでは Access で作業して、その次、

    > リスト画面は、初期状態では、検索windowが表示されており、そこに企業名を入力すると、対応するレコー
    > ド(データベース作成時に入力した情報)が、その画面に表示されます。

    は上の記事の図1のようにブラウザでアクセスして作業するのが基本で、ブラウザを使えば質問者さんがやりたいことは問題なく実現できていると理解しています。

    ただ、Office365 Access アプリには触ったこともない自分にはイメージがわかず、済みませんが、その先の質問者さんが Excel を使ってやりたいことが理解できないです。

    > リストのURLを、Excel上にコピペして、それをクリックしても、リストの初期画面(検索window)が
    > 表示され、対応するk企業情報は表示されません。

    クリックすればブラウザが立ち上がって、それにリストの初期画面が表示されるのであれば、その後はブラウザで作業すればいいのではと思ってしまいます。

    Excel でブラウザと同じことをするのがやりたいことではないですよね?

    想像ですが、ブラウザを使った場合、リストの初期画面(検索window)に企業名を入力してボタンなどをクリックすると、サーバーに企業名が送信され、サーバー側で SQL Server DB から企業名で検索し、検索結果(企業情報)をブラウザに応答として返し、ブラウザはそれを受けて表示するという ASP.NET Web アプリでよくあるパターンになっているのではないかと思います。

    そうだとすると、それを Excel で行うのは無理です。(不可能とまでは言いませんが)

    2016年2月9日 5:44
  • 【追伸】

    質問者さんのやりたいことを思い違いしていたかも知れません。

    やりたいことは、例えば(あくまで例えばです)、ある特定の企業一社のプレゼンを行うための PowerPoint 資料を作っていて、その資料の中のハイパーリンクをクリックした時にブラウザが立ち上がって Office365 Access アプリにアクセスし、ブラウザの画面にその企業の「企業情報」が表示されるというようなことでしょうか?(Excel や PowerPoint を使って、ブラウザで行うのと同様に、複数の会社の企業情報を見ていくというようなことではなくて)

    だから、Office365 Access アプリでも、

    > 一般にURLでは、  ...?変数=引数 という形で、変数を指定できる

    ということであれば、その URL 文字列を PowerPoint に埋め込めば上に書いたやりたいことができるのでは・・・と考えたのでしょうか?

    「?変数=引数」というのはクエリ文字列というのですが、それを使って企業名を渡して企業情報を表示するというのはよくあるやり方ながら、必ずしもクエリ文字列を使うというわけではないです。

    質問者さんの Office365 Access アプリがどのように作られているかが分からないことには、上に書いたことが実現できるか分かりませんが、どのように作られているかは把握されているでしょうか?


    • 編集済み SurferOnWww 2016年2月9日 12:13 一部訂正
    2016年2月9日 9:40
  • こちらでも、Accessアプリを作って、パラメーターを渡すクエリを作ってみたりといろいろ試してみたのですが、うまくいきませんでした。

    海外のフォーラムでは、Where句が指定できると書いてあったのですが、こちらも駄目そうでした。
    (ちょっと古い情報なので今とはいろいろ違うかもしれませんが)

    https://social.msdn.microsoft.com/Forums/en-US/85989c9f-f4f8-4b91-8b35-4e30cad32a6b/pass-a-query-parameter-in-the-url-string-to-a-access-services-web-formquery?forum=accessdev

    お役に立てずすみません。

    2016年2月9日 14:34
  • SurferOnWww様

    >ある特定の企業一社のプレゼンを行うための PowerPoint 資料を作っていて、その資料の中のハイパーリンクをクリックした時にブラウザが立ち上がって Office365 Access アプリにアクセスし、ブラウザの画面にその企業の「企業情報」が表示されるというようなことでしょうか?

    はい、そのとおりです。

    >ということであれば、その URL 文字列を PowerPoint に埋め込めば上に書いたやりたいことができるのでは・・・と考えたのでしょうか?

    はい、そのとおりです。

    >「?変数=引数」というのはクエリ文字列というのですが、それを使って企業名を渡して企業情報を表示するというのはよくあるやり方ながら、必ずしもクエリ文字列を使うというわけではないです。

    やはり、そうなのですね。

    >質問者さんの Office365 Access アプリがどのように作られているかが分からないことには、上に書いたことが実現できるか分かりませんが、どのように作られているかは把握されているでしょうか?

    テーブルは自分で作ったのですが、フォームなども、ほとんど自動的にできるので、HTMLなどは全く書いておらず、わかっておりません。やはり、私の知識レベルでは難しいようですね。

    2016年2月9日 14:34
  • SuferOnWww様

    >「?変数=引数」というのはクエリ文字列というのですが、それを使って企業名を渡して企業情報を表示するというのはよくあるやり方ながら、必ずしもクエリ文字列を使うというわけではないです。

    を確認するには、検索する前と、検索したあとのURLを見てみればよいと思いつき、やってみましたが、Google検索とは違い、同じでした。少なくともこの方法ではだめなことがはっきりしました。

    ありがとうございました。

    2016年2月10日 0:34
  • > 検索する前と、検索したあとのURLを見てみればよいと思いつき、やってみましたが、
    > Google検索とは違い、同じでした。

    そうすると、質問者さんがやりたいことを実現するには、例えばクエリ文字列を変えて企業別に「企業情報」が表示できるようなページを別に新たに作るか、PowerPoint 資料に URL を埋め込む企業専用のページを別に新たに作るぐらいしか方法はなさそうですね。

    普通の ASP.NET Web アプリなら何も問題なくそういうページは作れるはずですが、Office365 Access アプリでそれが可能なのかどうか自分は全く分かりません。

    お役に立てずすみませんが、他の方の回答をお待ちいただくか、別に新しいスレッドを立てて Office365 Access アプリでのそういうページの作り方を質問いただければと思います。

    • 回答としてマーク YoneJun 2016年2月10日 4:03
    2016年2月10日 2:14
  • SuferOnWww様

    いろいろとアドバイスいただいてありがとうございました。

    別の方法を少し考えています。

    お世話になりました。

    2016年2月10日 4:03