2016/02/09

[Excel] テーブルと Excel VBA

ワークシート関数を使う時、これまでの「範囲」の変化に対応することができるテーブル機能は Excel 2007 以降の最大の機能拡張、、、なんてことも言われています。

過去にこのブログでもいくつかテーブル機能について紹介しました。

テーブルのすすめシリーズ
http://road2cloudoffice.blogspot.jp/2014/10/vlookup.html
http://road2cloudoffice.blogspot.jp/2014/10/blog-post.html
http://road2cloudoffice.blogspot.jp/2014/10/blog-post_31.html
http://road2cloudoffice.blogspot.jp/2014/11/blog-post.html
http://road2cloudoffice.blogspot.jp/2014/11/blog-post_7.html
http://road2cloudoffice.blogspot.jp/2014/11/office-365-sharepoint.html

機能、関数で多くのメリットを提供するテーブルですが、Excel VBA の世界ではどうでしょう?

まず、表としての範囲が、テーブルというオブジェクト(ListObject オブジェクト)になるため、最終行+空白問題(上から End モードで下に行ったとき、空白があったら止まる)、もしくは最終行+ごみ問題(行の一番下から上に上がっても、途中にごみがあればそこで止まる)は基本的になくなります。

というのも、テーブルではテーブルの行数は End モードを使わずとも、テーブルのプロパティで確認することができるからです。テーブルの行数は ListRows.Count でわかります。

ここで標準的なテーブルを実践ワークシート協会の田中亨が推奨する「黄金テンプレート」で処理するコードを見てみると以下のようになります。

サンプルテーブル
サンプルテーブル
テーブルでも表の処理同様の VBA コードを書くことができます。
名前が田中だったら、個数X単価を合計に代入する、といった処理だと、田中亨の黄金テンプレートで考えると、

範囲はどこか? 

行は 3 から 12。もちろん、最終行の 12 が可変だとしても、End モードで特定します。

条件はなにか?

条件は、名前のセルが "田中" だったら、ですね。

処理は何か?

合計セルに個数X単価を代入する、です。

そうすると VBA のコードは以下のようになりますね。

Sub sample1()
    Dim i As Long
    For i = 3 To Range("B2").End(xlDown).Row
        If Cells(i, 2) = "田中" Then
            Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
        End If
    Next i
End Sub

これをテーブルのオブジェクトを使って、テーブルらしく書いてみると、上記の表形式とは大きく違う点があります。それは「列番号」であり、「行番号」の考え方になります。

テーブル オブジェクトの世界では、ワークシートの「A列」や「D列」は意味がなく、あくまでテーブル内での列順序の番号です。上の例でいえば、名前の列は、B列で列番号2ではなく、あくまで名前フィールドであり、フィールドの番号はテーブル内で「1」になります。

さらに、テーブルというオブジェクトは「ListRowsコレクション」からデータ部分が構成されています。テーブルの行の各1行は ListRow オブジェクトとして扱うことができます。このことより、「何行あるか、わからないけど、For Each を使えば、そのテーブルのすべての行(ListRowsコレクション)を扱うことができる」として処理可能になります。

そのサンプル コードが以下です。

Sub sample2()
    ''1 名前, 2 個数, 3 単価, 4 合計 ←テーブル内での順序
    Dim tb As ListObject
    Set tb = ActiveSheet.ListObjects("TestTable")  ''テーブル名がTestTableだった場合
    Dim R As ListRow
    For Each R In tb.ListRows
        If R.Range(1) = "田中" Then
            R.Range(4) = R.Range(2) * R.Range(3)
        End If
    Next R
End Sub

たぶん、R.Range(1) という書き方ってあまり使っていなかったと思います。
この R.Range(1) という書き方は、以下の書き方と同じものです。

R.Range.Item(1)
R.Range.Cells(1)

おもしろいですね。
VBAセミナースタンダードで田中亨がよく「上級者は2次元配列は使いません。だって、Excel VBA にはワークシートがあるんですから!」と言いますが、上記の表記はその流れです。(正確にはこれは一次元配列ですけど)

For Each でとってくる R は一次元配列(的なもの)です。(要素の型が違うので配列とは言えませんが、便宜上お許しを)この1次元配列は1列または一行で複数セルを選択した「セル範囲」のイメージです。今はテーブルなので、以下のような横方向の1行のセル範囲です。

[[名前] [個数] [単価] [合計] ]

この順序です。ですから、名前は (1) で、個数が (2)、、、となるわけです。
その表記方法が R.Range(1) だったり、R.Range.Item(1) だったり、R.Range.Cells(1) になるわけです。セル範囲の Range オブジェクトを配列のイメージとして扱っているんですね。

繰り返しますが、ポイントは A列、B列といったワークシート上の絶対的な番地では無い!ということです。

上記の例はサンプルなので処理や条件がシンプルなものですが、これが複雑になってくると、Cells(行, 列) でセルを指定するやり方と、R.Range(要素) で処理すべきセルを指定する方法のどちらがいいかはだんだん変わってきます。

その意味から、変数を使って、テーブルの列順序を定義すると、さらに可読性が高まります。(IMEオン・オフの操作があるので日本語変数がいいわけではありませんが、サンプルとして定義します)

Sub sample3()
    Dim tb As ListObject
    Set tb = ActiveSheet.ListObjects("TestTable")
    Dim 名前 As Long, 個数 As Long, 単価 As Long, 合計 As Long
    名前 = tb.ListColumns("名前").Index
    個数 = tb.ListColumns("個数").Index
    単価 = tb.ListColumns("単価").Index
    合計 = tb.ListColumns("合計").Index
    
    Dim R As ListRow
    For Each R In tb.ListRows
        If R.Range(名前) = "田中" Then
            R.Range(合計) = R.Range(個数) * R.Range(単価)
        End If
    Next R
End Sub

たった5~6行の処理のための変数宣言と変数設定で7行は、、、と思いますが、通常はもっと条件や処理が複雑になるので、これだけで「行数が多い、無駄だ」と判断するのは早計だと思います。 For Each から Next R までの処理の「可読性」を見てください。実にわかりやすい表記になっています。

たぶん、テーブル ListObject オブジェクトを VBA で扱うのは、このオブジェクト変数を使ってテーブルを設定し、テーブル内のフィールドの順序を変数として設定していくのが一番良い方法だと思います。

ここでテーブル機能で重要な「構造化参照」が出てきてませんよね?

いろいろ試した結果、この「構造化参照」は VBA を編集するツールである VBE で実装されていないため、インテリセンスのような形で、文字通りの「構造化参照」という機能は実装されていないようです。テーブル名を指定すれば、そのテーブルにあるフィールドが表示される、、、ような機能は VBE には無い、ということです。

では、VBE に期待しないで表記したらどうなるでしょう?

ここでも Excel の Range オブジェクトの実装、、、「すげー」となるわけです(笑

VBE では構造化参照のメリット享受できないので使う理由がないのですが、無理やりやると以下のようなコードを書くことができます。

Sub sample4()
    ''1 名前, 2 個数, 3 単価, 4 合計 ←テーブル内での順序
    Dim R As Range
    For Each R In Range("TestTable").Rows
        If R.Cells(1) = "田中" Then
            R.Cells(4) = R.Cells(2) * R.Cells(3)
        End If
    Next R
End Sub

テーブルを ListObject として宣言しない分だけ行数が短いですが、R.Cells(1) などを番号ではなくフィールド名で、、、となると、宣言や設定のためそれなりに行数が増えます。さらに、構造化参照が VBE でサポートされていないために、複雑、長くなればなるほどめんどうなことが発生してきます。(*1 最後に追記してます)

以上のことより、通常、テーブルを VBA で扱うのであれば、テーブルは ListRow のかたまりであり、テーブルを ListRows コレクションとして処理するのが王道でしょう。
そのときの For Each として1つ1つ処理するのは ListRow オブジェクトであり、その ListRow オブジェクトの扱いは「一次元j配列」的になる、と言えるでしょうね。

今後、データ接続でテーブル形式でデータを取り込むことが多くなります。そのときは、上記の考え方でテーブルをマクロで扱うことも多くなると思います。

(*1) 構造化参照が少なすぎるとおもったので追記。
構造化参照方式で以下のような表記が可能です。

Range("テーブル1[名前]")

上記でテーブル1の名前フィールドのデータ部分の範囲を指し示すことができます。
しかし、この Range(構造化参照) は、あくまで Range による範囲(つまり、named range) のため、ListObject との関連がありません。

そのため、Range("テーブル[名前]").Column は、ワークシート上の列番号を返します。


[PR] VBAセミナーを受けた後は、これさえあれば何もいらない。

2016/01/12

曜日と表示形式とTEXT関数とFormat関数

実践ワークシート協会主催の Excel VBA セミナーでは、講師の田中先生が毎回必ず聞く質問がいくつかありますが、そのうちの一つが「曜日を表す表示形式」に関連する内容です。

Excel VBA セミナー ベーシック
http://officetanaka.net/seminar/seminar1.htm

なぜ VBA セミナーで表示形式?と思われるかもしれませんが、VBA プログラミングにおいて、日付=シリアル値から曜日を知るためには、曜日を返す専用の関数はなく、表示形式を利用して曜日を判定しなくてはならないからです。その関数が Format 関数です。

Format関数 (Excel VBA の関数)
http://officetanaka.net/excel/vba/function/Format.htm

この Format 関数はワークシート関数の TEXT 関数とほぼ同じ動きをします。

TEXT関数 (Excel ワークシート関数)
http://officetanaka.net/excel/function/function/text.htm

そして、このFormat関数やTEXT関数を使う上で知っておかなければならない知識が「書式記号」です。

曜日の鉄板ネタとして、書式記号の a を使って、aaa や aaaa で日本語での曜日をシリアル値から表示できます。ddd や dddd を使えば英語での曜日をシリアル値から調べることができます。

曜日を表示する
http://officetanaka.net/excel/function/tips/tips38.htm

曜日の表示で WEEKDAY関数と CHOOSE関数を使った数式を見ることがありますが、TEXT関数が一番簡単だと思います。ただし、aaa といった書式記号を覚えていなくてはなりません。

この書式記号、書式設定のユーザー定義書式でも使います。
セルを選択して Ctrl+1 でセルの書式設定ダイアログボックスが表示され、表示形式で書式記号を使って、セルに入力された表示方法を制御します。



セル内に入力されたデータがシリアル値になっていれば、このように曜日を調べることが可能です。シリアル値はExcelが内部で持っている万年カレンダーのようなもので、曜日のみならず、うるう年も管理しているので、うるう年の計算をしてチェックするような必要はありません。

Office TANAKA サイトも上記のURLページ以外にも多くの表示形式の記事があります。それだけ、表示形式や書式記号は深い、と言えるでしょう。

さて、冒頭に田中先生が表示形式についてかならず質問する、と書きましたが、この表示形式・書式記号の aaa を知っている人が年々「減って」きています。Excel 鉄板ネタの一つなのですが、本当にこれを知っている人が減っているのです。

あらためて、きっちりと伝えるべき技術は定番として伝え続けなければならないんだ、と感じる1件です。

ちなみに Power Query で日付から曜日を判定するには、WEEKDAY関数と似たような動きをする Date.DayOfWeek がヘルプの数式カテゴリから見つかりますが、ワークシート関数同様に TEXT 関数に相当するメソッドを使ったほうがよさそうです。Date.ToText で "ddd" で書式設定して日本語の曜日を表示させることが可能です。



Date.ToText のヘルプ
(Power Query が機械翻訳で電源のクエリになっているのはご愛嬌)

なお、この曜日については SharePoint のリストでも同様の動きと扱いをすることができます。これもチェックですね。

ExcelユーザーのためのSharePointリスト「集計値」列

2015/12/08

Power BI と Excel

この投稿は Office 365 Advent Calendar 2015 Dec 8th にもなります。

Power Query や Power Pivot といった Excel アドインが提供され、Power BI というのは Excel が中心になっているような気がしていましたが、最近、どうもその雲行きが怪しいな、と思い始めています。

Power BI のおさらいを含めながら、雲行きが怪しいところを今回はご紹介したいと思います。

Power BI Excel アドインと Power BI Desktop、Power BI サイト の関係

Power BI まわりの Power なんちゃら、、、については本ブログの以下の投稿でまとめています。

Power BI Desktop と Excel の Power BI アドイン

実際のところ、Power BI Desktop が目指しているところは、脱 Excel だと言われても仕方ないでしょうね。
Excel を使わないで、Power BI Excel アドインで実現していたことを Power BI Desktop のみでやろうとしています。

Power BI Excel アドイン

Power BI Desktop

Power Query データ
Power Pivot リレーションシップ
Power View レポート

「慣れ」の問題から、私自身、どうしても Power BI Desktop でデータ分析するよりも、Excel でアドインや Pivot を使ってデータ分析するほうが楽なのですが、やはり「慣れ」の問題なので、慣れてしまえば、「やれることは一緒」となるでしょう。

また、Excel にデータを格納していく、追加していく、そして、その Excel ブックをデータソースとして使う、という状況であれば、Excel 2016 で追加された「発行」機能を使って、OneDrive にブックを保存して、Power BI で利用する、という使い方はあります。

Pub2PBI 

SharePoint Online や SQL Azure にデータ接続をし、外部データ接続からデータ分析をする、そしてそれを共有・公開するのであれば、Excel を使う必要性はなく、Power BI Desktop のみで「レポート」まで作ってしまったほうが、分析作業の一貫性があります。

というのも、Power BI の「レポート」に対応する Power BI Excel アドインの「Power View」の扱いが、当初より明らかにトーンダウンしているように見え、改善されるように思えないからです。

・ Excel 2016 で Power View がリボンからはずされた

手作業で追加すれば、Power View レポート コマンドの追加は可能ですが、基本は「はずれた」ということです。
この件については、以下にてマイクロソフトから紹介されています。

Windows 版の Excel 2016 で Power View を有効にする (support.office.com)

・ Power View レポートは Silverlight が標準

よって、Windows 10 で Power BI サイトを開くと、以下のメッセージとなります。残念ながら Edge での Silverlight のサポートはありません。

PBISilverlight

ということは、タブレットなどで Power BI の結果を表示して、、、といったワークスタイルの「本質」ではない、といえますよね。。。(Windows 10 でも IE + Silverlight であれば問題なく表示されます)

・ HTML版レポートはいまだまともに動いていない

Silverlight レポートの右下に以下のようなアイコンがあるのですが、いままでこれをクリックして同じようなレポート見たことはまだありません。

PBIHTML5

この状況から、どうも Excel アドインへの力の入れ具合は Power BI Desktop に比べると弱いな、、、と思わざるを得ません。

今後はどうなる?

分析は「慣れ」といいましたが、ピボットテーブルのようなツールの使い勝手はやはり Excel のほうが勝っています。

レポートとして Excel で Power View レポートを作成し、IE + Silverlight で Power BI サイトで「ダッシュボード」まで作ってしまえば、 Windows 10 Edge でも表示が可能です。
逆にこの回避策があるため、Power View レポートの HTML5化が進まないのかもしれません。

過渡期ということで、ちょっと中途半端な実装であることは否めません。ですが、スマートフォンの Power BI アプリでキーとなるデータをすぐに確認できたり、タブレットで対話的にレポートを確認できることは、自分たちのビジネスでも欲しい機能です。

細かい分析は今まで通り Excel で行い、共有するデータが決まれば、それを Power BI に発行して、IE+Silverlight でダッシュボードを作成して、グループ共有する、というのが流れかと思います。

あと、これは個人的な感想ですが、Power BI を使い、データモデルを Excel ブックに追加していくと、それほど「ビックデータ」でなくてもメモリ不足に陥ることがあるようです。この場合、32ビット版の Excel ではなく、64ビット版の Excel を使うことで回避できることが多いです。64ビット版の Excel の必要性はこれまであまり感じていませんでしたが、データモデルを使うパターンでは 64ビット版 Excel の存在価値が高くなりそうですね。

データモデルについては本ブログの以下の投稿を参照ください。

リレーションシップとデータモデル

2015/11/22

Excel でゼロ パディングしたい – 0で埋める

一般にプログラミングの世界などで、足りない桁数分「0」を追加して長さを合わせることを「ゼロ パディング」と言います。
Excel では 0001 が 1 になる、といった「ゼロがなくなる」ことがよく話題になります。これをゼロ サプレスといいますが、あまりこちらの言葉は聞きませんね。
今回は Excel でのゼロ パディングの3つのポイントをご紹介します。

文字列設定で反映

0001 を 1 ではなく 0001 としてセルで扱うとなると、いくつかの方法があり、そのひとつは、入力されたデータを文字列として扱う方法です。
そのため、セルの書式を「文字列」に設定することが「第1のポイント」です。
  • 設定したいセル・範囲を選択する
  • Ctrl+1 で「セルの書式設定」ダイアログの「表示形式」で「文字列」を選択して [OK]
これで、 0001 と入力しても、1 になることはありません。シングルコーテーションを 0001 の前に入力する方法も紹介されることが多いのですが、セル書式設定本来の機能からすると、入力するセルの位置・範囲が決まっているのであれば、セルの書式設定による文字列の設定が基本です。(シングルコーテーションによる文字列入力については Office TANAKA のこちらの記事を参照ください。)

表示形式で設定

ですが、「ゼロ パディング」という意味は、桁数が決まっていて、足りない分だけ 0 を入れて長さを合わせることです。ですから、例えば 6 桁でゼロ パディングしてほしい場合は、1 と入力したら 000001 であり、342 と入力したら 000342 になってほしいこともあるわけです。
この場合は数値を入力しても「見た目を変えてあげる」と考えます。表示形式で「円」や「人」といった単位を加えても数値として扱うことができますが、これと同じ考え方です。「ユーザー定義」の「種類(T)」で「000000」と設定します。すると、この表示形式が設定されたセルに数値を入力すると、指定した6桁に足りない分を 0 で埋めてくれます。この表示形式を使うのが「第2のポイント」です。
  • 設定したいセル・範囲を選択する
  • Ctrl+1 で「セルの書式設定」ダイアログの「表示形式」で「ユーザー定義」を選択する
  • 「種類」でゼロ パディングしたい桁数の 0 を入れる
ZeroPad
文字列設定と違い、このセルに入力されているデータは「数値」となります。見た目は 0001 などですが、四則演算可能です。

TEXT関数でパディング

数値を数値として扱うのであれば、わざわざゼロ パディングする必要はないでしょう。たとえば社員番号のような E00001 のようなデータを作りたい場合、E と ゼロ パディングした数値をつなげるパターンになりますよね。
上述の表示形式は計算可能ですから、連番や何らかの演算で数値の計算が可能で、見た目はゼロ パディングすることが可能ですが、文字列 “E” などと組み合わせると、表示形式で設定されているゼロは消えてしまいます。
ZeroPad2
これを避けるためには TEXT関数を使ってゼロ パディングされた表示形式を使って数値を文字列にします。これが「第3のポイント」です。
=TEXT(セル、”00000”)
ZeroPad3
ちなみに、TEXT関数や表示形式で使った ”00000” の 0 は数字のゼロではなく、書式記号としての 0 です。
https://support.microsoft.com/ja-jp/kb/883199
なので “99999” としたところで 9 がパディングされることはありません。
また、小数点以下のゼロ パディングもあります。123.000 のようなものです。書式設定の [数値] で [小数点以下の桁数] を指定しますが、書式記号で書けば、ユーザー定義書式で小数点以下3桁は #.000 もしくは .000 となります。
ちなみに、#,##0 と #,### では同じ三桁カンマでも、0 の場合の表示が変わります。前者は 0 を表示、後者は何も表示しない、となります。

Format 関数を使ったゼロ パディング

VBA では TEXT関数同様に Format 関数を使ってゼロ パディングをすることができます。ゼロ パディングされた文字列をMsgBoxを使って表示可能です。
ZeroPad4 
ゼロ パディングはできるのですが、結果的に、このゼロ パディングされた「文字列」の “0001” をワークシートのセルに入力した時点で、0001 –> 1 になります。
よって、事前にセルの書式設定をしておくか、VBA からセルの書式設定が必要になります。
セルを文字列の書式に設定してゼロ パディングするには
Dim buf as Long
buf = 1
Range(“A1”).NumberFormatLocal = “@”
Range(“A1”).Value = Format(buf,”00000”)
数値のまま、表示形式でゼロ パディングのユーザー定義書式にするには
Dim buf as Long
buf = 1
Range(“A1”).NumberFormatLocal = “00000”
Range(“A1”).Value = buf
になります。

Power Query でゼロ パディング

ZeroPad5
パディングをする関数は Text.PadStart です。
Text.PadStart
https://msdn.microsoft.com/en-us/library/mt260573.aspx
そのため、数値を文字列に変更します。Number.ToText を使って、数値を文字列にして、6桁、”0” から始まる、とします。
似たような関数として Text.PadEnd もあります。これは、足りない桁の後ろを指定した文字で埋めます。
Text.PadEnd
https://msdn.microsoft.com/en-us/library/mt260477.aspx

[PR] VBAセミナーを受けた後は、これさえあれば何もいらない。

2015/11/09

Excel 2016 と Power Query (取得と変換)

Excel 2016 の 「取得と変換」 は Power Query

このブログで紹介してきた Power BI Excel アドインの Power Query ですが、Excel 2016 の「データ」タブの「取得と変換」グループにあるリボンコマンドは、Excel 2013まで Power Query アドインとして提供されていたものが Excel 2016 の標準機能になったものです。

Power Query や Power Pivot などの機能は「Power BI」ブランドの仲間としてマイクロソフトから様々な形で提供されていますが、Excel 2016 のトピックとしては、これまでアドインだったり、Homeなどのエディションで利用不可能だった Power Query が標準機能の「取得と変換」となって Excel に組み込まれたことがあげられます。

取得と変換グループ

このため、似たような外部からのデータの取り込み機能が「データ」タブのすぐ近くにあったり、「Power Pivot」の機能でもデータの取り込み機能があったり、ちょっと複雑な状況になりました。

これまでのマイクロソフトの Excel の機能拡張から考えると、どれかの機能がばっさり「切り捨てられる」ことはないと考えられますが、その中でも機能拡張の優先順位がつけられ、あるものは引き続き機能拡張され、あるものは機能拡張されずに機能として残りながらもそのうちリボンから消え、ユーザーの目の届かないところに位置づけられていく、ということが考えられます。

その意味で、外部とのデータ連携、外部からのデータ取得といったエリアでは [データ] タブにある [取得と変換] のリボンコマンドが今後の主流になる可能性が高いことが予想されます。多種多様なデータソースにつながることももちろん重要ですが、この「取得と変換」は他にはない特徴があります。それはクラウド (Office 365) を中心とした「データの取得方法(クエリ)の共有」と「取得したデータの公開」が可能なことです。

 

外部データの取り込みの置き換えではない「取得と変換」

そして、上述したクエリやデータの共有や公開という「拡張機能」も重要ですが、「基本機能」そのものも強化されています。共有などを考えずに、ただ単に Excel の外にあるデータをワークシートに取り込む、という機能を見ても「取得と変換」(Power Query)は強力です。

1) 閉じているブックからデータを取得したい

他のブックのデータを Excel で開かずに取り込むは「鉄板ネタ」でしょう。
これができるからといって、Excel 4.0 のマクロを今の時代に使うのは辞めにしませんか。またはそのような情報をありがたく(使ってもいないのに)紹介するのも、もうどうかと思います。

取得と変換 (Power Query)の強力な機能のひとつは「他で保管されている Excel ブックからデータを取得」することができる、です。

取得と変換ーブックから

それも単純にすべてのデータをワークシートに取り込むのではなく、必要なデータを絞り込んで、変換(文字→数値、シリアル値・日付の表示形式の設定など)し、ワークシートに取り込むことができます。上級者であればワークシートにデータを取り込まず、データモデル・データ接続のみで外部の Excel ブックのデータをピボットテーブルのソースとして利用することもできます。

ネットワーク上にある Excel ブックを対象にできます。\\サーバー名\共有フォルダ\ で表現されるファイルサーバー上の Excel ブックはもちろん、Office 365 の OneDrive for Business や、SharePoint ドキュメント ライブラリー内の Excel ブックも利用可能です。

取得と変換(Power Query)によるデータ取得は「クエリ」をベースにしているため、「接続(クエリ)の更新」をすることで、最新のデータに更新されます。
そのため、一度取得する場所や条件、変換の設定をしてしまえば、あとは「更新」をするだけで最新のデータを利用することができます。

この例は以下ですでに紹介しています。

2015/7/7 Power Query から https 経由で SharePoint の Excel ブックを開く


2) 指定したフォルダー内のすべてのファイルからデータを取り込みたい

「ファイルから」のサブメニューの「フォルダーから」は、フォルダにどんなファイルがあるか、を調べる機能だけではありません。

取得と変換ーフォルダから

クエリエディタ-フォルダから1
フォルダだけを指定した場合のクエリ結果

これも Excel VBA での「鉄板ネタ」になりますが、指定したフォルダー内にある CSV ファイルや Excel ブックを「すべて」読み込む機能をプログラミングなしに実現することができます。
この機能が強力なのは、一度設定してしまえば、ファイルが増えても OK、サブフォルダーが増えても OK という点です。もちろん、基本的にすべてのファイルを参照することができるので、そこから「ある名前の規則で絞り込む」ということもオートフィルターの設定同様容易に可能になります。

ポイントは Excel の中のデータを取り出す「列」を追加してやることです。その追加する列で使われる関数が Excel.Workbook 関数になります。

当たり前ですが、取り出す先の Excel ブックのワークシートは同じフォーマット、もしくはその構造をあらかじめ理解していて、そこから何を取り出したいかは決まっているものとします。
取り出し先のデータは「テーブル」形式でなくても大丈夫ですが、テーブルであれば「ヘッダー」と「データ」を自動識別してくれます。テーブルでない「範囲」の場合は明示的に指示する必要がでますが、難しい作業・指定ではありません。とはいえ、テーブル形式は今後は必須になっていくので、できればこのタイミングでテーブル形式を使うようにすれば幸せになれるでしょう。

ざっくりと手順を紹介します。

まず、対象となるブックが入っているフォルダーを指定します。

PQ001

指定したフォルダーから該当するファイルを絞ります。この例では “Book” から始まっている名前の Excel ブック「だけ」に絞り込みます。
この絞り込みの設定手順も Excel のオートフィルターで慣れた手法になります。

PQ002

絞り込んだファイルから Excel.Workbook 関数を使って、ブックの中のデータ情報を抜き出す「列」を追加します。
ブックそれぞれのデータ情報は [Content] のバイナリデータから Excel.Workbook 関数を使って参照することができます。
そのため、バイナリデータの [Content] 以外の列は不要なので、削除してから新規列を追加します。
ただし、この段階ではまだ「セル」や「テーブル」のデータそのものを参照しているわけではありません。

PQ003

それぞれのブックにはテーブル形式でデータが入っていますが、 Power Query からは「テーブル形式」のデータと「シート」の範囲データの2つを認識しています。
今回使うのは「テーブル形式」のデータなので、「テーブル形式」のみのデータに絞り込み、不要な列を削除し、テーブルのデータを列として展開します。
テーブル形式のデータを利用するため、列ヘッダーとデータ部分を明示的に区別・指定する必要はありません。

PQ004

このクエリの結果をワークシートに読み込みます。ワークシートに読み込んだときに「日付」がシリアル値のままで読み込まれるので、この表示形式の設定をクエリ エディタで行います。あわせて日付で昇順ソートの設定も行います。

PQ005

ここで作成したクエリの情報は「ブック」に保存されています。このブックを開いて、「データ」タブの「接続」の「すべて更新」または「更新」や、「クエリ」ツールの「クエリ」タブの「読み込み」の「更新」、さらに結果テーブル上のコンテキストメニュー(右クリックメニュー)の「更新」によって、最新のデータ、最新のファイルをクエリで指定しているフォルダーから読み込んで、テーブルのデータを更新します。

Excel Online と Excel データの共有

Excel Services という機能が SharePoint Serer 2016 で無くなる、というリリースがありました。ですが、Office 365 / SharePoint Online 利用者にはほとんど影響ありません。
MOSS2007などの昔、Excel Services は SharePoint 上で Excel ブックを表示させる、という目的の機能でしたが、今の SharePoint ポータル上での Excel ブックの共有には Office Web Apps/Excel Online の Excel Web Access が使われ、Excel Services は使われていないからです。

Technet: SharePoint Server 2016 IT Preview で使用されなくなった機能と削除された機能
Technet: SharePoint Server 2016 IT Preview の既知の問題

そのため現状、Excel ブックの共有という意味では、SharePoint Onoine の例から見ても Excel Online が主流になってきているといえるでしょう。
さらに Power BI サービスと OneDrive との組み合わせにより、Excel Online を使った共有機能がさらに拡張されてきています。

つまり、田中メソッドでいうところの「入力・計算・出力」の「出力」の部分の大きな変革が始まっています。

いままでは「印刷」する、もしくはブックを「コピーして配布」するが主でしたが、今後は

  • OneDrive にアップしたブックのリンクで Excel ブックを共有する
  • SharePoint サイトのポータルページに埋め込み共有する
  • Power BI サービスを使って、ダッシュボードとして共有する
  • Power BI サービスを使って、最適化されたアプリでデータを閲覧する、させる

といった Excel Online をベースにした「出力」方法が主流になっていくと考えられます。

Power BI については、こちらのブログ記事も参照にしてもらえればと思います。

 

クエリの共有

実際に現場でデータを分析したい、データの傾向をみたい人が、必要なデータへのアクセス権限をすべて持っている、または、その権限を持っている人が現状を踏まえて分析できる、ということは稀でしょう。
規模が大きくなくても、パッケージやアプリケーションに組み込まれているデータは「正規化」され、複数のファイル、テーブルに分割されていることが多く、そのリレーションをすぐに把握できるものではないでしょう。

Power Query や Power Pivot を駆使して、正規化された複数のテーブルから必要なリレーションシップを基にして分析元のリストを作成することに労力をかけるよりも、必要であろうデータを収集できるクエリがすでにあり、そこから必要なデータを絞り込む、もしくは、いくつか用意されたクエリを結合して必要なデータを作り出し、傾向を把握する、分析することに時間をかけたほうがいいと考えるでしょう。

Power BI では「データ カタログ」としてクエリの共有機能を提供しています。データ カタログにクエリを登録、それを共有することによって、エンドユーザーがクエリをゼロから作らずに、データ管理をしている担当者がクエリを作成し、エンドユーザーに近い分析する部門がピボットテーブルを活用してデータの傾向を見る、といった活用が可能になります。

support.office.com Power BI データ カタログのクエリを共有する

 

パーソナルツールとしての Excel 機能拡張の限界

このようなことから、少なくとも今後の Excel の機能拡張の方向は Office 365 といったクラウドの進む方向と一緒だと考えるのが妥当でしょう。
そうすると、Excel を使いこなしたいユーザーにとって、以下を「知りません、得意じゃないんです」と言ってられなくなっています。

  • Office 365、SharePoint、各種データソースへのアクセス権限についての理解
  • 自分が共有したいブックの、他の人へのアクセス権設定

Excel ユーザーの方とお話をしていると「サーバー」や「アクセス権」、「認証」という言葉を聞いただけで拒否反応する人も少なくないのですが、それらの管理や設定を自分たちがすることがなくても、システム部門やデータ管理の担当者に適切な権限をください、もしくは組織内のデータを活用するために設定してほしい、というリクエストを出す、常々話をするくらいの考えは持ったほうがよいでしょうね。

また、管理者側からすれば、すべてをエンドユーザーに任せるのではなく、あらかじめ適切に権限設定された共有クエリを用意することで、必要なデータに対して必要な権限でアクセスさせることができます。そのような設定が管理者側で可能であることをエンドユーザーも知っておくべきでしょうね。

もう、一人で Excel ブックをいじってそれらのコピーを配布する時代の先行きは長くないようですから。

 

その他の参考情報

Power Query のクエリ編集についてはマイクロソフトからまとまった情報が出ているようには見えませんが、根気強く探すと出てきます。

キーワードは「M言語」ですが、検索するときは “M Language” で探しましょう。 “Power Query M Language” あたりのキーワードで msdn などの公式技術文書にいきつきます。

msdn: Power Query (informally known as “M”) Formula reference
https://msdn.microsoft.com/en-us/library/mt211003.aspx

そのほか、サイトに support.office.com を指定して Power Query のキーワード (& 1041 日本語指定)で検索するのも有効でしょう。

https://support.office.com/ja-JP/search/results?query=Power%20Query&lcid=1041

また、MSMVP の kagata さんが以下の方法による Power Query 関数のヘルプの確認方法を紹介しています。

http://mukkumuku.blogspot.jp/2015/10/power-bi-10-power-query-reference.html

最近では Power BI の新しい自習書が日本マイクロソフトさんから出ました。しかし、それは Excel の範疇では検索できません。
以下のリンク ページの「Power BI 自習書」の「Word版ダウンロード」や「PDF版ダウンロード」から自習書のデータをダウンロードしてください。

BI/Data Analytics – microsoft.com/ja-jp/ : Power BI 自習書

この自習書を作成した SQLQuality の松本さんのブログがこちらになります。

http://www.sqlquality.com/column/column_50.html

2015/08/06

Power BI Desktop と Excel の Power BI アドイン

ここにきて Power BI Desktop (旧 Power BI Designer)と、これまでこのブログでご紹介してきた Excel の Power BI アドイン(Power Query や Power Pivot)ってどう違うの?という話題が私の周りで聞くようになりました。また、Power BI と Power BI Desktop と Power BI for Office 365 など “Power BI” という単語が付いている製品・サービスの違いについても、新しい機能メインの単独紹介記事ばかりが出てくるため、関連や違いがわからない、という話も私の周りで聞きます。

これ、わかりづらいですよね。

まず、ちょっと交通整理するために、以下の単語を使って区分けしてみます。

  1. Power BI Excel アドイン
  2. Power BI Desktop  
  3. Power BI
  4. Power BI for Office 365

1. Power BI Excel アドイン

これまでこのブログで紹介してきた、単に Power Pivot などと言っていたものですが、現状では例えば Power Pivot は「the Power Pivot in Microsoft Excel add-ins」(長い。。。)と呼ばれるようになっています。

https://support.office.com/en-us/article/Start-the-Power-Pivot-in-Microsoft-Excel-add-in-a891a66d-36e3-43fc-81e8-fc4798f39ea8?ui=en-US&rs=en-US&ad=US

これまで Power BI Excel アドインとして以下をこのブログでも扱ってきましたし、私自身も Power Query や Power Pivot は業務でよく使っています。

  • Power Query
  • Power Pivot
  • Power View
  • Power Map

Power Query は Excel 2013 まではダウンロードセンターからダウンロードするアドインでしたが、Excel 2016 からは内部に組み込まれ、あらゆるエディションで利用可能となります。(一部制限あり)
このあたりのお話は以下のブログでも紹介しています。

Power Query が Excel 全エディションで利用可能になりました
Excel ユーザーのための Power BI 系インストールのお話

現実の話としては全エディションで利用可能になった Power Query 以外は、Professional Plus か Office 365 ProPlus 前提となるため、Excel アドインといえども対象となるユーザーは限定されます。

Power Query や Power Pivot は Excel をより使いやすく、リッチな機能にするアドイン、という認識ですが、以降の Power BI を見ると、実は本当に重要なアドインは Power View です。 Power Query や Power Pivot は Power View (または Power Map) による分析レポートを作成するための補助ツール、という捉え方です。

ただ通常は、Excel のワークシートでレポートは完結してしまう場合が多いので、Power View を活用している人はあまり多くないと思います。私自身も Power View までを使って分析レポートを作ることはほぼありませんでした。

しかし、Power View が目指すところは単なる綺麗な「レポート」ではないようです。レポートの共有を印刷による「紙」ではなく、たとえば、タブレットやスマホを使って、いつでも、どこでも共有可能にする、という使い方です。分析結果やキーとなる数字の共有、それもある程度定期的・自動的に更新されるデータの共有をする、それが以降の Power BI が目指すもののようです。

なお、Excel 2016 Preview (16.0.4229.1011) で、この Power View は [挿入] タブにありません。

PowerViewリボンコマンド
Excel 2013 のリボン コマンド インターフェース にある パワー ビュー

xl2016insertRibbon_small
パワー ビュー のリボン コマンドがない Excel 2016 (16.0.4229.1011) 2015年8月

[リボンのユーザー設定] をみると タブ レベルで [Power View] があるのですが、そのタブ自体が表示されていません。Excel のデータ分析のオプションをいぢっても変わらずです。
どうやら [挿入] タブから独立して [Power View] タブにしたものの、肝心の [Power View] タブが表示されていない、という現象のようです。

調べてみると、マイクロソフトではこれを Known Issues のバグとして認識しており、そのうち直す、としています。

なお、Excel 2016 Preview で Power View を手動で [リボンのユーザー設定] で追加することは可能です。コマンドの選択で [リボンにないコマンド] で、[Power View レポートの挿入] をユーザー設定グループに追加してください。

2. Power BI Desktop (旧 Power BI Designer)

GA(一般利用)にともない、Power BI Designer は Power BI Desktop に名前が変更されました。
Power BI Desktop の特徴は「Excel を必要としない Power View シート(的なもの)作成ツール」の1点につきます。なおかつ、Power BI Excel アドインを使っていたユーザーであれば、ほぼ同じ操作、考え方で Excel の Power View シートに相当する「レポート」を作成することが可能です。そして、この「レポート」を他のユーザーと共有するためのクラウドサービスが「Power BI」(以下の 3. Power BI)になります。

Power BI Excel アドインで慣れている人であれば、ほぼ、取説なしで利用可能なほど、操作性は同じです。
(以下は Power BI に Office 365 の組織アカウントを使って無料トライアルをサインイン済み、という状況を前提としています。)

[データを取得]は Power Query に相当します。

PBI_データ取得

データ取得先が SharePoint Online であれば、 OData フィードを使います。 URL の指定の仕方などは Power Query と全く一緒です。

PBI_ODataフィード

組織アカウントを使って、SharePoint Online サイトにサインインします。

PBI_サインイン

ナビゲーターも Power Query のものと一緒です。

PBI_ナビゲーター

[編集] ボタンで Power Query と同じ クエリ エディター が立ち上がります。

PBI_クエリエディタ

[閉じて読み込む] で、ワークシートにデータを展開するのではなく、データ エリアにレコードを読み込みます。

PBI_データ

左側にある [リレーション] タブは、Power Pivot のダイアグラムビューに相当します。

PBI_リレーションシップ

左側の [レポート] タブが Power View シートに相当します。ここで、キーとなる数値の表示や、データの推移や割合を表すグラフを使い、レポートを作成します。

pbidtpReport

これらは pbix 拡張子のファイルとしてローカルに保存できます。
Power View もそうですし、この Power BI Desktop による「レポート」も、対話型でデータの確認・分析ができることがメリットと言われています。

Power BI Desktop のもうひとつ重要な機能は、この pbix ファイルをサーバーにアップロードして、他のメンバーと共有できる点です。

あらかじめ Power BI の無料トライアルにサインアップしていれば、[発行] を押すと Power BI サイトへのサインインが求められます。

powerbisignin

発行が成功すると、発行したレポートへのリンクが表示されます。

pbiopenfile

リンクをクリックすると、app.powerbi.com の自分の Web サイトでアップロードしたレポートを確認することができます。

pbicomreport

3. Power BI

きっと、この Power BI というサービスが、これまで Excel と Office 365/SharePoint Online を使っていたユーザーにとって一番わかりづらいと思います。

イメージ的には、Office 365 とは違う、別のサーバー(クラウド サービス)が立っています。ただし、Azure AD でアカウントの管理を行っているので、Office 365 の組織アカウントでサインアップすると、Office 365 の一部のような形でアプリランチャーに登録されます。

Office365アプリランチャー

ちゃっかり Office 365 管理センターの [ライセンス] にも登録されています。

pbiライセンス

実践ワークシート協会では「Power BI for Office 365」を購入していたのですが、アプリランチャーのアイコンは Power BI に置き換わりました。
なお、Power BI サイトから、従来の Power BI for Office 365 にいくには、歯車アイコンから Power BI for Office 365 を選択することが可能です。

pbi4office365

無料のサービスでは 1GB の powerbi.com のストレージが利用可能です。このストレージに対して、Power BI Desktop で作成した pbix ファイルをアップロードするのはもちろんですが、Excel の Power View で作成したレポートを含む Excel ブックもアップロードすることが可能です。Power BI サイトの大まかな使い方は以下と言えるでしょう。

レポート共有のためのアップロード先

  • Power BI Desktop で各サーバー、サービスのデータを取り込み、レポートを作成し、pbix ファイルを powerbi.com にアップロードする
  • Excel で各サーバー、サービスのデータを Power Query のモデル OLE DB接続で取り込み、Power View シートを作成、xlsx ファイルを powerbi.com にアップロードする

レポート共有のためのダッシュボードの作成

  • アップロードした pbix や xlsx のレポートから必要なデータを「ダッシュボード」に貼り付け、ダッシュボードの共有先を指定する(招待する)

レポートが使用しているデータソース(データセット)のアクセスと更新頻度の管理

  • データ接続の即時更新
  • 更新頻度の設定
  • データソースへの認証情報の保存

他のサービスや共有可能なコンテンツの管理と参照

  • ダッシュボード、レポート、データセットの組み合わせでコンテンツ パックを作成し、組織内で共有をする
  • 同じ組織の他の人が公開しているコンテンツ パックの参照
  • Salesforce や Google Analytics など他のサービスのコンテンツ パックの参照と共有(Power BI Desktop や Excel を使わない)

ダッシュボード共有先の管理

  • 共有したダッシュボードが誰と共有されているかを管理する
  • ダッシュボードを共有するための「グループ」を参照、編集、新規作成できる
  • この「グループ」は、Outlook で作成し、ファイルやスレッド(会話)を指定したメンバーと共有する、あの「グループ」機能と同じ
  • ダッシュボードに登録することで、iPhone などの Power BI アプリからダッシュボードを参照できるようになります

pbi_iphone
iPhone の Power BI アプリでダッシュボードを表示

なお、無償サービスはストレージが 1GB まで、といった制限がありますが、10GB までに拡張した Power BI Pro という有償サービスのトライアルもあります。

実はこれがやっかいというか、意識せずして Power BI Pro のトライアルに移行してしまっている場合があります。私もそれになってました。。。
Power BI Pro トライアルへの申込みページはありません。無償のサービスを使っていて、有償の機能を使った時点で自動的に有償サービスの Power BI Pro のトライアルとなるようです。(私の記憶では、有償のみの設定をして、Pro のトライアルを使うかどうかの確認をされた記憶はないのですが。。。)
自分が Power BI Pro のトライアルになっているかどうかは、Power BI サイトの歯車アイコンのストレージをみるといいでしょう。パーソナル ストレージの管理で 10GB になっていれば、 Power BI Pro のトライアルになっています。

でも、10GB なんて使わないのに、どうして Power BI Pro のトライアルに移行するのか、、、謎でした。

たぶん、多くの人が「やってしまう」Power BI Pro の機能はデータセットの「更新スケジュールの設定」でしょう。

pbi更新スケジュール

この設定は1日に1回までであれば無償サービスの範囲ですが、1日に2回以上の更新を設定すれば、それは Power BI Pro でなければならないために Power BI Pro トライアルに移行しているようです。
[追記] 知らず知らずにトライアルに移行することはないようです。現在検証中です。私の場合状況から Power BI for Office 365 のライセンス割り当てがすでにされていることが関係しそうです。

Power BI 無償と有償の違い
https://powerbi.microsoft.com/pricing

Power BI Pro の Free Trial について
https://support.powerbi.com/knowledgebase/articles/664495

Free Trial は 60日間のようですが、60日たってどうなるか、、、までは上記のページから探すことはできませんでした。

4. Power BI for Office 365

Power BI for Office 365 も、URL から判断すると sites.powerbi.com で提供しているサービスで、このサービスを適用した SharePoint Online サイトのドキュメント ライブラリーにある Excel ブックを更新、Excel Online で表示したり、Power View を Online で操作することを目的としたものです。他に Data Management Gateway 機能で SharePoint の BCS (Business Connectivity Services) のように Office 365 以外のオンプレミスの SQL Server のデータなどを Office 365 経由で扱えるようにしたり、個人で作成した Power Query のクエリを他のメンバーと共有することができるようになります。

ただ、Power BI for Office 365 は、正直なところ実践ワークシート協会の Office 365 / SharePoint Online の使い方から活用しきれませんでした。

もっとも大きな理由は、SharePoint Online のリスト アイテムと Excel ブックのデータ接続の更新ができないことでした。

https://social.technet.microsoft.com/Forums/en-US/332b421c-63aa-4040-a856-db65d543c2b7/power-bi-refresh-from-sharepoint-online-list-data-source?forum=powerbiforoffice365

本来であれば、Excel で SharePoint Online のリストからデータを取得し、キーとなる数値データを Power View シートで表示し、そのブックを SharePoint Online のドキュメント ライブラリーに保存、 Power BI for Office 365 の BI サイトでブックの定期更新をして、Excel Online で表示したかったのです。ところが、データ接続を使った SharePoint Online のリスト データ更新ができないため、一旦 PC 側の Excel でブックを開き、更新後にアップロードという処理になり、これであれば、すでに Office データ接続と Excel Web Access/Excel Services で実現している方法よりも「使い勝手が悪い」となりました。(念のため、これは SharePoint Online のリストをデータソースにしているためで、SQL Server やオンプレミスの SharePoint Server であれば問題ないようです)

Power BI for Office 365 そのものは、Data Management Gateway による Office 365 とオンプレミスの SharePoint Server や SQL Server の統合機能もあり、また、Power Query のクエリの共有機能もあるため、使える機能も多くあると思います。しかし、Office 365 のクラウド セントリックな業務形態の実践ワークシート協会では、その良さを活かす場面がなかなかなく、逆にデータ接続における SharePoint Online との親和性の未熟さがネックとなってしまった、ということでしょう。

あと、現状 Power BI for Office 365 の Power BI サイトを開くと以下のようになります。

pbi4office365最新のBIはこちら

画面上部の「最新版の Power BI はこちらです。今すぐ試す」の表示から考えると、Power BI for Office 365 よりも、Power BI に集約させたい、というメッセージかもしれませんね。

Power BI にサインアップすることで、Office 365 管理センターから Power BI がなくなりました。しかし、https://admin.powerbi.com にアクセスすることで、従来の Power BI 管理センターにアクセスができました。または、SharePoint サイトに作った Power BI Site トップで歯車アイコンから Power BI Admin Center を選んで Power BI 管理センターに移動できます。

pbi4o365AdminCenter

Power BI for Office 365 を使いたかった理由はブックの自動更新 (scheduled data refresh) でした。現状、3. Power BI でそれが可能です。それも SharePoint Online のリストがデータ ソースであってもです。1日に1回の更新であれば、無償で十分であり、そもそも Power BI for Office 365 の管理センターでは1日に1回の更新しか指定できませんでした。このようなブックの自動更新の目的であれば、無償の Power BI で十分だと思います。

pbiOffice365スケジュール更新
Power BI for Office 365 でブック毎に設定できる更新スケジュールの構成。頻度は1日1回か、週に1回となる。

 

今回、Power BI と Power BI Desktop を使い込むにあたり、これまで実現できていなかった機能を確認することができました。
Excel ブックに含まれているデータ接続の Excel Online での更新については、すでに Office データ接続を使って、SharePoint サイトにアプリ権限付与をすることで可能でしたが、Power BI を使うことで Power Query による SharePoint Online リストデータ接続を含む Excel ブックを Excel Online で更新可能に設定することができます。

次回はその使い勝手と設定をご紹介したいと思います。

2015/08/01

SharePoint ドキュメントライブラリーの Excel ブックが開けない

[ご注意] 結論はそれかよ!という内容なのであまり期待しないでください。とはいえ1日悩みました。。。

ある日突然 SharePoint Online のドキュメントライブラリーに保存している Excel ブックを開くことができなくなりました。

現象としては

  • Excel Online では開ける、ただし、[ブックの編集] – [Excel で編集] を選択すると開けない。
  • ブックのダウンロードはできる、ダウンロードしたブックを開くことはできる。
  • [ファイルを開く] ダイアログからドキュメントライブラリーの URL を指定して、Excel ブックを選択しても開けない。(ライブラリーにブックがあることは確認できる)

開けないときのダイアログのメッセージは以下。

ExcelSharePoint開くことができない

手がかりないですよね、このダイアログだと。。。

そもそも Excel Online で参照・編集できますし、ダウンロードも可能ということからアクセス権の問題ではなさそうです。というか、今まで使っていましたし、ブックの作成者は私です。
ダウンロードしたブックを開くことはできるので、ブックが壊れていることもなさそうです。

なんと、そのサイトのみならず、他のサイトの他の Excel ブックも Excel から直接開くことができなくなっていました。

さらに、いろいろ試してみると、追加の現象として以下であることがわかりました。

  • 新規ブックを作成、ローカルに一度保存して、SharePoint のドキュメントライブラリーにアップロードは可能。ただし、アップロードしたブックを直接 Excel で開くことはできない
  • 新規ブックを作成し、直接 SharePoint のドキュメントライブラリーに保存しようとすると、「ファイルを保存できませんでした。」とメッセージがでて保存できない。

ExcelSharePoint保存

つまり、Excel から直接 SharePoint 上にあるブックを使うことができないと想定されます。

使用している Excel のバージョンは以下。

Microsoft Office Professional Plus 2013
Microsoft Excel 2013 (15.0.4737.1000) MSO(15.0.4737,1001) 32 ビット

もし、これがバグとすれば大問題になっているような内容です。検索してみると以下がヒットしましたが、エラーの内容やビルド番号から今利用しているものは問題がなさそうです。

SharePoint Online または SharePoint Server で Excel ファイルを開こうとするとエラーが発生する(KB2919156)
https://support.microsoft.com/ja-jp/kb/2919156

ここ数日で、なんらかの Microsoft Update はあったかもしれませんが、Windows や Office のバージョンを変えるようなことはしていません。

こういうときは90年代から「再起動せよ」が鉄則です。(笑 そこですべてのアプリケーションを閉じ、Windows の再起動をしたところ、問題なく Excel から SharePoint のブックを開くことができるようになりました。

未だにこの方法が有効だったとは。。。

使用している Windows は 8.1 の 64bit版、Office は 32bit版、PCのメモリーは 12GB です。
再起動、、、してみるのも手かもしれません。

Powered by Blogger.

自己紹介

自分の写真
1989年新卒で日本IBMに入社しダウンサイジング担当としてホストコンピュータと繋げるオフコン、UNIX、PCサーバーのプロジェクトを担当。1997年 MSKK(現日本マイクロソフト)入社、NT4出荷に伴い企業向けサポート部門のビジネスマネージャーとして Excel 使いとなり、2002年 にMSMVPなどをサポートするユーザーコミュ二ティ部門を設立、部門をリード。2006年にMSKK退職後、企業向けのITトレーニング会社・団体に携わり、2014年頃よりPowerBI勉強会主催メンバーの一人として参画、そのコミュニティ活動で MSMVP for Data Platform PowerBI 2017受賞。https://mvp.microsoft.com/ja-jp/PublicProfile/5002635 同年にMVP Awardを返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。