Excel VBAで、テーブルのフィルターとフィルターを解除するには、「.AutoFilter」と「.ShowAutoFilter」を使います。「見出し」を使ってフィルターすると、列を移動しても、同じVBAコードでフィルターできるので便利です。VBAでのテーブル操作をマスターしていきましょう。
「糞VBAコードのメンテナンスが減りますように。なむなむ」 VBAは、非常に古い(VB6ベース)の言語なので、既存のコードは、非常に読み難い物が多いです。しかし、最近、ちょっとしたことをVBAで書いちゃうというソリューションは、案外一般的になりつつあるように思います(これ自体は悪いことではないと思う)。新しく書くVBAのコードをどう書くべきか?という自分なりの意見を纏めてみました。これは、VBAで完全なOOPをしろと言っているものではなく、単純な構造化された小さい関数を組み合わせてプログラムを書く方針(関数型言語のことではない)を勧めるものです。 変数宣言を強制する! これは、自分のため。とにかく書く。オプションで設定しておけば自動で挿入される。 変数宣言は、必要になったところで宣言する! そのコードを読む人に、いちいち、関数の先頭までスクロールさせるな。変数の有効範囲をなるべく狭くするこ
FCのようなコマンドライン・ツールを実行する場合には、Execメソッドを利用する方法もある。Execメソッドも、パラメータとして実行するプログラムを指定する点ではRunメソッドと違いはない。しかし前述したとおり、Execメソッドを利用すれば、終了コードの取得だけでなく、標準入出力を通してコマンドにオプションを与えたり、コマンド実行の結果を取得したりできるようになる。 またExecメソッドは、戻り値としてWshScriptExecオブジェクトを返す。前述したクラス構成図から分かるとおり、WshScriptExecオブジェクトにはStatus、StdIn、StdOut、StdErr、ExitCode、ProcessIDの6つのプロパティがある。
それでは、WshShellのメソッドやプロパティについて詳しく見ていくことにしよう。まずはRunメソッドとExecメソッドである。これら2つは、プログラムを起動するためのメソッドである。 RunメソッドとExecメソッド Office製品やInternet Explorerなど、COMオブジェクトとして提供されているものは、WScriptオブジェクトのCreateObjectメソッドやGetObjectメソッドを利用してオブジェクトを生成し、生成したオブジェクトを直接操作した方がきめ細かい処理が行えるが、この方法はCOMオブジェクトが提供されないプログラムでは使えない。Windows標準のテキスト・エディタであるメモ帳や、比較的小規模のプログラムでは、COMオブジェクトとしてのアクセス方法が提供されていない場合が多い。これに対しRunメソッドやExecメソッドでは、実行形式のファイルさえあ
またもや「Excel VBAと関係ねぇじゃねーか!」と言われそうですが、今回はMS-DOSコマンドの標準出力を変数に取得する方法を解説します。これはもう、Excelとは関係ないVB系のネタなんですね。ただ実行環境がExcelってだけで(^^; ま、いーや書いちゃえ。MS-DOSって何のことだかわからない人は、自分で調べてください(^^; なお、ここではWindows XP Home Editionを例に解説します。 MS-DOSのコマンドには今でも便利に使えるものが多いですし、何よりネットワークを管理されている方は必須コマンドです。VBやVBAからMS-DOSコマンドを実行するときには、問題が2つあります。1つめはShell関数で起動できないことです。MS-DOSコマンドはいわゆるDOS窓で起動する仕組みになっていますので、Shell関数では起動できません。2つめの問題は、実行結果もDOS
>また、文字の前後についている、"(ダブルコーテーション)を外して、 以下のコードでは、ダブルコーテーションが必要な場所には付与されますが、それはCSVを正しく出力するために必要があるからです。例えば、改行コードを含むデータをCSV出力すると、このダブルコーテーションが無いとうまく出力されません。 コードですが、勿論 Open で開いて一行ずつ処理していってもOKなのですが、EXCELにはCSV出力機能があるのだから、これを利用しました。コードが単純化されます。 また、処理件数が多い場合、VBAで自力でゴリゴリやるよりは、コンパイルされたEXCELの機能を利用する方が高速です。 Sub EXPORT_CSV() Dim TargetArea As Range Dim WB As Workbook '対象範囲を定義 Set TargetArea = Sheets("Sheet1").Rang
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く