スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
拍手する
↑ポチして頂けると、とても励みになります

EXCEL.EXEを独立したインスタンスとして起動させる設定

ちょっとここ数日の暑さ・・殺人的という表現があうのかも。
良く言われる水分補給、次の点に注意してしっかり補給してくださいね。

1.「喉が渇いた」と感じる前に →感じた時点で既に遅い、です。
水分の吸収は主に小腸・大腸からになりますので体内の浸透圧が変化するには少し時間がかかる→「喉渇いた~」がしばらく続くため短時間にどんどんがぶ飲み→そして実は飲み過ぎ→お腹壊した!の流れに。。。
2.ただの水より浸透圧調整水やスポーツ飲料がベター →汗は水だけで無くミネラルも排出してしまうため、ミネラル補給ができるスポーツドリンクは良いですね。そして、生き物の持つホメオスタシスを利用して吸収速度を高めた浸透圧調整水は急速回復にはもってこいでしょう。


今回はExcelのインスタンスを"ファイル毎に切り離して起動させる"方法の私的メモです。
Excelはスタートメニューから本体を起動すると、それぞれが別のインスタンスで起動します。
しかし、例えばデスクトップに保存した.xlsファイルをダブルクリックすると
これは新規インスタンスでは無く、最初に起動したインスタンスに接続して起動します。
実はこれが弊害となるケースに直面したのでした・・
普通は、右クリックメニューで必要な時に別インスタンスで開くようにすることが多いですが、
今回は拡張子「.XLS」に関連づけられた既定コマンドを書き換えます。経緯はどうでもいいので後述。



OS:Windows XP SP3
環境:Microsoft Office 2000

<.xlsファイルを開いても、常に異なるインスタンスで独立して起動させる>
1.コントロールパネルの「フォルダ オプション」を開く
2.拡張子が「XLS」の項目を選択し、「詳細設定」ボタンをクリック
folderoption.jpg

3.太字の既定コマンド「開く&O」を選択し、「編集」ボタンをクリック
configmaincommand.jpg

4.「アクションを実行するコマンド」の最後を[/e "%1"]に変更
5.「DDEを使う」フレームの「DDEメッセージ」を[]に変更
changemaincommand.jpg

これで、普通にファイルをダブルクリックしても常に新規EXCELで起動します。
independentinstances.jpg

gdgd経緯は下に。

続きを読む

スポンサーサイト
拍手する
↑ポチして頂けると、とても励みになります

ワークシート上のコントロールの一覧を取得して操作する

お酒はほどほどにしなければ・・おいしいんですけどね!
頭痛さえなければ。。
うぅ・・

今回はExcelのVBAでワークシート上に設置したコントロールを列挙して操作する方法の私的メモです。
フォームコントロールをコンテナとして使用し、Controlsコレクションから列挙する方法はあるのですが、
基本的に私はVBAではフォームを使用しないため、別の方法はないかと長いこと悩んでいました。
VBAではCheckBoxが10個とか、少し規模が大きくなると一気にコーディングが煩雑で難しくなります。
本当はVBのようにコントロール配列が使えれば苦労はないのですが、
VBAでは何故かコントロール配列が使えないのですから・・・




OS:Windows 7 x64 Ultimate Edition
環境:Microsoft Office 2000, 2003 SP3

<ワークシート上のコントロールの一覧を取得して操作する>
下記コードでワークシート上のコントロールを全て取得、必要なものを操作します。

'シートの指定はインデックスを使用することもできます。
'下記の場合、「Sheet1」は操作が必要なシート名に合わせて変更します。
Dim objtmp as object
For Each objtmp in Thisworkbook.Worksheets("Sheet1").OLEObjects
   If objtmp.Name = "CheckBox1" Then
     objtmp.Object.Value = True
   End If

   If objtmp.Name = "TextBox1" Then
     objtmp.Object.Text = "AIUEO"
   End If

   If objtmp.Object.Caption = "Error" Then
     objtmp.Object.Caption = "OK"
   End If
Next

今回の最大のポイントは、取得したobjtmpからは直接操作ができないという点でした。

objtmp.Text = "AIUEO" ⇒ 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。

これを、下記のように書き換えるとすんなり動きます。
objtmp.Object.Text = "AIUEO" ⇒ OK!

これに気づくのに、非常に長い時間がかかってしまいました。
Google先生で検索しても、表題のような検索ワードではなかなか見つけられなかったのです。
ただ、検索文字の候補に上がってくるほど悩んでいる人も多いみたいなので、ここにメモしておきました。

--
ちなみに、オートシェイプに対してはShapesコレクションがあり、
これで似たような形のコードが書けそうになるのですが、
当然シェイプクラスのインターフェイスには操作に必要なメンバが準備されていません。
(というかShapesでも普通にコントロールが列挙されてくることに驚きました)

というか・・Office2007の次は操作を元に戻してくれると良いですね。
いつまで経っても移行できません。

拍手する
↑ポチして頂けると、とても励みになります

マクロからVLOOKUPを使う

最近よく仕事でExcelのマクロを組むことが増えました。
個人的に仕事効率をUPさせるため、同じ操作を自動化するためのツールを作っています。
このブログにはその他の記事と違い、自分の覚え書き用として記録を残そうと思います。

基本的に自分で使って出会ったエラーやクセなどをメモりますが、
メモ対象の機能やエラーはそれが全てではなく、
また全ての環境での同一現象の保証はできません。
ExcelのVBAにはバグもあるようで、バージョン毎に挙動が怪しくて・・
あまりに怪しい物は正攻法を使わないこともあります。

関数の使い方などは自分が使った方法だけで、全ての引数の説明もしていません。
そして、何より、探せば他所で詳細に解説されているものが多いのと、
記事風にするつもりが無いので書き方はぞんざいになります。悪しからず(^^ゞ
この記録は、自分が必要な使い方をダイレクトに思い出せるためのものです。

勿論、もしお探しのものとぴったり一致するようなものがあれば、参考にしてくださいm(_ _)m




OS:Windows 7 x64 Ultimate Edition
環境:Microsoft Office 2003 SP3

<マクロからVLOOKUPを使う>
マクロからシート上の関数を使えることを使えることをこの間気づきました。

・Application.WorksheetFunctionオブジェクトを使う

tmpVar = Application.WorksheetFunction.VLookup(Arg1, Arg2, Arg3, Arg4)
もしくは
Application.WorksheetFunction.VLookup Arg1, Arg2, Arg3, Arg4

 Arg1=検索する文字列("aa" or aaなど変数)
 Arg2=検索する範囲(Range("$A$1:$C$300" or "定義した名前" or "A:C"))
 Arg3=検索する範囲の左端を1とし、何列目のセル値を読むか(1~など)
 Arg4=Arg1でヒットしない場合の最も近い値を示す行から取得する(True(1) or False(0))
  ただし、左端データが昇順に並べ替えられていないと正しく動かない┐(´ー`)┌

○頻繁に遭遇するエラー
Arg1と一致するデータが無い場合

Err.Number = 9
Err.Description = "インデックスが有効範囲にありません"

Err.Number = 1004
Err.Description = "WorksheetFunctionクラスのVLookupプロパティを取得できません。"

検索するArg1と、検索される値の型を合わせること。
ワークシートで11(書式:標準)のセルは"11"ではなく11で検索しないとヒットしない。

○使用例
On Error Goto ErrVL
Dim a as String
a = WorksheetFunction.VLookup("test", Range("$A$1:$E$100), 2, False)
MsgBox "testが見出しの行のB列の値は" & a & "です。"
Exit Sub

ErrVL:
Debug.Print "testというデータはA1:A100に見つかりませんでした。"
拍手する
↑ポチして頂けると、とても励みになります
Blog Search Form
Access Counter
since 2009/03/22
thank you for coming to my blog...
World Community Grid
参加中。ランク1万台を脱するのはいつの日か・・
カテゴリ
最新記事
・・新着順に5件表示中・・
コメント
月別アーカイブ
RSSリンクの表示
リンク
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。