7.2.11

新規ブックをマクロなしで作成するサンプル

'******************************************************************************* 
'   新規ブックをマクロなしで作成するサンプル 
' 
'   作成者:井上治  URL:http://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!] 
'******************************************************************************* 
Option Explicit  
'******************************************************************************* 
'   新規ブックをマクロなしで作成するサンプル 
'******************************************************************************* 
Sub MAKE_NEWBOOK_WO_MACROS()
     Const cnsTITLE = "マクロなしブックの作成"
     Const cnsFILTER = "Excelワークブック (*.xls),*.xls"
     Dim xlAPP As Application
     Dim WBK1 As Workbook                    ' 本ブック
     Dim WBK2 As Workbook                    ' 作成ブック
     Dim strFILENAME As String
     Dim tblSH As Variant
     Dim lngLines As Long      ' 新規ブックに転出するシートの配列を作成

     tblSH = Array("Sheet1", "Sheet2", "Sheet3")
     Set xlAPP = Application
     Set WBK1 = ThisWorkbook                 ' 本ブック
     ' 「名前を付けて保存」のフォームでファイル名の指定を受ける
     xlAPP.StatusBar = "出力するファイル名を指定して下さい。"
     strFILENAME = xlAPP.GetSaveAsFilename(InitialFilename:="SAMPLE.xls", _
         FileFilter:=cnsFILTER, Title:=cnsTITLE)     
     ' キャンセルされた場合は以降の処理は行なわない
     If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub
     If strFILENAME = WBK1.FullName Then
         MsgBox "本ブックとは違うファイル名を指定して下さい。",, cnsTITLE
         GoTo MAKE_NEWBOOK_WO_MACROS_EXIT
     End If     
     
     ' 指定シート(複数)を新規ブックにコピーする
     WBK1.Worksheets(tblSH).Copy
     Set WBK2 = ActiveWorkbook               ' コピーした新規ブック
     ' 処理ブックを保存
     WBK2.SaveAs Filename:=strFILENAME
     WBK2.Close False
     Set WBK2 = Nothing
MAKE_NEWBOOK_WO_MACROS_EXIT:
     Set WBK1 = Nothing
     Set xlAPP = Nothing End Sub
  '----------------------------<<>>--------------------------------

24.1.11

現在、ログオン要求を処理できるログオンサーバはありません

「現在、ログオン要求を処理できるログオンサーバはありません」の対処例

ファイル共有時に聞いて来るってことは、その際のアカウントがActiveDirectoryのものになってるわけですね。

エクスプローラ-ツール-ネットワークドライブの切断から全ての共有を切り離して、PC再起動後、「ネットワークドライブの割り当て」で「異なるユーザー」を明示的に共有先マシンのローカルユーザーとして指定してやれば、おさまりそうな気がしますが。

8.9.10

[Windows 7編]ネットワーク設定を標準で使ってはいけない

 Windows 7のネットワーク設定を標準で使ってはいけない。標準では「SNP(Scalable Networking Pack)」と呼ばれるネットワークを最適化する機能が有効化されている。この「SNPが有効化」されている設定のままPCを動作させると、ネットワーク処理が不安定になったり、ネットワーク処理とは関係ないアプリケーションの処理に影響を与えたりする可能性があるからだ。

 SNPとは、通常はPC上のプロセッサが行っているネットワーク処理を、PC内部のNIC(ネットワークインタフェースカード)に担当させるなどしてプロセッサの負荷を下げる機能だ。

ハードにネットワーク処理を分担させるSNP

 SNPは三つの機能からなる。「SNPが有効」とは三つのうち、少なくとも一つが有効化していることを指す。

(1)TCP Chimney Offload
 TCPのネットワーク制御をプロセッサからNICにオフロード(負荷を軽減)する機能。この機能を有効にすると、大量データの送信処理や、通信データの信頼性をチェックするための値(チェックサム)の計算などを、NIC上のTOE(TCP Offload Engine)と呼ぶモジュールで処理する。プロセッサにかかるネットワーク処理の負荷を軽減できる。

(2)Receive Side Scaling(RSS)
 TCPの受信制御を効率化する機能。この機能を有効にすると、通常は一つのプロセッサコアで行う受信制御を、複数のコアが分担して行うようになる。特定のプロセッサコアへの負荷を分散できる。

(3)Network Direct Memory Acc

ess(NetDMA)
 NICからのメモリーアクセスを効率化する機能。この機能を有効にすると、NICに処理をオフロードしてもプロセッサを経由しなければできなかったメモリーアクセスが、直接できるようになる。プロセッサの負荷の軽減と、NICでの処理の高速化が図れる。

 以上のような機能を使うと、プロセッサの負荷を軽減し、ネットワークのパフォーマンスはより最適化されるはずだ。しかし実際には、SNPを有効化すると、特定のネットワーク操作でパフォーマンスが低下するといった不具合が発生するケースが起こっている。また、SNPを有効化していたことで、ネットワークパケットの取りこぼしが発生し、正常に通信できないという問題も発生している。

 そのほか、アプリケーションが正常に働かなくなることもある。その背景には、SNPの三つの機能が「カーネルモード」で処理されることがある。カーネルモードとは、Windows 7で管理するすべてのハードウエアに直接アクセスできる高い特権

のこと。カーネルモードで動作するということは、メモリーにも自由にアクセスできるということだ。

 NICやネットワークドライバが大量のメモリー領域を占有することもできてしまう。もしそうしたことが起これば、メモリーリークが発生したり、アプリケーション用のメモリー領域が不足したりして問題が発生する。

 残念ながら現在(2010年9月)のところ、SNPを安心して使える状況にあるとはいえない。今後の改善は見込めるが、システムの安定運用を重視するなら、当面はSNPの利用を避けたほうがよさそうだ。どうしても使いたい場合は、ハードウエ

アベンダーが提供しているネットワークドライバやNICが正常に作動し、さらにそれらとマイクロソフトが提供するWindows 7との連携がうまくいくかどうかを検証しておこう。

コマンドでSNPを無効化

 SNPを無効化するには、まずSNPがシステムで使用されているのかどうか確認するところから始める。Windows 7の「コマンドプロンプト」で以下のコマンドを入力すると、SNPの各機能が有効化され

ているかどうかを確認できる。

netsh int tcp show global

 確認するのは、「Receive-Side Scaling状態」「Chimney オフロード状態」「NetDMA 状態」の三つだ(図1)。ここが「enabled」「automatic」となっていたら、有効になっていることを示す。有効になっていると分かったら、コマンドプロンプトに以下のコマンドを使用してSNPを無効化する。

図1●「netsh int tcp show global」の実行 結 果(Windows 7のネットワークの標準設定)

・TCP Chimney Offload の無効化

netsh int tcp set global chimney=disabled

・Receive-Side Scaling(RSS)の無効化
netsh int tcp set global rss=disabled

・Network Direct Memory Access(NetDMA)の無効化
netsh int tcp set global netdma=disabled

 上記のコマンドを入力した後は、前述のコマンドでシステムの設定を確認し、状態がいずれも「Disabled」になっていれば無効化が完了する。さらに、ハードウエア側の設定変更も必要になる。ハードウエアベンダーが提供する情報を参考にして無効化するのも忘れずに行おう。

瀧澤 俊臣(たきざわ としおみ)
日本ヒューレット・パッカード株式会社 テクノロジーサービス事業統括 サポートデリバリ統括本部 グローバルソリューションセンター本部 ミッションクリティカルサポート二部 コンサルタント
1996年、日本DEC入社。コンパックコンピュータを経て、現在、日本ヒューレット・パッカード勤務。IAサーバ、マイクロソフト製品をメインとしたミッションクリティカルなお客様向けに、運用提案や保守など、システム全般にわたるトータルサポートを提供している。


http://itpro.nikkeibp.co.jp/article/COLUMN/20100824/351391/

8.6.10

オラクル海外データインポート


システムの環境変数 に NLS_LANGを設定

28.4.10

ハードディスクやSSDを最適化する - Windows 7実践ナビ:ITpro

ハードディスクやSSDを最適化する - Windows 7実践ナビ:ITpro: "ハードディスクやSSDを最適化する
記事一覧へ >>
5 4 3 2 1 <<
デフラグやキャッシュの機能を無効にする

 まず自動デフラグのオフは、図4の「ディスクデフラグツール:スケジュールの変更」ダイアログで、「スケジュールに従って実行する」のチェックを外せばよい。「SSD」も「デフラグ」は行った方が理論上はよいはずだが、毎週はさすがに多すぎる。1カ月単位でチェックして、もし断片化が20%を超えているようなら手動で実行する程度でよいだろう。

 次に「Pefetch」の機能を無効にしてみよう。「スタート・メニュー」の「検索ボックス」に「regedit」と入力し、検索結果をクリックしてレジストリ・エディタを起動する。レジストリ・エディタの画面左側のツリーから「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters」と階層をたぐり、その右側に表示される「EnablePrefetcher」をダブルクリックする(図9)。表示されたダイアログ内の値が有効を表す「1」になっているので、「0」に変更すればPrefetch機能が無効になる。
図9●Prefetch機能をオフにする
Prefetch機能をオフにするには、レジストリ・エディタからHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersを開き、右側の項目にある「EnablePrefetcher」の値を0にする。
[画像のクリックで拡大表示]

 さらに「SuperFetch」を無効にしてみよう。「スタート・メニュー」にある「検索ボックス」に「サービス」と入力し、その検索結果から「ローカルサービスの表示」をクリックする。表示された画面の右側の一覧[SuperFetch]サービスをダブルクリックしてプロパティのダイアログを開き、[全般] タブの[スタートアップの種類] を確認する(図10)。ここが[自動(遅延開始)]になっていて、サービスが「開始」されているようなら「無効」を選択する。これで、SuperFetch機能が無効になる。
図10●「SuperFetch」機能を無効にする
一覧表示されたサービスの中から[SuperFetch]サービスのプロパティを開き、サービスが開始しているようなら「無効」に変更する。
[画像のクリックで拡大表示]
「Trim」コマンドの発行を確認する

 最後に、Windows 7で追加された「Trim」コマンドについて紹介しよう。「SSD」は、データを書き込む際に、前のデータを消去してから書きこむ。つまり、データが必要なくなった時点で先に消去してしまえば、必要になった際に消去してから書き込むより効率が上がる。そこで、Windows 7では必要なくなったブロックを「Trim」コマンドでデバイスに送り、消去を促している。

 Windows 7でSSDを利用しているユーザーが「Trim」コマンドを発行しているか確認したい場合は、管理者権限で起動したコマンド・プロンプトで「fsutil behavior query DisableDeleteNotify」と入力して[Enter]キーを押す(図11)。「DisableDeleteNotify =」の後が「1」なら「無効」、「0」なら「発行」していると確認できる(図11)。
図11●「Trim」コマンドの発行を確認する
管理者権限で起動したコマンド・プロンプトで「fsutil behavior query DisableDeleteNotify」と入力して、「DisableDeleteNotify = 0」と表示されればTrimコマンドが発行されている。
[画像のクリックで拡大表示]"

31.3.10

Oracle 11gからデフォルトでパスワード有効期限付きに - + YOSHIKI & Violet UK FAN SITE -Blind Tears- 管理人の日記 +

ORA-28001のパスワード期限切れが発生していた。ネットで色々調べたところ、Oracle 11gからデフォルトでパスワードに有効期限180日が付いていることが判明。

10gまで通り(パスワードは無期限有効)にする設定、ロックされたアカウントを復旧させる設定をメモっておく。
1. SQLPlusを起動:
   sqlplus /nolog
2. SYSDBAでログイン:
   conn /as sysdba
3. アカウントのプロファイルがデフォルトのままである場合は、デフォルトプロファイルの設定でパスワードを無期限有効に変更:
   alter profile default limit password_life_time unlimited;
4. ユーザのパスワードを再設定:
   alter user ユーザ名 identified by 新パスワード;
5. ロックされていたアカウントをロック解除
   alter user ユーザ名 account unlock;


これでアカウントは復旧したのだが、OEMが依然としてログインできない状況のまま。。インスタンスへのエージェント接続部にORA-28001が表示されたまま。
原因はOEMで使用されるアカウント(SYSMAN, DBSNMP)についても同様にパスワードの有効期限切れが発生していたためだった。これらについてもパスワードを再設定する必要あり。
1. sqlplus /nolog
2. SYSMANでログインすると、パスワードの再設定を要求されるので、再設定
  connect sysman/旧パスワード
3. DBSNMPについても同様
  connect dbsnmp/旧パスワード"

24.2.10

2007-05-07 - Cassiopeiaの日記

2007-05-07 - Cassiopeiaの日記より
: "■[Excel VBA]Excelのコンテキストメニュー(右クリックメニュー)に独自のメニューを追加する。

■使用上の注意

RemoveCellMenu()で追加したメニューを削除しないと、どんどん同じメニューが追加されてしまいます。 あなたが実際に使うマクロを創るときには追加したメニューを自動的に削除してから終了するようにするなり、すでに独自メニューがあるときはさらに独自メニューを追加しないようなコードを追加してください。

'AddCellMenu()で独自のメニューをコンテキストメニュー
'(右クリックメニュー)に追加する。
'RemoveCellMenu()で追加したメニューを削除する。


Sub AddCellMenu()
Dim MyCellMenu As CommandBarControl

Application.CommandBars('Cell').Controls.Item('切り取り(&T)').BeginGroup = True
'区切り線を追加しています。

Set MyCellMenu_01 = CommandBars('Cell'). _
Controls.Add(Type:=msoControlButton, before:=1)

With MyCellMenu_01
.Caption = '電卓起動!'
.FaceId = 50
.OnAction = 'ExecCalc'
End With

Set MyCellMenu_02 = CommandBars('Cell'). _
Controls.Add(Type:=msoControlButton, before:=1)

With MyCellMenu_02
.Caption = '数字だったら2倍する!'
.FaceId = 102
.OnAction = 'NumW'
End With

End Sub

Sub RemoveCellMenu()
CommandBars('Cell').Controls.Item('電卓起動!').Delete
CommandBars('Cell').Controls.Item('数字だったら2倍する!').Delete
CommandBars('Cell').Controls('切り取り(&T)').BeginGroup = False
End Sub

Sub ExecCalc()
Shell 'calc'
End Sub

Sub NumW()
If IsNumeric(ActiveCell.Value) Then
ActiveCell.Value = ActiveCell.Value * 2
Else
'zzz...
End If
End Sub"

セル右クリックメニュー

次のプロシージャは、セルのコンテキストメニューを追加するものである。セルの右クリックから[売上データ読み込み]を選択したとき、「Proc_Uriage1」プロシージャが実行されるように、コマンドを割り当てたい。

Sub Sample()
   With Application.CommandBars("Cell").Controls.Add
      .Caption = "売上データ読み込み"
      .OnAction= "Proc_Uriage1"
      .Visible = True
   End With
End Sub