Top > Programmingとか > Office > Office小ネタ

2007年09月17日

情報いろいろメモ

ようやく出稼ぎ終了後のばたばたが落ち着いた感じになってきましたので、貯め込んでいた情報をぼちぼち整理。
メジャーなテクノロジーにベクトルが向かないのは、相変わらずのへそ曲がりっぷりってことでひとつ。

  • Excel 2007 XLL SDK リリース!

元ネタはMicrosoft Excel blogの"Title: Excel 2007 XLL SDK is released!"。

今年5月、札幌の「Community Launch Team イベント」(2007/5/2)でお話ししたOffice制御テクノロジ(資料はこちらからどぞ)で口頭でのみ紹介、図表には挙げなかったExcel XLL

技術資料がもう何世代分も提供されず、てっきりもう過去の技術として廃れていくもんだと思っていたんですが、あっとびっくり

2007用最新SDKが堂々リリース。

確かにタイトな制御をスピーディにこなしたい時には第一候補となるアーキテクチャなんですが、こいつぁもともと.NETも何も関係ないべたべたなC向けAPIのはずなので、イマドキの時流じゃあないんですが、やっぱ根強いニーズがあるのねぇと。でもそんなニーズが現場で出たことを見たことがないんですが。

いったいどこがどんな目的で使っているのかなぁ。

  • XML to Schema Tool for Visual Basic 2008

VB2008用の、XMLを気軽に使えるようになるテンプレート(なのかなー)。XMLファイルを取り込むとIntelliSenseで参照ができるようになり、LINQ書いたりする時に便利でしょ?とか説明されているような感じなんですけれども。

元ネタはTheVisual Basic Team blogの"XML to Schema Tool for Visual Basic 2008 (Beth Massi)"、ダウンロードとウォークスルーはこちら

  • 消えたSnippet Editor

けっこう重宝しているCode Snippet Editor for Visual Basic 2005。これはMSDNのDeveloper Centerで提供されているわけですが、そのバージョンは1.0.0.0。
たしか開発ワークスペースであるGotDotNetでは提供開始後も修正を続け、1.4.0.0までになっていたはず。しかもソースまで提供されていたはず。この一般公開されたソースを基にVBUGの皆さんは日本語版をリリースしたはず。

ところがどっこい、GotDotNetが2007/6/19にワークスペースの提供を終了しちゃったわけです。

Topページの"GotDotNet Phase-out Announcement"によると、ユーザーサンプルやワークスペースはCodePlexに引き継ぐとかなんとか言っているようなんですけれども、実際にはSnippetEditorは移行されていない(あるいは公開されていない)感じなんですね。

で、このへんの流れを受けて本家msdnForumに"Snippet Editor"ってスレッドが現在立っておりまして。

「goddotnetが終わっちゃった今、最新版の1.4.0.0は
どうやって手に入れればいいの?
msdnでは1.0.0.0しか提供してくれていないし。」

「えー、msdn Developer Centerから入手すればいんじゃね?」

「だーかーらー、私のほしいのは1.4.0.0なんだってば。
msdnのが1.0.0.0ってのは先に言ってんでしょうが。」

「僕はcodeplexに移されたんじゃないかーと思ったんだけど、
なんか見つかんないよねー。」

みたいな感じで絶賛やり取り中。

多分こんな話になっちゃうだろーなーと思い、私自身は6月に1.4.0.0のソースとバイナリの両方を手に入れといたのでとりあえずこのへんの喧騒には巻き込まれないで済んではいるんですが、まさか「ボク持ってるからあげるよー」ってなわけにもいきませんしね。

どっかにきちんと移行されているのかなー。
それともいずれforVB2005/2008みたいな感じで新装お目見えでもするんでしょうか。

2007年01月15日

VBAはこれからいつまでも提供され続けます

、とまぁMicrosoft本社VisualStudioチームのGeneralManager、KD Hallmanさんは語ってくれたわけですが。

Hallmanさんのプロフィールはこのへんを見ていただくとして、ここではVBA/VSTO/VSTOの責任者だと思っていただければ。

で、日本マイクロソフトのインタビュアーがHallmanさんへのインタビューに成功し、そのビデオが日本語字幕付きで公開されました。

KD Hallman (ケーディー・ホールマン) へのインタビュー

今までなかなか語られることがなかった、

  • VSTO/VSTA/VBAで何を提供したいと考えていたのか
  • どのように使われることを想定しているのか
  • これからどのようにしていこうと考えているのか

がわかる、大変貴重な資料となっています。

私としては、近い将来の夢のような形で語られた、3つの技術の相互運用(シームレスな連携)という部分に非常に強く惹かれました。
究極のいいとこ取りではありませんかぃ。

つことでVBAな人とかVTOな人とかには、見るだけの価値がありますよとご紹介。

2006年07月29日

Access2003:DLL読み込み時のエラーです

1万件くらいのレコードが入っているCSVファイルがありまして。
こいつの中身をちょっと解析せざるを得なくなったわけですよ。

いいやAccessにツッコんでいくつかのパターンで絞り出してレコード数取ればいいだけじゃん。

ってんで新規MDB作成→[ファイル]→[外部データの取り込み]→[インポート]→CSVファイル指定→「DLL読み込み時のエラーです」

えぇっ?

インストールオプションをフルにしても、Officeの再インストールをかけても→「DLL読み込み時のエラーです」

ええぇぇっ?

いやこれは切ない。別な手段を取ろうかどうかと考えるよりも先に、Accessすら正常に動作しない環境でまともにモノ作りができるのかという不安感が猛烈に襲ってきたわけです。

ちなみにこのマシン、2003と2007β2を混在させているので、もしやそっち方面の原因?とAccess2007β2でも同様の操作を行ってみましたがまったく同じエラーメッセージが。

やるなAccessこんなところまで互換性を保っていやがるこんちくしょう。

あわててWeb検索、ストレートにマイクロソフトのサポートオンラインで

[ACC2000] Accessのウィザードを実行したときにエラーメッセージが表示される

ってのを見つけました。

Access2000かー、これ現象はビンゴだけど対処まで同じかどうかはちょっと確信持てないなーなどと思いつつ、でも他にめぼしい情報も見つからなかったのですがってみることにしました。

現象
  • データベース構造の解析
  • テキストインポートウィザード
  • ワークシート インポート ウィザード
  • またはその他のウィザード
を使用したときに、
  • このコントロールにはオブジェクトがありません。
  • オブジェクト変数またはWithブロック変数が設定されていません。
  • DLL読み込み時のエラーです
のいずれかのエラーメッセージがが表示されることがあります。
ってまずここまででなんてエラいアバウトな。
さらに、
解決方法
これらのエラーメッセージを解決するには、次のうち1つまたは複数の方法を実行します。
  1. [スタート]メニューに自動作成されるショートカットから起動
  2. 「Acwzmain.mde」「Acwztool.mde」「Acwzlib.mde」をリネームしてから修復インストール
  3. Microsoftビジネスツールを削除インストール→さらに追加インストール
  4. Regsvr32.exe Accwiz.dll
    (Accwiz.dllはデフォルトでは「C:\Program Files\Microsoft Office\OFFICE11」に存在)
  5. Regsvr32.exe dao360.dll
    (dao360.dllはデフォルトでは「C:\Program Files\Common Files\Microsoft Shared\DAO」に存在)
って解決策もなんかエラいバラエティに富んで。

いやぁそれでもやるしかないもんなぁ。

ってことで、なるべく簡単な方法からひとつずつ試してみることにしました。

最初にやったのが「1. [スタート]メニューに自動作成されるショートカットから起動」。状態変わらず。
次にやったのが「4. Regsvr32.exe Accwiz.dll」。状態変わらず。
で、「5. Regsvr32.exe dao360.dll」でみごと正常動作。

よかったー(T-T)

なるべくなら追加インストとかはかけたくなかったので、3つ目がビンゴでほんとうによかった。
どうもDAO(AccessのDBの仕組み)がうまくレジストリ登録されていなかったってのが直接の原因のようです。どうして登録されなかったのか?という原因の原因についてはよくわかりませんが。

ちなみに、2007β2も一緒に回復しました。Accessって2007になってもDAO360使ってるんだぁへー。

もちろんこれは今回の私の事例であり、同様な現象に見舞われた皆さんすべてにあてはまることではありませんが。でもまぁなんか別の機会にまた違うマシンで同じような目に会いそうな予感がしますので、ちょっとメモしておくことにします。

おっと、実際にリカバリかける場合は、上記サポートオンラインの記述をよく読んで具体的な手順とかそのへんを把握してからにしてください。本エントリではかなりはしょって引用していますので、ここだけ読んで作業しちゃうとちょいとヤバいかもしれません。

2006年07月11日

Alt+マウスドラッグ矩形

でVSIDEのコードを矩形に選択できることは知ってましたが、ふとWord2003でやってみたらやっぱりできました。

すんげー楽っすー。

2006年04月27日

VBA→VSTOマイグレーション

VBA/VSTO/VBSA周りの状況を調べた時のメモ。
きちんとまとめてから書こうと思ったんですが、なんかこのまま埋もれてしまいそうな勢いなので、とりあえずここまででいったん提示しときます。

どうもVBA→VSTOのマイグレーションの元はArtinSoftのJLCA(またはJLCAのテクノロジー)が大きく関わっているらしい。
Dale Obergさんの名前をキーワードに検索かけて情報を編み上げると、このへんのおもしろい流れがたどっていけそうです。



---
VisualBasic アップグレードウィザード
---
Java Language Conversion Assistant(JLCA)

 2002年2月5日にβ1 が公開された,Java 開発者が .NET 開発環境にスムーズに移行できるようにするツール。 ArtinSoft の移行技術を用い,Java で記述したソースコードの大部分が C# に自動変換される。 JLCA は現在 Microsoft の Web サイトで公開されており,Visual Studio .NET にも同機能が搭載される。

JLCA EE
 JLCA の法人向けバージョンで,JLCA のスーパーセット版らしい。

ArtinSoft
 エンタープライズ版 JLCA の開発を進めている,コスタリカ San Pedro。
サイト:
---
Excel VBA ソリューションの Visual Studio 2005 Tools for Office へのマイグレーション

Visual Studio 2005 Tools for Office への移行における VBA から Visual Basic .NET へのコード変換

2005年08月01日

泥TipsExcel(1) 「形式を選択して貼り付け」のわずらわしさから逃れる

例えばWebページから必要な情報をコピーしてExcelに貼り付ける時。
そのままCtrl+V、とすると、思いもよらないフォント属性やら文字サイズ属性やらまでも含んで貼り付からさってしまいます。

こんな時には、「形式を選択して貼り付け」るのが定番操作です。

Ctrl+Vの代わりに、Alt+E/Sとして、表示された「形式を選択して貼り付け」ダイアログの[貼り付ける形式]リストボックスの中から、「テキスト」を選択して[OK]。

でもこれ、常に「テキスト」は一番下に表示されているので、貼り付け操作のたびに一番下までカーソルを持っていかなくてはなりません。

一度や二度なら我慢もできましょうが、連続してあっちこっちから切って貼ってを繰り返していく場合には、いちいちのこの操作がめんどくさくってしょうがありません。

そんな時には、2回目以降はCtrl+Yで。

一度「形式を選択して貼り付け」操作を行うと、どの形式を選択したのかの情報まで含めて「やり直し」コマンドとして記録されます。
ので、2回目以降は「やり直し」コマンドのショートカット、Ctrl+Yでさくさくっと連続技おっけー。

ちなみに、他の操作をしたとたんに「やり直し」コマンドの記録内容が変わってしまいますので、あくまれも連続して「形式を選択して貼り付け」る時に限ります。

発動条件が限られる必殺コンボ、といぅことでひとつ。

2004年12月12日

Word:「描画をここに作成します。」領域を作成させない方法

6e98623a.gif

オートシェイプを使おうとするたびに出てくる煩わしい描画領域。

言われてみればなんのことはないんだが、設定でOn/Offできるとは思っていなかったのでちょいとメモ。

問題は、元ネタが近江八幡市のサイト内のページらしいんだけど。
TopページからどぅたどってもGoogleでヒットしたページへたどり着けなくって。
どぅも職員用のWord活用紹介ページっぽいんだよなぁ…直リンで紹介するとなんだか迷惑がかかりそぅで。

てことで、敬意を表して出典は記しましたが直リンはなし、といぅ方向でひとつ。

2004年07月26日

MS Office2003のUserForm

vbModelessができるよぅになっておりましたよ。
ShowTabViewを直さなきゃなぁ…
待ちに待ってた双方向連動なんだもの。

2004年07月08日

Officeアドイン:このへんでちょっとまとめてみる

最初に、Visual Basic for Application(VBA)/Visual Studio Tools for Office(VSTO)の選択と、アドイン/COMアドイン/マネージドアドインの違いは、まったく別の話なのでごっちゃにしないよう注意して。



で、まずVBA/VSTOの特徴と選択基準についての現時点での理解。

VBAはそれぞれのOfficeのバージョン間でほぼ互換性のあるマクロorスクリプトorプログラミング言語。
(もちろん仕様の追加や変更に伴う差異分は無理だが。)
Office内の単一アプリケーションに対する(もしくは複数のアプリケーションにまたがった)機能の作り込みに向いている。

VSTOはC#.NET/VB.NETからOffice2003をコントロールするためのツールor拡張機能。
どちらかといぅと従来の、VB6からOfficeをCOM経由でコントロールする機能に近い
ので、.NETで提供できる上から下までのソリューション(.NETの用語とはちょっと意味がずれる、どちらかといぅとプレゼン用語的な意味合いで)を実現する時に、使い勝手のいいフロントエンドを作る際にOfficeをパーツとしてより柔軟にコントロールすることを主な目的としている。んだと思う。

だから、Officeの中だけで完結する機能の追加や拡張を考えた場合には、VSTOを採用するメリットはほとんどなく、VBAで充分。てゅうか最適。
VS.NETで作り込んだアプリケーションからOfficeを制御したい場合にはVSTO。従来通りのCOM経由でのコントロールもできるとは思うが、わざわざCOMを選択する理由がない。

これはもぅ完全に棲み分けができている話で、メリット/デメリットを列挙してから「さて、どっちにしようか」なんて話ではないな。



アドイン/COMアドイン/マネージドアドインは、実は自分の中ではどーでもよくなった。
COMが付くかどぅかはCOMの採用の有無で、マネージドが付くかどぅかは.NETの採用の有無なだけだ。

たとえばExcelだけの閉じた世界でVBAで作れば、COMも.NETも関係ないのでただのアドイン。
Excel+VBAなんだけどちょろっとWordも呼び出して制御するんならCOMアドイン。
VSTOで.NET製アプリからOffice2003を制御するならマネージドアドイン。
で、そん時に(わざわざ)COM経由にしたらマネージドCOMアドイン。

だから、作った結果をどう分類するかの問題なだけであって、「俺のこれから作りたい機能はマネージドアドインにすべきか」などと悩む話ではないってことだね。



そいえば、そもそもなんでこんなにこのへんにこだわったのかといぅと。

Office2003のVBAはVisual Basic.NET for Applicationになっていて従来のVBA文法は下位互換性のためにのみ残されている、とかいぅ話だったらどぅしよぅ、と思って確認しておきたかったのだった。

Officeの中で遊ぶんなら、従来どおりVBAでおっけーってことで。
猿頁で提供してあるVBAコードも、2003でも同様に動作することは確認できているしね。

2004年03月11日

ExcelのグラフをOOoで読み込むと崩れる。

崩れた。
どこが崩れたのか気になる。
いずれ調べてみたいと思う今日この頃。

2004年03月05日

Excel:カーソルキーでセルカーソルが、移動せずに範囲選択されてしまう

たとえば、一つ下のセルにセルカーソルを移動したい場合、[↓]キーを押すわけなんだが。
ときどきセルカーソルが移動せず、今カーソルのあるセルとその下のセルが範囲選択されてしまうことがある。
こうなるともう上下左右どう移動させても選択範囲が変化するだけでカーソルの移動ができなくなってしまう。
[ESC]キーを押そうがどこをクリックしようがこの状態は解除できず、泣く泣くExcel終了→再度起動、でしのいでいた。

なんのことはない、「拡張選択オプション」って機能だったのね。
[F8]キーでON/OFF、ステータスバー右から6つ目のマスにちゃんと「拡張」って表示されてた。
IME使用時半角文字変換に使ってるからなー、[F8]。
文字入力していない時にカラ打ちしちゃってたんだろう。

わかればなんてことないんだけどけっこう不便していたので、メモ。

オートシェイプの連続描画

ツールバーに「直接」表示されているシェイプであれば、ダブルクリックで連続描画モードへ移行。
ふつーは一度書くとセル入力モードに戻るが、連続描画モードであれば続けざまに同じ図形を書くことができる。
[オートシェイプ]からサブメニューを出して選択するタイプのシェイプを使いたければ、ツールバーを右クリック→[ユーザー設定]-[コマンド]タブ-分類[オートシェイプ]から好きなシェイプを[図形描画]ツールバーにドラッグ追加してしまえばいい。
連続描画モードの解除は[ESC]キー。

なぜだか「Ctrl+クリック」で連続描画モードになると思っていた。もちろんならない。
どうしてそんな間違いを覚えていたのかなぁ。Excelが操作性を変えるとは考えにくいし、なんか別のソフトと勘違いしているんだろぅか。

2004年03月03日

Office クリップボードを無効にする方法

元ネタ:[OFF2000]Office クリップボードを無効にする方法
HKey_CURRENT_USER\Software\Microsoft\Office\9.0\Common\GeneralのAcbControlキー(DWORD)に「1」。有効にするなら削除または「0」。
そこまでやらないと無効にできないのか…ほとんどのユーザには不要な機能だと思うんだが。

Application.OnKey

Application.OnKeyで指定する文字キーは基本的に小文字であること。
たとえば「Ctrl+T」に機能を割り当てたい時、「^T」では動作しない。「^t」もしくは「^{t}」で動作する。
ただし、「Shift+Ctrl+T」のようにShiftを含めたショートカットの場合は、大文字でも動作する。

手動実行不可・他モジュールからの参照可な設定

モジュールの先頭に Option Private Module 。

元ネタ:Excelでお仕事!井上 治氏/Moug Excel VBA ML