対応例 - Microsoft
Download
Report
Transcript 対応例 - Microsoft
セッション ID:T5-302
導入事例から学ぶ
Office 2010 互換性問題に
ついての対処法
株式会社大塚商会
LA技術グループ
テクニカルスペシャリスト
内山 欣也
マイクロソフト株式会社
インフォメーション ワーカー ビジネス本部
シニア プロダクト マネージャー
松田 誠
アジェンダ
Office の互換性問題
互換性問題の原因
マクロの互換性問題とその対応方法
10 の互換性問題事象
レイアウトの互換性問題とその対応法
5 つの互換性問題事象
互換性に対するその他の注意事項
まとめ
4
Office の互換性問題
Office 導入の 3 つの課題
マイクロソフト調べ
互換性検証
トレーニング
導入展開
60.3%
52.4%
31.7%
•マクロの動作検証
•レイアウトの確認
•検証ファイルの収集
6
•操作トレーニング
•ヘルプデスクの整備
•マニュアルの修正
•インストール作業
•イメージ作成
•メンテナンス
互換性問題とは?
旧バージョンから新しいバージョンに
移行したときに生じる問題
7
マクロの互換性
レイアウトの互換性
旧バージョンで
動作していたマクロが
バージョンアップとともに
動作しなくなる
旧バージョンで作成した
ドキュメントを
開いたときに
レイアウトが崩れてしまう
互換性問題の原因
仕様による問題
リボン
インターフェース
への変更によるもの
廃止となった関数や
定数
描画エンジンの変更
図形のデザイン変更
etc…
8
不具合による問題
特定の操作による
不具合
Office 混在環境に
よる不具合
etc…
Office 導入支援センター
導入に関する情報とノウハウを集約し、お客様に提供
最適な導入手法で Office 2010 の導入コストを削減
ノウハウの一般提供
導入支援コンテンツの提供
導入支援サービスの提供
互換性検証と導入支援
各種コンテンツ作成
ドキュメンテーション
Office 導入支援センターは、
株式会社大塚商会
株式会社CSK Win テクノロジ
株式会社日本システムディベロップメント
とマイクロソフトが共同で運営しています
9
Office 2010 の互換性問題
90% 以上の問題をカバー
10
マクロの代表的な互換性問題
No
互換性に問題が発生する内容
1 全角数字で始まるクエリがエラー
2
3
4
5
コントロール等が参照できない
結合セルの検索が無視される
シートのコピー/移動でエラー
FileSearch の実行エラー
6
7
8
セル数のカウントでオーバー フロー
図形オブジェクトの既定名が変更
CSV 形式保存で \ が ? に変換
9 サンドボックス モード
10 acCmdImport は非サポート
11
レイアウトの代表的な互換性問題
No
12
互換性に問題が発生する内容
1
図形内の文字の改行位置が変化
2
図形内の文字が隠れる
3
グラフ値軸の目盛間隔が変化する
4
画像のイメージが表示されない
5
リンク貼り付け画像の縮尺が変化
マクロの互換性問題と
その対応方法
1. 全角数字で始まるクエリがエラー
問題点
全角のアラビア数字が原因で、クエリ実行時に
エラーが表示される
① 全角のアラビア数字で始まるフィールド名を含む
クエリを実行する場合
② フィールド名を修飾するテーブル名/クエリ名が
全角アラビア数字で始まる場合も同様
対象アプリケーション
Access
全角アラビア数字から
始まるフィールドを
使用しているとエラー
SELECT FullSize_FieldName.[1_FullSize_Field],
FullSize_FieldName.[2_FullSize_Field]
FROM FullSize_FieldName;
14
1. 全角数字で始まるクエリがエラー
① 全角のアラビア数字を使用しないように、
全角のアラビア数字で始まるフィールド名を
すべて変更する
② 新しいクエリを作成して保存する
15
対応例
2. コントロール等が参照できない
問題点
参照情報が [参照不可] となり、コントロールや
オブジェクトが利用できない状態となる
① カレンダー コントロール (Access 2010 で廃止)
② Office Web Components (Office 2007 で廃止)
③ Office 以外の マイクロソフト 製品 や、
サード パーティ製品 のライブラリなど
対象アプリケーション
Word, Excel, PowerPoint, Access
16
2. コントロール等が参照できない
対応例
カレンダー コントロール (mscal.ocx) の対応
Microsoft Office Access 2007 Runtime に含まれる
カレンダー コントロールを使用する
http://www.microsoft.com/downloads/details.aspx?familyid=D9
AE78D9-9DC6-4B38-9FA6-2C745A175AED&displaylang=ja
Access で利用する場合、日付選択コントロールで
置き換え、アプリケーションを修正する
日付選択コントロール
カレンダー コントロール
17
問題点
3. 結合セルの検索が無視される
文字列を Find メソッドで検索すると、引数
SearchOrder に列方向を表す xlByColumns を
指定した場合に検索が無視される
対象の文字列が結合セル (横結合) にある場合
対象アプリケーション
Excel
「Office」 を検索した場合、
結合セルは無視される
検索方向
Office
Office
18
対応例
3. 結合セルの検索が無視される
Sub FindMethodSample()
対応前
Worksheets("Sheet1").Range("A1").Select
Cells.Find(What:="検索", LookAt:=xlPart, _
SearchOrder:=xlByColumns).Activate
End Sub
--------------------------------------------------------------------------------
列方向を表す xlByColumns から
行方向を表す xlByRows に置き換える
対応後
Sub FindMethodSample2()
Worksheets("Sheet1").Range("A1").Select
Cells.Find(What:="検索", LookAt:=xlPart, _
SearchOrder:=xlByRows).Activate
End Sub
19
4. シートのコピー/移動でエラー
問題点
ワークシートのコピー/移動によるエラー
Excel 2007/2010 ファイル形式 (*.xlsx) の
ワークシートを Excel 97-2003 ファイル形式 (*.xls)
のワークブックに移動またはコピーする場合
Excel 2007/2010 ファイル形式:
約 104 万行 × 1.6 万列
Excel 97-2003 ファイル形式:約 6.5 万行 × 256 列
対象アプリケーション
Excel
2007/2010
ファイル形式
97/2003
ファイル形式
・コピー
・移動
20
実行時エラー
対応例
4. シートのコピー/移動でエラー
Sub insNewSheet()
Dim shBase As Workbook, shNew As Workbook
対応前
‘ 互換モードでWorkbookを開く (.xls形式)
Set shBase = Workbooks.Open(Filename:="C:\book1.xls")
‘ 新規WorkBookを作成 (.xlsx形式)
Set shNew = Workbooks.Add
‘ 互換モードWorkbookに新規Workbookのシートを移動
shNew.Sheets.Move before:=shBase.Sheets(1)
End Sub
.xlsx 形式 ⇒ .xls 形式にシートを移動しようとしてエラー
.xlsx ファイル形式にして、
移動元と移動先のファイル形式を揃える
21
問題点
5. FileSearch の実行エラー
[ファイル検索] 作業ウィンドウおよび FileSearch
オブジェクトは、Office 2007 以降利用できない
FileSearch オブジェクトを利用している場合
対象アプリケーション
Word, Excel, PowerPoint, Access
実行時エラー
22
5. FileSearch の実行エラー
対応例① - Dir 関数を利用
Sub FileSearchExcelBook()
With Application.FileSearch
.LookIn = ActiveWorkbook.Path & "\testSample"
.FileType = msoFileTypeExcelWorkbooks
.Execute
対応例
対応前
MsgBox "FileSearch関数検索結果 : " & .FoundFiles.Count & "ファイル"
End With
End Sub
--------------------------------------------------------------------------------
Sub DirExcelBook()
Dim buf As String
Dim i As Long
'Dir関数の結果
'ファイル数カウンター
buf = Dir(ActiveWorkbook.Path & "\testSample\*.xls")
Do While buf <> ""
i = i + 1
Dir 関数による検索
buf = Dir()
Loop
MsgBox "Dir関数検索結果 : " & i & "ファイル"
End Sub
23
対応後①
に置き換える
対応例
5. FileSearch の実行エラー
対応例② - FileSystemObject を利用
Sub FSOForExcelBook()
対応後②
Dim objFolder As Folder
Dim objFile As File
Dim objFSO As FileSystemObject
Set objFSO = New FileSystemObject
Set objFolder = objFSO.GetFolder(ActiveWorkbook.Path & "\testSample")
Dim i As Integer
For Each objFile In objFolder.Files
If Right(objFile, 4) = ".xls" Then
i = i + 1
End If
Next objFile
MsgBox "FileSystemObject検索結果 : " & i & "ファイル"
Set objFolder = Nothing
Set objFSO = Nothing
End Sub
24
FileSystemObject 利用に置き換える
6. セル数のカウントでオーバー フロー
問題点
セル数のカウントをするとオーバー フローする
Excel 2007/2010 形式 (*.xlsx) のワークシートではセル数が
大幅に増えた為
① Long 型の範囲を超える個数のセルを含む
Range オブジェクトで Count メソッドを使用した場合
② カウント以外にも、全行や全列に対して
繰り返し処理を行う場合など
対象アプリケーション
実行時エラー
Excel
1,048,576 行 × 16,384 列
=
セル数: 17,179,869,184
(約 171 億)
25
>Long 型:~ 2,147,483,647
(約 21 億)
6. セル数のカウントでオーバー フロー
Sub countCell()
MsgBox ActiveSheet.Cells.Count
End Sub
対応例
対応前
--------------------------------------------------------------------------------
Sub countCell()
MsgBox ActiveSheet.Cells.CountLarge
End Sub
Variant 型の Range.CountLarge に置き換える
26
対応後
7. 図形オブジェクトの既定名が変更
問題点
図形オブジェクトをマクロ コードから操作する
場合に、各オブジェクトに明示的に名前が
指定されていないとエラーとなる
① AutoShape の 「四角形」 を挿入した場合など
例)Office 2003 でのオブジェクト名:四角形1
Office 2010 でのオブジェクト名:正方形/長方形1
② 図形削除後の連番:以前は番号の再利用はされなかったが、
Office 2007 以降は空き番号を利用
例)Office 2003:図形1を削除・保存後、追加すると図形2
Office 2010:図形1を削除・保存後、追加すると図形1
対象アプリケーション
Word, Excel, PowerPoint
27
7. 図形オブジェクトの既定名が変更
対応例
対応後
Set myDocument = Worksheets(1)
With myDocument.Shapes.AddShape(msoShapeRectangle, _
144, 144, 72, 72)
.Name = "Red Square"
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Line.DashStyle = msoLineDashDot
End With
図形を追加 (Shapes.AddShape) した場合は、
既定名を利用せず、明示的に名前を指定する
※特に、マクロの記録で作成されたコードは、
既定名が利用されるために注意が必要
28
8. CSV 形式保存で \ が ? に変換
問題点
CSV 形式で保存すると、円マーク ”\” が ”?” に
変換される
Excel 2007/2010 にて作成または編集したデータで、
セルの表示形式が 「通貨」 である場合
対象アプリケーション
Excel
CSV出力
29
8. CSV 形式保存で \ が ? に変換
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim yen As String
文字列型として扱い、
”\” を結合して出力する
通貨形式のデータを文字列型で扱う
対応例
対応後
Set wb1 =
Workbooks.Open(Filename:="c:\CSVOutput.xlsx")
yen = wb1.Worksheets("Sheet1").Range("A1").Value
Workbooks.Add
Set wb2 = ActiveWorkbook
wb2.Worksheets("Sheet1").Range("A1").Value = "\" & yen
wb2.SaveAs Filename:="c:\CSVOutput.csv", _
FileFormat:=xlCSV, local:=True
円マークが必要な合は、
文字列結合をする
30
9. サンドボックス モード
問題点
安全と見なされないマクロやクエリの実行が
ブロックされる
サンドボックス機能が有効 (デフォルト有効) な場合
対象アプリケーション
Access
Office 2003 参照時
31
Office 2010 参照時
9. サンドボックス モード
対応例
レジストリの設定で無効に変更する
1. [HKEY_LOCAL_MACHINE]\Software\Microsoft\
Office\14.0\Access Connectivity Engine\Engines
2. [SandboxMode] の [値のデータ] フィールドの
値 3 を 2 に変更します
「Access 2010 でサンドボックス モードを使用する」
http://office.microsoft.com/ja-jp/accesshelp/HA010342092.aspx
32
問題点
10. acCmdImport は非サポート
DoCmd.RunCommand の acCmdImport
コマンドは、Office 2007 以降利用できない
対象アプリケーション
Access
実行時エラー
33
10. acCmdImport は非サポート
Private Sub Import()
DoCmd.RunCommand acCmdImport
End Sub
対応例
対応前
--------------------------------------------------------------------------------
Private Sub Import()
DoCmd.RunCommand acCmdImportAttachExcel
End Sub
ImportAttachコマンドを利用する例
・acCmdImportAttachAccess
・acCmdImportAttachText
・acCmdImportAttachXML
etc.
34
対応後
レイアウトの互換性問題と
その対応法
1. 図形内の文字の改行位置が変化
問題点
問題が発生する場合:① 又は ②
① 図形内のテキストの余白部分が少ない場合
② デザインが変更されている図形を使用している場合
(角丸四角形、角丸四角形吹き出し等)
対象アプリケーション
Word, Excel, PowerPoint
Office 2003 参照時
36
Office 2010 参照時
2. 図形内の文字が隠れる
問題が発生する場合
図形内のテキストの余白部分が少ない場合
対象アプリケーション
Word, Excel, PowerPoint
Office 2003 参照時
37
Office 2010 参照時
問題点
3. グラフ値軸の目盛間隔が変化
問題点
問題が発生する場合
軸のオプションで目盛を 「自動」 に設定している場合
対象アプリケーション
Excel
Office 2003 参照時
38
Office 2010 参照時
4. 画像のイメージが表示されない
問題点
問題が発生する場合:① かつ ②
① Word 文書内の画像をコピーし、
[図 (拡張メタファイル)] として同ファイル上に
貼り付けている
② 図の書式設定 (明るさ等) を初期値から変更している
対象アプリケーション
Word
Office 2003 参照時
39
Office 2010 参照時
JPEG
JPEG
拡張
メタファイル
拡張
メタファイル
5. リンク貼り付け画像の縮尺が変化
問題が発生する場合:① かつ ② かつ ③
① 同シート内でリンク貼り付けが行われている
② ズームが 100% 以下になっている
③ 保存時に該当シート以外のシートが表示状態
対象アプリケーション
Excel
Office 2003 参照時
40
Office 2010 参照時
問題点
レイアウト問題点の対応例
対応例
図形内の文字列変化 (No.1, 2)
図形を大きくする (余白を十分にとる)
テキストのフォントサイズを調節する
グラフ目盛変化 (No.3)
軸を 「自動」 ではなく 「固定」 とする
画像欠落 (No.4)
図 (JPEG) や図 (PNG) として貼り付けを行う
リンク貼り付け画像の変化 (No.5)
図として貼り付けを行う
41
互換性に対する
その他の注意事項
64 ビット版 Office への対応
ActiveX コントロールと COM アドイン
32 ビット版向けに作成された ActiveX コントロールと
COM アドインは、64 ビット版では動作しない
64 ビット版向けにビルドしたものが必要
Visual Basic for Applications 7 (VBA 7)
VBA 6 に代わる新しい VBA エンジン
32 ビット版と 64 ビット版の両方で使用可能
“VBA7” と “Win64” という 2 つのコンパイラ定数で
実行環境を判別可能
一部のコードについては 64 ビット版対応が必要
43
64 ビット版 Office への対応
Declare ステートメント
32 ビット版で Declare ステートメントを使用して
DLL にアクセスしている VBA コードは書き換えが必要
64 ビット版 VBA 7 では Declare ステートメントに
PtrSafe 属性の追加が必要
新しいデータ型 LongLong と LongPtr
LongLong 型:64 ビット (8 バイト) 符号付き数値を
格納
LongPtr 型:32 ビット システムでは Long 型の数値、
64 ビット システムでは LongLong 型の数値を格納
LongPtr 型を使用すると、32 ビットと 64 ビットの
両環境で実行できる移植可能なコードを記述できる
44
セキュリティ機能の変更に対する対応
メッセージ バーの表示
Office 2007 以降セキュリティ警告がダイアログ
ボックスからメッセージ バーに変更
マクロ等が含まれる場合
外部データへのアクセスがある場合
インターネットからダウンロードしたファイルを
表示する場合
電子メールの添付ファイルを表示する場合
ファイル検証などでエラーがあった場合
45
セキュリティ機能の変更に対する対応
信頼できる場所
特定のフォルダに保存しているファイルを信頼し
警告の表示などを省略する
信頼されたドキュメント
ドキュメントの信頼性に関する判断を繰り返し
要求しないようにする機能
信頼できるドキュメントとして判断を保持する
46
まとめ
Office 2010 互換性ホワイトペーパー
Microsoft Office 2010
マクロ互換性について
以前のバージョンの
Office で作成した
マクロや VBA コードの
互換性
セキュリティの新機能と
留意事項
Office 2010 の
64 ビット版に関する
留意事項
Microsoft Office 2010
ファイル フォーマットおよび
ドキュメント レイアウトの
互換性について
Open XML の運用や
展開時の留意事項
以前のバージョンの
Office で作成した
ドキュメントの、
レイアウトの互換性
「企業向け Microsoft Office 2010 サイト」より入手できます
http://www.microsoft.com/japan/office/2010/business/
48
まとめ
約 10,000 ファイルの検証の結果、
互換性問題の 90% 以上は特定の事象が
引き起こしていることがあきらかに
なりました
代表的な問題を理解することにより、
検証、改修にかかる工数を削減することが
できます
今後も Office 導入に関する情報を
提供し続けますので、定期的にご確認を
お願いいたします
49
関連セッション
T5-301: Day 2 15:20 - 16:30
Office 2010 をスムーズに展開するためのポイント
T2-304: Day 3 10:55 - 12:05
App-V/MED-V で実現する最新デスクトップ環境の
構築手法 ~ クライアントサイドの仮想化技術 ~
T2-303: Day 3 15:20 - 16:30
Microsoft VDI の実践
~ 構築方法のポイントと活用ノウハウ ~
H-313: Day 1 15:20 – 16:30 / Day 2 13:45 – 14:55
Microsoft Application Virtualization における
アプリケーションの管理体験
50
リファレンス
企業向け Microsoft Office 2010 サイト
http://www.microsoft.com/japan/office/2010/business/default.mspx
Office 2010 リソース キット
http://technet.microsoft.com/ja-jp/library/cc303401.aspx
Microsoft Office 2010 トレーニング センター
http://www.microsoft.com/japan/office/2010/business/training/d
efault.mspx
51
ご清聴ありがとうございました。
T5-302
アンケートにご協力ください。
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should
not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.