小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

VB-TIPS

条件付き書式の使い方 of Excel

えーと、Excelのブックを開いて、とあるセルに入力すると、とある条件で、全く別のセルの色が変わるのです。 なんだ、簡単なVBAだなぁと思い、AltのF11でVBAを立ち上げると、どこにもVBAソースが無いのです!! メニューからそれっぽい機能を動かしても解か…

これだけは押さえておきたいエクセルの知識

すみません今回は、Perlでいつも陰ながらお世話になっている『ビンゴ中西』さんの人気記事の紹介です。 これだけは押さえておきたいエクセルの知識 前編 これだけは押さえておきたいエクセルの知識 後編 後編では、viを引き合いに出していますが、Windows系…

コマンドサーチ順位

LinuxやWindowsでのプロンプトから入力されたコマンドのコマンドサーチ順位をまとめてみました。 LinuxなどのUNIX系では、プロンプトから入力するコマンドのコマンドサーチ順位は、以下のようになっています。 コマンドをパス(絶対・相対)から指定(外部コ…

WEBからシステムコマンドを実行するには

Windows(IIS)でもLinux(apache)でもWEBからだとシステムコマンド実行やrootオーナーファイル作成などは出来ません。 実は、出来ないこともないのですが・・・それだとザルセキュリティになってしまいます。 しかし、どうしても必要な場合がありますよね。 そ…

標準モジュールコピー for VBA

ブックからブックへのシートコピーは、シートオブジェクトのcopyメソッドで、シート全体(内容データも制御データ)と、そしてシートモジュールまでもが一緒にコピーできます。 では、標準モジュール、クラスモジュール、フォーム、ThisWorkbookは、どうやっ…

VBAの確認ダイアログを出さないようにするには

CGIからExcelを制御するとExcelのプロセスがロックすることがよくあります。 原因はいろいろ沢山あるのですが、その一つに確認ダイアログを出そうとしてロックしている場合があります。 その時は、以下で書いたように『DisplayAlertsプロパティ』を『false』…

2種類のボタン for VBA

ExcelVBAでは、マクロ(VBA)をいろいろな部品(オブジェクト)に関係付けることができます。 たとえば、クリックとかいろいろなイベントで簡単にそのマクロを起動することができるのです。 もちろん、ボタンにもマクロを関連付けることができますが・・・実は…

ブックオブジェクトを取得するには for VBA

自ブックオブジェクトを取得するには、『Set Book1 = ThisWorkbook』です。 新規ブックオブジェクトを取得するには、『Set Book2 = Workbooks.Add』です。 Sub MacroZ() Dim Book1 As Workbook Dim Book2 As Workbook Set Book1 = ThisWorkbook '自ブックオ…

配列を動的に確保する for VBA

ExcelVBAで配列を動的に確保するには以下の感じです。 Sub MacroY() Dim strA() As String Dim int_i As Integer For int_i = 0 To 10 Step 1 ReDim Preserve strA(int_i) strA(int_i) = "AAA" & int_i Next For int_i = 0 To UBound(strA) Step 1 Debug.Pri…

アクティブシートにするには for VBA

ExcelVBAでシートをアクティブにするには以下の感じです。 Sub getActivateSheet(sheetName As String) Dim sheet As Worksheet Set sheet = Worksheets(sheetName) sheet.Activate End Sub Sub MacroX() getActivateSheet ("シート名") End Sub 『Worksheet…

ディレクトリ配下すべて削除するコマンド for Linux

VB-TIPSでLinuxコマンドのことを書くのもアレなのですが、とりあえず、メモしときます。 ディレクトリ削除コマンドの『rmdir』は、ファイルが存在しているディレクトリ配下、すべてを削除することが出来ません。 そのような、ファイルが存在しているディレク…

コンピュータ名の変更には気をつけろ!

配置転換や部署移動などでネットワークアドレスが変わったりする季節になりました。 すると、コンピュータ名も変更しないとならないケースに遭遇したりします。 大体、会社では共通のドメインに入っているPC(WINDOWS)で作業をしているので、ドメインの管理…

Excel2007とExcel2003の違い

最近、Excel2007を使い始めました。 Excel2003とUI(ユーザーインターフェイス)が全然違うし、2003のVBAが全然動かないし*1、動いてもメチャクチャ遅い。特にシートコピーは10倍以上遅い。 また、IIS経由でCGIからExcel2007にアクセスすると原因不明のロ…

シート全体を保護し、任意のセルだけ保護解除する for VBA

Excelのシートで入力項目のセル以外は、ユーザに変更されたくない・・・というケースは結構ありますね。 Excelには、「シートの保護」という機能があります。 普通の発想としては、ユーザに変更されたくないセルをロックするということになりますが・・・。 Excel…

ドラッグ&ドロップで引数を受け取る for VBScript

VBScript(例えばdandd.vbs)を引数付きで実行する時は、普通、コマンドプロンプトから以下のようにします。 C:\>dandd.vbs aaa.txt bbb.txt ccc.txt しかし実は、CUIでなくGUIでaaa.txt bbb.txt ccc.txtをドラッグし、dandd.vbsへドロップしても同じ効果に…

MsgBoxで改行するには

VB系のMsgBoxのメッセージを改行するにはvbCrを使います。 ◆VBScriptでのサンプルソース Option Explicit Dim Ans Ans = MsgBox("あなたは" & vbCr & "犯人ですか?", vbYesNo, "質問") '関数的呼び出し If Ans = vbYes Then MsgBox "あなたは" & vbCr & "犯…

Windows2003サーバーのIIS6でCGI-Perlを動かす時の留意点

Windows2003サーバーのIIS6でCGI-Perlを動かすには、WindowsXP-IIS5の設定プラス以下が必要です。 コンパネ->管理ツール->IISで、Webサービス拡張の『Perl CGI Extension』を許可にする。 あと、IIS6からはきめ細かな設定ができるようになっています。 詳し…

意外と役に立ちますよ!

私は今、ツールとしてExcelとPerlを使った仕事をしています。 ここ数日は残業で、分からないことは、ネットで調べるのですが、ほとんど「VB-TIPS」と「Perlノート]で用が足りるのです。 いやー、ExcelとPerlを使っているには、「VB-TIPS」と「Perlノート]の…

プログラマ的『針の穴を通す思い』

意味不明なタイトルですみません・・・。 たとえば、PCからWINDOWSサーバーへファイル(COM系)をアップロードし、そのファイルを元にCGIで処理をして結果をPCへ返したとします。 たったこれだけの、ごく普通のことですが、実は以下の条件をすべてクリアしない…

ExcelVBAでシート名を求める

シート数は「Worksheets.Count」で、シート名は「Worksheets(インデクス番号).Name」です。 これを元にシート名を求める関数を組んでみました。 ちなみに、インデクス番号は1オリジン(1から始まる)です。 また、シートを削除してもインデクス番号が歯抜…

ExcelVBAでワークシートモジュールのシート名を求めるには?

ワークシートモジュールで、そのシートのシート名を求めるには、以下のようにMeのNameプロパティから取得します。 Private Sub Worksheet_Deactivate() Dim strSheetName As String strSheetName = Me.Name End Sub ActiveSheetのNameプロパティで取得ができ…

EXCELでシート名を文字列として扱う制限について

たとえば、EXCELのHyperlink関数は、普通、以下のようにシート名を引数の一部に指定します。 =HYPERLINK("#Sheet2!H8", "S2_H8")で、上の例では「Sheet2」で大丈夫ですが、シート名に中括弧やスペースが入っていると以下のようなエラーになるのです。 参照が…

Excelで同一ブック内の複数シートを見比べるには

通常、ブックをクリックしてExcelを立ち上げ、次に別のブックをクリックすると、MDIの中に2つのブックなり、見比べることが可能です。 では、1つのブック内の複数シートを見比べるにはどうしたらよいでしょうか・・・。 答え、以下の手順で新たなウィンドウを…

VBAのサブルーチンスコープ

任意の標準モジュールでのサブルーチンは、デフォルトではPublic(グローバルスコープ)になります。 もちろん、Subの前にPublic でグローバルスコープを明示しても問題はありません。 また、そのサブルーチンを該当の標準モジュールだけに有効としたい場合…

内部統制とJ-SOX法

内部統制とは「Internal Control」の直訳で、企業内のリスクを把握し、リスクが発現しないように分析し、分析結果に対して対策をたて、対策を社員へ徹底すること。 2000年代初頭にかけてアメリカの巨大企業である「エンロン」や「ワールドコム」が会計不祥事…

VBAと秀丸での単語検索

たまに、VBAをやると忘れてしまうのでメモ。VBAのエディタ(VBE)で検索する時は、任意の単語の上にカーソルを置いて「Ctrl+F3」で、あとはF3で下、Shift+F3で上に任意の単語を検索します。 一方、秀丸は、任意の単語の先頭にカーソルを置いて「Ctrl+f」で、…

タッチパッドを軽く叩くと・・・

タッチパッドとは、ノートPCについているマウスの代わりになるポインティングデバイスです。 マウス派の私は、つい最近まで知らなかったのですが、子供(中2)がタッチパッド派で、タッチパッドを軽く叩くとマウスクリックと同じ効果になるのです。 知って…

VBAで複数行コメントをするには

普通の言語では、一行コメントはもちろん、複数行コメントも当然できるようになっています。 しかし、VBAでは言語仕様的に複数行コメントの機能がないのです(悲)。 その代わりにVBAでは一行コメント表現を使って、VBE(エディタ)機能で複数行のコメントが…

SNMP/SNTP/SMTPは紛らわしい・・・

SNMP/SNTP/SMTPは紛らわしいので整理しときます。 SNMP - Simple Network Management Protocol http://e-words.jp/w/SNMP.html SNTP - Simple Network Time Protocol http://e-words.jp/w/SNTP.html SMTP - Simple Mail Transfer Protocol http://e-words.jp…

TCP/IPプロトコルスタックとは

TCP/IPプロトコルスタックとは以下の4層のプロトコルのこと。 FTPやHTTP等のアプリケーション層(OSI参照モデルの5〜7層に対応) TCPとUDPのトランスポート層(OSI参照モデルの4層に対応) IPとICMPとARPのインターネット層(OSI参照モデルの3層に対応…