TimberLandChapel's Tech Blog

TimberLandChapel provide Tips, tech note and scribbling.
Updated my site as English site for APAC users.
TLC.com .Metrix 4.0 Beta1 released

サイトの日本語化方法はこちら

Syndication

News

INETAJ

情報処理関係官公庁

SQL Server

TLC.com

Microsoft

クリエイティブ・コモンズ

http://www3.clustrmaps.com/
Sandcastle の日本語ローカライズファイルを Sandcastle May 2008 Release に対応させました。

Sandcastle は Visual Studio で作成した xml コメントをヘルプファイルや web ヘルプにコンパイルするためのツールです。

今回は,この Sandcastle May 2008 Release のインストールと日本語ドキュメントを生成するためのローカライズについてまとめます。

この記事は,
Visual Studio 2005 Servide Pack 1 に基づいて記述しています。

この記事は以下のブランチにわかれています。


Sandcastle January 2008 のインストレーションレポート(May 2008 と基本路線は変わりません)
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2008/03/22/sandcastleInstall.aspx


Sandcastle May 2008 のローカライズ
http://blogs.timberlandchapel.com/files/folders/visual_studio/entry2267.aspx


Sandcastle January 2008 のヘルプ作成
作成中
Help 1.x は chm 形式にコンパイルされてすぐに確認できるので簡単ですが,
おそらく Help 2.x の HxS 形式は結構手を焼くんじゃないでしょうか。。。
Visual Studio で [Help Integration Project] を組んでしまうのが一番楽そうなんですが,このあたりについてまとめる予定

 Sandcastle May 2008 日本語ローカライズファイルの変更点

Jan 2008 to May 2008
[hana reference_content.xml]
ADD
  <item id="SeeAlsoOverloadLinkText">{0} オーバーロード</item>

[Prototype shared_content.xml]
Update
 <item id="copyright">2005 Microsoft Corporation. All rights reserved.</item>
 <item id="copyright">2008 Microsoft Corporation. All rights reserved.</item>

[Shared syntax_content.xml]
DELETE
 <!-- JavaScript messages -->
 <item id="UnsupportedUnsafe_JavaScript">JavaScript ではアンセーフ型を扱う API はサポートされていません。</item>
 <item id="UnsupportedGeneric_JavaScript">JavaScript ではジェネリック型やジェネリックメソッドはサポートされていません。</item>
 <item id="UnsupportedExplicit_JavaScript">JavaScript では明示的なインターフェイスの実装はサポートされていません。</item>
 <item id="UnsupportedOperator_JavaScript">JavaScript では演算子のオーバーロードはサポートされていません。</item>
 <item id="UnsupportedStructure_JavaScript">JavaScript では構造体の使用をサポートしていますが,新たに宣言することはサポートされていません。</item>
 <item id="UnsupportedCast_JavaScript">JavaScript では新しい型変換演算子の宣言はサポートされていません。</item>

[vs2005 shared_content.xml]
ADD
 <!-- freshness date -->
 <item id="UpdateTitle"><font color="DarkGray">更新日時: {0}</font></item>

ADD
 <item id="JavaScriptLabel">JavaScript</item>
 <item id="XAMLLabel">XAML</item>

UPDATE
 <item id="MailToLink">BLOCKED SCRIPTSubmitFeedback('<include item="fb_alias" />','<include item="fb_product" />','<include item="fb_deliverable" />','{0}','{1}','<include item="fb_body" />');</item> 
 <item id="MailToLink">BLOCKED SCRIPTSubmitFeedback('<include item="fb_alias" />','<include item="fb_product" />','<include item="fb_deliverable" />','{0}','{1}','<include item="fb_body" />','<include item="fb_subject" />');</item> 

UPDATE
 <item id="MailToLink">BLOCKED SCRIPTSubmitFeedback('<include item="feedback_alias" />','<include item="feedback_product" />','<include item="feedback_deliverable" />','<include item="feedback_fileVersion" />','<include item="feedback_topicVersion" />','<include item="feedback_body" />');</item>
 <item id="MailToLink">BLOCKED SCRIPTSubmitFeedback('<include item="feedback_alias" />','<include item="feedback_product" />','<include item="feedback_deliverable" />','<include item="feedback_fileVersion" />','<include item="feedback_topicVersion" />','<include item="feedback_body" />','<include item="feedback_subject" />');</item>

[vs2005 reference_content.xml]
ADD
 <!-- Security Critical Boilerplate text-->
 <item id="typeSecurityCriticalBoilerplate">この型は SecurityCriticalAttribute 属性を持っているため,使用は .NET Framework for Silverlight クラス ライブラリでの内部用に限定されます。アプリケーション コードでこの型の任意のメンバを使用すると,MethodAccessException 例外がスローされます。</item>
 <item id="memberSecurityCriticalBoilerplate">このメンバは SecurityCriticalAttribute 属性を持っているため,使用は .NET Framework for Silverlight クラス ライブラリでの内部用に限定されます。アプリケーション コードでこのメンバを使用すると,MethodAccessException 例外がスローされます。</item>
 <item id="securityCritical">[SECURITY CRITICAL] </item>

[vs2005 feedBack_content.xml]
ADD
 <item id="fb_subject">カスタマーフィードバック</item>

ADD
 <item id="feedback_subject"></item>

[vs2005 conceptual_content.xml]
ADD
 <item id="autoOutline"><autoOutline/></item>

 SHFB 1.7.0.0 日本語ローカライズファイルの変更点

1.6.0.4 to 1.7.0.0
[SharedBuilderContent_ja-JP.xml]
ADD
 <!-- SHFB Show Missing Component messages -->
 <item id="shfbAutoDocConstructor">&lt;see cref="T:{0}"/&gt; クラスの新しいインスタンスを初期化します。</item>
 <item id="shfbAutoDocStaticConstructor">&lt;see cref="T:{0}"/&gt; クラスの静的フィールドを初期化します。</item>
 <item id="shfbMissingTag">&lt;p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;"&gt;[Missing &amp;lt;{0}&amp;gt; documentation for "{1}"]&lt;/p&gt;</item>
 <item id="shfbMissingParamTag">&lt;p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;"&gt;[Missing &amp;lt;{0} name="{1}"/&amp;gt; documentation for "{2}"]&lt;/p&gt;</item>

Posted by timberlandchapel | with no comments
Filed under:

Office 2007 用 2003 互換リボン を更新しました。

  • PowerPoint 2007 用の互換リボンを新たに公開しました
  • Excel,PowerPoint,Word の3つの互換リボンをインストールできる統合パッケージを公開しました。

インストール手順の詳細はこちらを参照してください。(ベータ時のものです)

【Office Excel】Excel 2007 に Excel 2003 に似せたメニューを追加する
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2007/09/06/office-excel-excel-2007-excel-2003.aspx

ダウンロードはこちら 

【Office 2007】TLC.com Office 2007 用 「Office 2003 互換メニュー」 アドイン Release 1.0
※ 統合パッケージ
http://blogs.timberlandchapel.com/files/folders/officesystem/entry2255.aspx
【Office 2007】TLC.com PowerPoint 2007 用 「PowerPoint 2003 互換メニュー」 アドイン Release 1.0
http://blogs.timberlandchapel.com/files/folders/officesystem/entry2254.aspx
【Office 2007】TLC.com Excel 2007 用 「Excel 2003 互換メニュー」 アドイン Release 1.0
http://blogs.timberlandchapel.com/files/folders/officesystem/entry2186.aspx
【Office 2007】TLC.com Word 2007 用 「Word 2003 互換メニュー」 アドイン Release 1.0
http://blogs.timberlandchapel.com/files/folders/officesystem/entry2187.aspx

 

既存のベータパッケージをアンインストールして,新しいパッケージを導入してください。

大変お手数をおかけいたします。

powered by TimberLandChapel

Office 2007 用 2003 互換リボン のRelease 1.0 を公開しました。

インストール手順の詳細はこちらを参照してください。(ベータ時のものです)

【Office Excel】Excel 2007 に Excel 2003 に似せたメニューを追加する
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2007/09/06/office-excel-excel-2007-excel-2003.aspx

ダウンロードはこちら 

【Office 2007】TLC.com Excel 2007 用 「Excel 2003 互換メニュー」 アドイン Release 1.0
http://blogs.timberlandchapel.com/files/folders/officesystem/entry2186.aspx
【Office 2007】TLC.com Word 2007 用 「Word 2003 互換メニュー」 アドイン Release 1.0
http://blogs.timberlandchapel.com/files/folders/officesystem/entry2187.aspx

インストールパッケージの更新を行いました。

Excel 用と Word 用の2つのインストールパッケージとして公開しています。

今後,PowerPoint 用のリボンの開発が終わったところで,3本まとめてインストールできたらいいなと思います。

統合パッケージを公開しました。
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2008/10/13/OfficeInteropRibbon.aspx

既存のベータパッケージをアンインストールして,新しいパッケージを導入してください。

大変お手数をおかけいたします。

powered by TimberLandChapel

Posted by timberlandchapel | with no comments
Filed under: ,
Sandcastle January 2008 Release

Sandcastle は Visual Studio で作成した xml コメントをヘルプファイルや web ヘルプにコンパイルするためのツールです。

Visual Studio 2003 の開発環境では NDoc というコミュニティプロダクトが提供されていましたが,この NDoc の後継として位置づけられるでしょう。現在の Sandcastle は提供場所を Codeplex に移して,January 2008 が提供されています。

今回は,この Sandcastle January 2008 Release のインストールと日本語ドキュメントを生成するためのローカライズについてまとめます。

この記事は,
Visual Studio 2005 Servide Pack 1 に基づいて記述しています。

この記事は以下のブランチにわかれています。


Sandcastle January 2008 のインストレーションレポート
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2008/03/22/sandcastleInstall.aspx


Sandcastle January 2008 のローカライズ
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2008/03/22/sandcastlelocalize.aspx


Sandcastle January 2008 のヘルプ作成
作成中
Help 1.x は chm 形式にコンパイルされてすぐに確認できるので簡単ですが,
おそらく Help 2.x の HxS 形式は結構手を焼くんじゃないでしょうか。。。
Visual Studio で [Help Integration Project] を組んでしまうのが一番楽そうなんですが,このあたりについてまとめる予定
Posted by timberlandchapel | 1 comment(s)
Filed under:
シナリオと要件

Sandcastle January 2008 Release で日本語ドキュメントを生成するためにローカライズを行います。

この記事は,
Sandcastle January 2008 Release に基づいて記述しています。

ローカライズのポイント

[Sandcastle January 2008 Release] + [Sandcastle Help File Builder 1.6.0.4] は,デフォルトのインストールでも言語の選択肢に「日本語(日本)」が使用できる状態になっていますが,対応する日本語コンテンツファイルが存在していないために結局は英語のドキュメントとして作成されてしまいます。

ということは,2つのツールのコンテンツに「ja-JP」のローカライズ版を追加してやればうまくいくはずです。この辺は .NET アプリケーションのローカライズのアーキテクチャから予想します。

該当するコンテンツファイルは

  • .\Sandcastle Help File Builder\SharedContent
  • .\Sandcastle\Presentation

の2ヵ所に存在するようです。
また,「.\Sandcastle\Presentation」には,1つの共用コンテンツと,3つのテンプレートに対応したコンテンツが格納されています。

これらのコンテンツフォルダの中に,日本語に対応する「ja-JP」フォルダを作成して,英語のコンテンツをコピーして逐次訳していけばローカライズすることができます。

手順は以下の通りです。

「.\Sandcastle Help File Builder\SharedContent」内の4つの「***BuilderContent_ja-JP.xml」ファイルをローカライズする

「.\Sandcastle\Presentation\hana\Content」内に「ja-JP」フォルダを作って,4つのファイルをローカライズする

「.\Sandcastle\Presentation\Prototype\content」内に「ja-JP」フォルダを作って,4つのファイルをローカライズする

「.\Sandcastle\Presentation\Shared\content」内に「ja-JP」フォルダを作って,「syntax_content.xml」をローカライズする

「.\Sandcastle\Presentation\vs2005\Content」内に「ja-JP」フォルダを作って,6つのファイルをローカライズする

「.\Sandcastle Help File Builder\SharedContent」はフィードバック関連のローカライズ,「.\Sandcastle\Presentation」はヘルプ本体のローカライズに対応するようです。

ローカライズ作業

TimberLandChapel.com でローカライズしたコンテンツファイルをダウンロードに用意してみました。

全てのテンプレートとフィードバックコンテンツのローカライズをしてありますが,フィードバック先の表現など一部変更しなければならないところは残っていると思います。

zip ファイルを解凍して,それぞれ [Sandcastle] と [Sandcastle Help File Builder] をインストールしたフォルダに上書きコピーすればローカライズできるようになっています。

なるべく正規の MSDN 内の表現にあわせてローカライズしましたが,問題等ありましたらフィードバックいただければ。


Sandcastle January 2008 + Sandcastle Help File Builder 1.6.0.4 の生成ドキュメントを日本語化するコンテンツファイル(SHIFT-JIS)
http://blogs.timberlandchapel.com/files/folders/visual_studio/entry2179.aspx



Sandcastle January 2008 + Sandcastle Help File Builder 1.6.0.4 の生成ドキュメントを日本語化するコンテンツファイル(UTF-8)
http://blogs.timberlandchapel.com/files/folders/visual_studio/entry2204.aspx
Posted by timberlandchapel | 2 comment(s)
Filed under:
シナリオと要件

Sandcastle January 2008 Release をインストールします。

この記事は,
Sandcastle January 2008 Release に基づいて記述しています。

関連リソース

まずは,関連リソースの取得元のリストです。注意が必要なのは,Sandcastle のダウンロード先が Codeplex に移ったことでしょうか。


Sandcastle January 2008
http://www.codeplex.com/Sandcastle/Release/ProjectReleases.aspx?ReleaseId=9921


Sandcastle Help File Builder 1.6.0.4
http://www.codeplex.com/SHFB/Release/ProjectReleases.aspx?ReleaseId=9848


HTML Help Workshop (Japanese version)
http://msdn2.microsoft.com/en-us/library/ms669985(VS.85).aspx


Visual Studio .NET Help Integration Kit 2003
http://www.microsoft.com/downloads/details.aspx?FamilyID=ce1b26dc-d6af-42a1-a9a4-88c4eb456d87&DisplayLang=en


Visual Studio 2005 SDK Version 4.0
http://www.microsoft.com/downloads/details.aspx?FamilyID=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&displaylang=en


Sandcastle Blog
http://blogs.msdn.com/sandcastle/default.aspx


Sandcastle - Documentation Compilers for Managed Class Library
http://msdn2.microsoft.com/en-us/vstudio/bb608422.aspx


Sandcastledocs.com
http://www.sandcastledocs.com/Wiki%20Pages/Home.aspx

今回インストールするのは,Sandcastle で Help 1.x と Help 2.x をコンパイルするのに最低限必要な以下のワンセットです。

基本セット

  • Sandcastle January 2008
  • Sandcastle Help File Builder 1.6.0.4

Help 1.x

  • HTML Help Workshop (Japanese version)

Help 2.x

  • Visual Studio 2005 SDK Version 4.0
Sandcastle January 2008

まずは,根本の Sandcastle January 2008 をインストールしましょう。ダウンロードしてきた [Sandcastle.msi] を実行します。

Sandcastle Setup Wizard 01

Sandcastle Setup Wizard 02

Sandcastle Setup Wizard 03

Sandcastle Setup Wizard 04

Sandcastle Setup Wizard 05

Sandcastle Setup Wizard 06

[Sandcastle Setup Wizard] が起動します。[Next] をクリックします

EULA が表示されるので,[I accept ...] をチェックして [Next] をクリックします

インストール先のフォルダを指定します。デフォルトの設定を使用します

設定は以上です。[Install] をクリックしてインストールを開始します

インストールの経過が表示されます

以上で [Sandcastle] のセットアップは終了です

Sandcastle Help File Builder 1.6.0.4

Sandcastle は基本コマンドラインツールなので,GUI で操作するためのコミュニティツールが提供されています。

Sandcastle Help File Builder 1.6.0.4 が Sandcastle January 2008 に対応したリリースです。これを利用すると,NDoc の操作と同じような GUI でヘルプをビルドできるようになります。

Sandcastle Help File Builder Setup Wizard 01

Sandcastle Help File Builder Setup Wizard 02

Sandcastle Help File Builder Setup Wizard 03

Sandcastle Help File Builder Setup Wizard 04

Sandcastle Help File Builder Setup Wizard 05

[Sandcastle Help File Builder Setup Wizard] が起動します。[Next] をクリックします

インストール先のフォルダとインストールするユーザーを指定します。
    デフォルトでは,「EWSoftware」が指定されますが,これを削除しておいた方が,Sandcastle の隣にフォルダがくるので便利でしょう。

設定は以上です。[Install] をクリックしてインストールを開始します

インストールの経過が表示されます

以上で [Sandcastle Help File Builder] のセットアップは終了です

Help Workshop と Visual Studio 2005 SDK

Sandcastle では Microsoft Help 1.x 形式と Microsoft Help 2.x のヘルプをコンパイルすることができますが,それぞれのヘルプ形式をコンパイルするために必要なリソースがあります。

Help 1.x 形式は [HTML Help Workshop] をインストールすることでコンパイルできるようになります。

Help 2.x 形式は [Visual Studio 2005 SDK] に含まれるツールキットのインストールをすることでコンパイルできるようになります。

[HTML Help Workshop] のインストールは簡単です。

HTML Help Workshop Setup 01

HTML Help Workshop Setup 02

インストールの注意が表示されます。
    Windows のインストールフォルダを変更している場合は注意して下さい

インストール先のフォルダを確認して [Unzip] をクリックすれば終了です

[Visual Studio 2005 SDK] は開発用のツール群としてインストールされます。

Visual Studio 2005 SDK Setup 01

Visual Studio 2005 SDK Setup 02

Visual Studio 2005 SDK Setup 03

Visual Studio 2005 SDK Setup 04

Visual Studio 2005 SDK Setup 05

Visual Studio 2005 SDK Setup 06

Visual Studio 2005 SDK Setup 07

Visual Studio 2005 SDK Setup 08

Visual Studio 2005 SDK Setup 09

Visual Studio 2005 SDK Setup 10

[Visual Studio 2005 SDK Setup] が起動します。[Next] をクリックします

EULA が表示されるので,[I accept ...] をチェックして [Next] をクリックします

インストールするコンポーネントを選びます。
    直接は関係ありませんが [Innovasys HelpStudio Lite] もインストールしておくとよいでしょう

インストール先のフォルダを指定します

インストールの経過が表示されます

SDK のインストールが終わると,[Innovasys HelpStudio Lite] のセットアップが起動します

[Next] をクリックするとインストールが開始されます

インストールの経過が表示されます

特にオプションはなくインストールが完了します

10 2つのコンポーネントがセットアップされると終了します

Posted by timberlandchapel | 3 comment(s)
Filed under:
シナリオと要件

SSIS の [スクリプトコンポーネント] は「変換元」,「変換」,「変換先」のどれにでもなることができる高度にカスタマイズ可能なコンポーネントです。

前回は,カスタム変換元を作成して,特殊な CSV に対応してみました。
http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1068.aspx

今回は,カスタム変換を利用して,入力列に特殊な変換を行う例を紹介します。
文字列型の入力列の一つに混じっている特定の文字を空白に置き換えてパイプする処理を構築します。
ソースはデータベース上のテーブルに,変換先はフラットファイルにしてみます。

この記事は,
SQL Server 2005 Developer Edition Service Pack 1
Integration Services に基づいて記述しています。

スクリプト変換を作成する

まずは,データフローの基本を作成します。

[OLE DB ソース] を一つ,[スクリプト変換] を一つ,[フラットファイル 変換先] を一つ用意したデータフロータスクを用意します

[OLE DB ソース] はデータベース上のテーブルに接続し,[フラットファイル 変換先] は CSV ファイルとして作成します
    [フラットファイル 変換先] は,データのパイプが出来上がったあと,最後に作成してもよいです。

スクリプト変換のプロパティを調整します。

[入力列] タブにはテーブルからパイプされる列が表示されます。特に調整の必要はありません。

[入力および出力] タブで,新しい出力の設定をします
    スクリプトによって変換した新しい列を出力列に含めるため,列を一つ追加します。
    [SynchronouseInputID] に入力列の ID を設定しておけば,入力列のすべては自動的に出力にリダイレクトされます。

[スクリプト] タブではスクリプトの動作に関する設定をしますが,今回のシナリオでは特に調整の必要はありません。

あとは,[スクリプトのデザイン] をクリックして,VB.NET のコードを書くだけです。

今回のコードでは,入力列の [BusinessClassName] 列(DT_WSTR)内の文字列にある「カタカナのアからソまでの文字」を空白に置き換えて,新しい列である [FilteredClassName] にパイプします。
フィルタする文字の評価はとても簡易な処理でおこなっているので,実用にはもっと複雑な処理を記述する必要があるでしょう。

入力列の文字のフィルター
Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
    ' Edit
    Dim inputChars As Char() = Row.BusinessClassName.ToCharArray
 
    For index As Int32 = 0 To inputChars.Length - 1
        Dim currentChar As Char = inputChars(index)
        If currentChar >= "ア"c AndAlso currentChar <= "ソ"c Then
         inputChars(index) = " "c
        End If
    Next
 
    Row.FilteredClassName = New String(inputChars)
End Sub

入力列から受け取った値を操作して,特定の列にセットするためのコードはこれだけです。
自動生成するスクリプト内の [<入力名>_ProcessInputRow] プロシージャに,データの操作方法を記述するだけです。

ここでは,引数で受け取る [Row] オブジェクトを使用して,[Row.BusinessClassName] から値を受け取って,変換後の値を [FilteredClassName] にセットしています。

これで,カスタマイズした変換を行う基礎的なデータフロータスクが完成します。

Posted by timberlandchapel | with no comments
Filed under:
所有者のないデータベースでのエラー

Adventure Works サンプルデータベースを以下の記事で公開していたスクリプトを使用して次の条件下でアタッチすると所有権の明示的に指定されていないデータベースが出来上がる場合があります。

この問題は [SQL Server 認証] を使用している場合や,Windows アカウントに対応する [ログイン] を明示的に作成している場合は発生しません。

  • Windows 認証で SQL Server にログインしている
  • Windows 認証に使用しているアカウントが OS の Administrator 権限を有する
  • Windows 認証で使用しているアカウントに対応する [ログイン] を SQL Server 上の [セキュリティ] > [ログイン] に作成していない

この場合,データベースに所有者が指定されていないために [データベースダイアグラム] などの一部の機能を利用できずにエラーが発生します。

AdventureWorks サンプルデータベースのセットアップスクリプト
http://blogs.timberlandchapel.com/blogs/timberlandchapel/pages/1141.aspx

次の画像は,データベースのプロパティから [ファイル] を表示した画面です。
所有者の欄が指定されていないことがわかります。

問題の修正

この問題を回避するためには,以下のうちいずれかを行ってください。

対策1:既にアタッチしたデータベースを修正する場合
  • [セキュリティ] > [ログイン] にて,使用する Windows アカウントに対応する [ログイン] を作成する
  • データベースのプロパティの [ファイル] にて,[所有者] に作成した [ログイン] を割り当てる
対策2:データベースのアタッチを最初からやり直す場合
  • [セキュリティ] > [ログイン] にて,使用する Windows アカウントに対応する [ログイン] を作成する
  • 作成した [ログイン] でデータベースにログインし直して,スクリプトを実行する

いずれの対策についても,
目的はデータベースに [所有者] を設定することで,
そのためにWindows アカウントに対応する [ログイン] を作成しています。

サンプルデータベースの公開場所の変更

今まで [Microsoft ダウンロードセンター] から入手することのできた SQL Server 2005 のサンプルデータベースの公開場所が変更になっているます。

以前までの公開場所
http://www.microsoft.com/downloads/details.aspx?FamilyID=e719ecf7-9f46-4312-af89-6ad8702e4e6e&DisplayLang=en

現在はこのダウンロードページでは,サンプルデータベースの新しい公開先を示す PDF ファイルに置き換えられています。

Codeplex

SQL Server 2005 サンプルデータベースは,現在は [Codeplex] にて公開されています。
Codeplex は Microsoft が運営する共有ソースまたはオープンソース・プロジェクトのためのコミュニティ開発サイトです。
SQL Server 2005 サンプルデータベースは,[SQL Server Samples and Community Project] の一部として公開されています。

SQL Server Samples and Community Project
http://codeplex.com/SqlServerSamples

このうち [Adventure Works] サンプルデータベースは,2008 CTP 用のものと,従来の 2005 用のものの2つのリリースが公開されています。

SQL Server 2008 July 2007 CTP 向け
http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=5705
SQL Server 2005 SP2 向け
http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=4004

Codeplex で現在公開されている msi ファイルと,以前ダウンロードセンターで公開されていたものの MD5 ハッシュ値は異なっています。
詳細な内容の相違に関するリリースノートはいまのところ確認できていません。

また,Codeplex 上の [Source Code] ページには CSV ファイル形式のデータも公開されているようです。

シナリオと要件
VB.NET から Excel の COM オブジェクトを操作する場合の注意点
http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1149.aspx
で紹介したように,VB.NET から Excel の COM オブジェクトを操作する際には,.NET のマネージコードから COM を操作するための一風変わった作法が必要になります。

今回は,Excel のブックに罫線を描画する方法を紹介します。

Excel ブックを開いて,罫線を描画する

前回の「Excel COM オブジェクトを正しく解放するためのコツ」で紹介した4つのコツを頭に入れて丁寧にコードを書きます。

また,Excel の罫線は次の6つのパーツの組み合わせとして作成することになります。

  • 上端線
  • 下端線
  • 右端線
  • 左端線
  • 内部水平線
  • 内部垂直線

罫線の描画に関しても,[Borders] コレクションと [Border] オブジェクトが関わるため,一旦 [Borders] コレクションの参照を作成する必要があります。

罫線を描画する
Dim targetRange As Excel.Range = Nothing
Dim targetBorders As Excel.Borders = Nothing
Dim targetRightBorder As Excel.Border = Nothing
Dim targetLeftBorder As Excel.Border = Nothing
Dim targetTopBorder As Excel.Border = Nothing
Dim targetBottomBorder As Excel.Border = Nothing
Dim targetVerticalBorder As Excel.Border = Nothing
Dim targetHorizontalBorder As Excel.Border = Nothing
 
Try
    targetRange = [worksheet].Range("A3:C5")
 
    targetBorders = targetRange.Borders
    targetRightBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeRight)
    targetLeftBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeLeft)
    targetTopBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeTop)
    targetBottomBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeBottom)
    targetVerticalBorder = targetBorders.Item(Excel.XlBordersIndex.xlInsideVertical)
    targetHorizontalBorder = targetBorders.Item(Excel.XlBordersIndex.xlInsideHorizontal)
 
    With targetRightBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetLeftBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetTopBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetBottomBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetVerticalBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlHairline
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetHorizontalBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlHairline
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
 
Finally
    If Not targetHorizontalBorder Is Nothing Then
        Marshal.ReleaseComObject(targetVerticalBorder)
    End If
    If Not targetVerticalBorder Is Nothing Then
        Marshal.ReleaseComObject(targetVerticalBorder)
    End If
    If Not targetBottomBorder Is Nothing Then
        Marshal.ReleaseComObject(targetBottomBorder)
    End If
    If Not targetTopBorder Is Nothing Then
        Marshal.ReleaseComObject(targetTopBorder)
    End If
    If Not targetLeftBorder Is Nothing Then
        Marshal.ReleaseComObject(targetLeftBorder)
    End If
    If Not targetRightBorder Is Nothing Then
        Marshal.ReleaseComObject(targetRightBorder)
    End If
    If Not targetBorders Is Nothing Then
        Marshal.ReleaseComObject(targetBorders)
    End If
    If Not targetRange Is Nothing Then
        Marshal.ReleaseComObject(targetRange)
    End If
End Try

コード中の [worksheet] 部分には,[worksheet] オブジェクトの参照を指定してください。

それぞれの [Border] オブジェクトに対して,[LineStyle],[Weight],[ColorIndex] の3つのプロパティを指定することで基本的な罫線を描画することができます。

好みの罫線を描画するためには Excel の [マクロの記録] 機能を利用して VBA コード内にプロパティの値を記録させるとよいでしょう。

罫線を消去する

罫線を描画する操作を行えば,当然罫線を消去する操作も行う必要が出てくるでしょう。

[LineStyle] プロパティに指定する [XlLineStyle] 列挙体に,値 [xlLineStyleNone] が存在しますが,これは罫線の指定をしないことにはなりません。

罫線の指定を解除するためには [Constants] 列挙体の 値 [xlNone] を指定します。

罫線を解除する
targetBorder.LineStyle = Excel.Constants.xlNone

これで罫線の指定を解除することができます。

written by TimberLandChapel
Posted by timberlandchapel | with no comments

Access 2007 の CREATE TABLE には文字列型の列について

「Unicode 圧縮 - Yes/No」 を GUI で設定するのに相当するキーワードとして,

[WITH COMPRESSION]

があります。

これが。。。

Access 2007 だとキーワードとして認識されていないように思います。

型指定の後に記述しても,WITH が有効なキーワードとして認識されないとエラーになってしまいます。

何か情報をお持ちの方ご協力を。

written by TimberLandChapel

Posted by timberlandchapel | with no comments
Filed under:
シナリオと要件
VB.NET から Excel の COM オブジェクトを操作する場合の注意点
http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1149.aspx
で紹介したように,VB.NET から Excel の COM オブジェクトを操作する際には,.NET のマネージコードから COM を操作するための一風変わった作法が必要になります。

今回は,Excel のブックに罫線を描画する方法を紹介します。

Excel ブックを開いて,罫線を描画する

前回の「Excel COM オブジェクトを正しく解放するためのコツ」で紹介した4つのコツを頭に入れて丁寧にコードを書きます。

また,Excel の罫線は次の6つのパーツの組み合わせとして作成することになります。

  • 上端線
  • 下端線
  • 右端線
  • 左端線
  • 内部水平線
  • 内部垂直線

罫線の描画に関しても,[Borders] コレクションと [Border] オブジェクトが関わるため,一旦 [Borders] コレクションの参照を作成する必要があります。

罫線を描画する
Dim targetRange As Excel.Range = Nothing
Dim targetBorders As Excel.Borders = Nothing
Dim targetRightBorder As Excel.Border = Nothing
Dim targetLeftBorder As Excel.Border = Nothing
Dim targetTopBorder As Excel.Border = Nothing
Dim targetBottomBorder As Excel.Border = Nothing
Dim targetVerticalBorder As Excel.Border = Nothing
Dim targetHorizontalBorder As Excel.Border = Nothing
 
Try
    targetRange = [worksheet].Range("A3:C5")
 
 
    targetBorders = targetRange.Borders
    targetRightBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeRight)
    targetLeftBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeLeft)
    targetTopBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeTop)
    targetBottomBorder = targetBorders.Item(Excel.XlBordersIndex.xlEdgeBottom)
    targetVerticalBorder = targetBorders.Item(Excel.XlBordersIndex.xlInsideVertical)
    targetHorizontalBorder = targetBorders.Item(Excel.XlBordersIndex.xlInsideHorizontal)
 
    With targetRightBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetLeftBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetTopBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetBottomBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlThin
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetVerticalBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlHairline
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
    With targetHorizontalBorder
        .LineStyle = Excel.XlLineStyle.xlContinuous
        .Weight = Excel.XlBorderWeight.xlHairline
        .ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic
    End With
 
Finally
    If Not targetHorizontalBorder Is Nothing Then
        Marshal.ReleaseComObject(targetVerticalBorder)
    End If
    If Not targetVerticalBorder Is Nothing Then
        Marshal.ReleaseComObject(targetVerticalBorder)
    End If
    If Not targetBottomBorder Is Nothing Then
        Marshal.ReleaseComObject(targetBottomBorder)
    End If
    If Not targetTopBorder Is Nothing Then
        Marshal.ReleaseComObject(targetTopBorder)
    End If
    If Not targetLeftBorder Is Nothing Then
        Marshal.ReleaseComObject(targetLeftBorder)
    End If
    If Not targetRightBorder Is Nothing Then
        Marshal.ReleaseComObject(targetRightBorder)
    End If
    If Not targetBorders Is Nothing Then
        Marshal.ReleaseComObject(targetBorders)
    End If
    If Not targetRange Is Nothing Then
        Marshal.ReleaseComObject(targetRange)
    End If
End Try

コード中の [worksheet] 部分には,[worksheet] オブジェクトの参照を指定してください。

それぞれの [Border] オブジェクトに対して,[LineStyle],[Weight],[ColorIndex] の3つのプロパティを指定することで基本的な罫線を描画することができます。

好みの罫線を描画するためには Excel の [マクロの記録] 機能を利用して VBA コード内にプロパティの値を記録させるとよいでしょう。

罫線を消去する

罫線を描画する操作を行えば,当然罫線を消去する操作も行う必要が出てくるでしょう。

[LineStyle] プロパティに指定する [XlLineStyle] 列挙体に,値 [xlLineStyleNone] が存在しますが,これは罫線の指定をしないことにはなりません。

罫線の指定を解除するためには [Constants] 列挙体の 値 [xlNone] を指定します。

罫線を解除する
targetBorder.LineStyle = Excel.Constants.xlNone

これで罫線の指定を解除することができます。

written by TimberLandChapel
Posted by timberlandchapel | with no comments

Excel 2007 用 2003 互換リボン の現在ベータテストを行っています。

【Office Excel】Excel 2007 に Excel 2003 に似せたメニューを追加する
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2007/09/06/office-excel-excel-2007-excel-2003.aspx

ダウンロードはこちら 

【Office 2007】TLC.com Excel 2007 用 「Excel 2003 互換メニュー」 アドイン ベータ
http://blogs.timberlandchapel.com/files/folders/officesystem/entry1544.aspx

インストールパッケージの更新を行いました。

Excel のリボン定義の一部がいつの間にか変更になったようで,一部リボン定義のロード時にエラーが発生します。

この問題に対処した新しいパッケージを用意いたしました。

既存のベータパッケージをアンインストールして,新しいパッケージを導入してください。

大変お手数をおかけいたします。

powered by TimberLandChapel

Posted by timberlandchapel | with no comments
Filed under: ,

Community Server を 2007 にアップグレードしたわけですが,自前日本語化ファイルの問題点を修正してからはよく動いてくれているようです。

が。。。

水面下では,ハンドルされない例外がけっこう発生して,ログにたまっていました。

ここでは,中でも深刻そうな2つのエラーに対する情報と対処をまとめておきます。

ここで紹介する対処法は,現在 TLC.com サイトに適用して経過をみている最中です。ご自分のサイトに適用する際には,充分検証した上で行ってください。これらの対処法を適用した結果について,TLC.com は一切責任を負いかねます。

■エラーその1

エラーメッセージ:パディングは無効なので、削除できません。/Padding is invalid and cannot be removed.

例外タイプ:CryptographicException

【所感】

おそらく ViewState の暗号化・複合化に際して発生しているエラーなのですが,どうも原因がよくわかりません。

「思い出泥棒の泥棒日記」
http://blog.livedoor.jp/chikara191919/archives/50809446.html

という方のサイトでは,ロードバランス時の問題として報告されています。

ただ,このエラーが発生するのが,どうもトラックバックスパムのような異常に大きなポストバックに反応しているように見受けられます。

実際の一番の対策は,IP フィルタリングなのかもしれません。

【対策】

ひとまず,上記のサイトで紹介されていた,<machineKey> の固定を試みています。

【経過】

<machineKey> の固定を行った後も,いくつか同様のエラーが発生しているようです。やはり,トラックバックスパムの対策を強化したほうがよいのかな。。。

 

■エラーその2

エラーメッセージ:入力文字列の形式が正しくありません。

例外タイプ:FormatException

【所感】

1.検索ロボットが巡回をしてくるたびに発生しているようです。

/themes/default/search/indexpostlist.aspx に何か問題が。。。これも根本がよくわかっていません。

ToDotNet

http://todotnet.com/archive/0001/01/01/7472.aspx

では,直接は関連が薄そうですけど,検索ボット関連の記事だったのでひとまず対策をしてみます。

(しかし,CS 2007 だとデフォルトブラウザの上書きで対策しているような気がするんですが。。。)

2.追記

http://forums.asp.net/t/934913.aspx

ここでは,検索ボットが .axd をクロールする際に起こっているようだと議論されています。

【対策】

ブラウザ定義ファイル

http://msdn2.microsoft.com/ja-jp/library/ms228122(VS.80).aspx

ブラウザ定義ファイルを Yahoo Slurp と Googlebot 用に作成して経過を見ています。

robots.txt

で .axd ファイルのクロールを禁止して経過を見ています。

【経過】

現在経過を見ています。indexpostlist.aspx のソースを読んだ方がよいかな

(追記)ブラウザファイルの定義だけでは対策としては不十分なようです。

powered by TimberLandChapel

シナリオと要件

[Microsoft Office] は,[Office 2007] のリリースに際して画期的な UI の革新を行いました。
[リボン] と呼ばれる,従来よりも大きなアイコンで,「結果志向」のメニュー配置を目指したインターフェイスが採用されています。

この [リボン] ですが,使いなれてくると
「ソフトウェアの中で,どんな機能系統として設定されているか」ということを理解していないといけない [メニュー] 形式より
「今何をしたいのか」,「何を操作したいのか」に集中していることでけっこう使い勝手がよいと思います。

しかし,

リボンの中で自分の使いたい機能を探していませんか?

特に [Office 2003] 以前から Excel をある程度使い込んでいた方に多いと思うのですが,
「Office 2003 では [ツール] にあったアノ機能はどこいった?」
という経験はありませんか?

せっかくの結果志向インターフェイスも,機能を探してあっちへこっちへクリックして探していてはだいなしです。

そこで,

以前のメニューで覚えている機能はそのまま見つけられた方がよい

というコンセプトで,Excel 2003 形式のメニューをアドインとして作成しました。

この記事は,
Microsoft Excel 2007 に基づいて記述しています。

Excel 2007 向け Excel 2003 形式互換メニュー

まずはイメージでご覧ください。

interop00

互換メニューは,[Excel 2007] の [COM アドイン] として,[リボン] 内の1つのタブとして追加されます。
[互換] タブの中に従来と同じような形式でメニューを作成しています。
[互換] タブを利用することで,今までの感覚にしみ込んでいる「何がどこにある」を利用することができます。

ダウンロードはこちら

インストール手順

Excel 2007 向け Excel 2003 形式互換メニューのインストール手順をまとめます。

interop01

インストールパッケージをダウンロードします
    パッケージは [zip] 形式で提供しています。
    ダウンロードした [zip] ファイルを解凍してください。

interop02

[Setup.exe] を実行します
    互換メニュー自体のインストールを行う [msi] ファイルの他に,前提となるコンポーネントの設定を行うためのファイルが含まれています。
    [Setup.exe] を使用すると,前提コンポーネントを自動的にセットアップします。


  ヒント 
前提となるコンポーネント
互換メニューは [Visual Studio 2005 Tools for Office Second Edition] の [Office 2007 アドイン] として開発しています。このため,以下のコンポーネントが動作のために必要です。
  • .NET Framework 2.0
  • 2007 Microsoft Office プライマリ互換アセンブリ
  • Visual Studio 2005 Tools for Office SE Runtime
  • Visual Studio 2005 Tools for Office Language Pack
これらのコンポーネントが事前にインストールされていることが分かっている場合は,[msi] のみの実行でインストールを行うこともできます。

interop03

警告が表示された場合は実行を許可します
    発行元の登録は行っていません。

interop04

動作に必要なコンポーネントが表示され,使用許諾が表示されます
    インストールされるコンポーネントを確認して,[同意する] をクリックしてください。

interop05

[インストール] をクリックします
    [2007 Microsoft Office プライマリ互換アセンブリ] がインストールされていない場合のみ確認されます。

interop06

必須コンポーネントのインストール状況が表示されます。

interop07

[互換メニュー] 自体のインストールウィザードが起動します
    [次へ] をクリックします。

interop08

インストールフォルダを指定して [次へ] をクリックします

interop09

[次へ] をクリックしてインストールを開始します

interop10

interop11

10インストールが完了したら,[閉じる] をクリックしてウィザードを終了します

ここまでで,互換メニューのインストールが完了しました。

interop12

12Excel 2007 を起動して [互換] タブが追加されていることを確認します


  ヒント 
アドインの設定を確認する
[互換] タブが表示されない場合は,
[Excel のオプション] > [アドイン] の中で [COM アドイン] の設定を確認してください。
同様に
[Excel のオプション] > [セキュリティセンター] > [セキュリティセンターの設定] > [アドイン] の設定を確認してください。

interop12

interop12 

powered by TimberLandChapel

More Posts « Previous page - Next page »