Excel2010 の Macro にて改行コード(vbCrLf)を出力しても改行されない

Microsoft Excel 2010のマクロにて、改行コード(vbCrLf)をセルに出力しても改行されない場合があります。

Excel2010_Macro_vbCrLf_1
マクロ自体は次のような単純なもので確認できます。
Sub MacroNewLine()
Cells(1, 1) = "改行前" + vbCrLf + "改行後"
End Sub

このマクロをボタンに紐付けてクリックしても「改行前改行後」と表示されます。
ちなみに、数式バーでは正常に改行されていることが確認できます。

Excel2010_Macro_vbCrLf_2
少し確認していくと、違うセルだとうまく改行できるところもあったため「セルの書式設定」を確認すると、なんと“文字列”扱いとなっていました。この表示形式を“標準”に戻すことで、マクロからの改行が正しく表示されるようになりました。

Excel2010_Macro_vbCrLf_3
こんなことがあると、マクロでの文字列出力前にセルの書式設定を変更するといった対応が必要ですね。

Windows Server 2003 にて Microsoft Update が無限ループする場合の対処

大昔に構築してWindows UpdateをあまりしてこなかったWindows Server 2003環境で、久しぶりにアップデート作業を行おうとしたところ、URLの末尾に「&muopt=1」が追加され続けるだけで一向に終わらない現象に遭遇しました。

http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=ja&muopt=1&muopt=1&muopt=1&muopt=1
Windows_Server_2003_Microsoft_Update_1

調べてみるとWindows Update Agentを最新にすればよいとあったので「WindowsUpdateAgent30-x86.exe」をダウンロードしてインストールしようとするも、「Windows Update エージェントは既にインストール済みのため、インストールは必要ありません。」と表示されて実行できませんでした。

調べてみると、対処法はいろいろあるようですが、次のやり方が一番楽なようです。
Windows Update のコンポーネントをリセットする方法
http://support.microsoft.com/kb/971058

具体的には、下記をコマンドプロンプトで実行すればよいようです。
net stop wuauserv
net stop cryptsvc
Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
Ren %systemroot%\SoftwareDistribution SoftwareDistribution.bak
Ren %systemroot%\system32\catroot2 catroot2.bak
net start wuauserv
net start cryptsvc

Windows_Server_2003_Microsoft_Update_2
その後Internet ExplorerやリンクからWindows Update/Microsoft Updateを起動。するとWindows Updateのみになっているようなので、Windows Update Agentを導入後にMicrosoft Updateへ切り替え。再度、更新プログラムの検出を行えばMicrosoft Updateを無事行うことができました。

Windows_Server_2003_Microsoft_Update_3

ASP.NETでHTTP Error 500.21が表示された時の対応

ひょんなことからASPを自作したのですが、開発PCのMicrosoft Visual Web Developer 2010では正常に動作するのに、Windows Server 2012のIISで動作させた時だけ、初回アクセス時に以下のエラーが表示されるようになりました。

HTTP エラー 500.21 - Internal Server Error
ハンドラー "PageHandlerFactory-Integrated-4.0" のモジュール リストにあるモジュール "ManagedPipelineHandler" が正しくありません
ASP_NET_IIS_HTTP_500_21_Error_1

2回目にアクセスしたときは正常に動作するので、サーバのタスクスケジューラーで15分おきに該当URLにアクセスして、ユーザ影響がないようにしようかと考えておりました。
ネット上で検索すると、下記コマンドを実行して.NET Frameworkを修復しろと書いてあります。

■32bit OSの場合
%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe –i

■64bit OSの場合
%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe –i

ただし、上記コマンドはWindows Server 2008 R2までで、Windows 2012以降はサポートされていないもののようです。

困り果てて色々設定を変えていたところ、アプリケーションプールの「マネージパイプラインモード」を「統合」から「クラシック」に変更すると、初回アクセスもスムーズに動作するようになりました。
ASP_NET_IIS_HTTP_500_21_Error_2

なんてことない、開発者がへぼいせいで残念な結果でした。