「写経」用教材を作成する(Word)

「写経」用教材(?)を作成する Wordの「原稿用紙設定」機能 『一太郎』では、「文書スタイル呼び出し」(?)という機能で、コクヨ社の原稿用紙の書式を呼び出すことができる。んで、印刷するときに「升目を印刷する」というチェックボックスにチェックを…

Sentencesコレクションの要素の一番最初の「文字」が何文字目かを調べるFunction(Word)

Sentencesコレクションの要素の一番最初の「文字」が何文字目かを調べるFunction 分かりにくいタイトルですまぬ。 文の最初の文字の位置を調べたい。たとえば、 「……『ち~んw』とか言うな!」と言った。 みたいなときに、最初の文字「ち」の位置が知りたい…

記号は黒字、文字は白字にするマクロ

記号を黒字、文字を白字にする 前回 akashi-keirin.hatenablog.com を用いて、記号は黒字に、文字は白字にするメソッドを作った。 コード コードは次の通り。 リスト1 標準モジュール Private Sub changeFontColor(ByVal targetFont As Font) '……(1)' If is…

文章の中で使われる記号かどうかを判定するFunction(Word)

文章の中で使われる記号かどうかを判定するFunction ちょっとやってみたいことがあって、標題のようなFunctionを作ってみようと思い立った。 以前、 akashi-keirin.hatenablog.com 文字が漢字かどうかを判定するFunctionを作ったときは、ある意味非常に簡単…

全角ダブルクォーテーションの取り扱いはめんどくさい

全角のダブルクォーテーション 全角のダブルクォーテーションを文字列として扱うのに苦労したので、覚書的に記しておく。 普通に文字列として書いてみる 次のように書いてみる。 str = "“" この状態で、[Enter]をふわっと押してみる。すると、 おわかりだろ…

SentencesコレクションとCharactersコレクション(Word)

SentencesコレクションとCharactersコレクション SentencesコレクションとCharactersコレクションって、ちょっと変わっているよな、というだけの話。 Sentencesコレクションの要素はSentenceオブジェクトに非ず たとえば、コード・ウインドウ上で、 Dim targ…

インターフェイスに汚染されたWorksheetオブジェクトの末路

インターフェイスに汚染されたWorksheetオブジェクトの末路 前回 akashi-keirin.hatenablog.com インターフェイスを実装したせいでおかしくなってしまったWorksheetオブジェクトから、インターフェイスを取り外したらどうなるのか。 一枚の画像に語らせたい…

シートモジュールにインターフェイスを実装するのはやめた方がいい

シートモジュールへのインターフェイスの実装はやめた方がいいかも知れない 以前、 akashi-keirin.hatenablog.com で、シートモジュールにもインターフェイスを実装することができる、ということを示した。 んで、そのときに使ったブックを今日久しぶりに開…

ThisWorkbookモジュールの謎

ThisWorkbookモジュールの謎 タイトルはちょっと大げさです。 しかも、謎を解き明かす気などさらさらなく、豪快に投げっぱなしジャーマンです。 ThisWorkbookモジュールを改名する プロジェクト エクスプローラーで、ThisWorkbookモジュールを選択し、プロパ…

ThisWorkbookとは何者なのか

ThisWorkbookとは何者なのか 案外、初歩的なことがわかっていない、ということを痛感したので、後の戒めのためにも残しておくことにした。 「ThisWorkbook」を使うことは非常に多い。VBAの場合、コードが書かれてあるブックが他のブックを操作する場面という…

プリンタ名を返すProperty

プリンタ名を取得するProperty 前回 akashi-keirin.hatenablog.com の続き。 前回までに作成したInstalledPrinterクラスにPropertyを追加する。 追加するPropertyは、printerName(ByVal printerIndex As Long)とし、引数にインデックスを渡したら、該当する…

ポート名(?)付きのプリンタ名を返すFunction

ポート名(?)付きのプリンタ名を返すFunction 前回、 akashi-keirin.hatenablog.com 前々回 akashi-keirin.hatenablog.com の集大成。 コード プリンタの名前を渡したら、ポート名(?)付きのプリンタ名を返すFunctionを作ってみた。 前回同様、オブジェ…

プリンタの数を返すFunction

プリンタの数を調べるFunction Application.ActivePrinterにプリンタ名をセットしたくても、プリンタ名の後ろにくっついている「on NeXX:」の部分がわからないとセットできない。 同じプリンタに接続していても、端末ごとに「NeXX:」の部分が異なるので困る…

プリンタが存在するかどうかを判定するFunction

プリンタが存在するかを調べるFunction 軽量PDFを作成するためには、ExportAsFixedFormatメソッドを用いていたのでは限界があるので、 akashi-keirin.hatenablog.com このときのように、プリンタにJUST PDFなどの、PDF出力用プリンタを選択する。 その場合、…

「フォームコントロールのボタンオブジェクトのEnabledプロパティって、意味ないんじゃね?」問題

「フォームコントロールのボタンオブジェクトのEnabledプロパティって、意味ないんじゃね?」問題 前回 akashi-keirin.hatenablog.com の続き。 ボタンのEnabledプロパティをFalseにしてみる イミディエイト・ウインドウに activesheet.buttons(1).enabled =…

フォームコントロールのボタンオブジェクトをVBAで捕まえる

フォームコントロールのボタンを捕まえる マクロを呼び出すためのボタンをシート上に設置することがよくある。 シート上に設置したボタンをVBAで取得するにはどうすればよいのだろうか。 Nameプロパティを取得してみる ボタンの上で右クリックすると、 この…

クラスのPrivateメソッドもイミディエイトで実行できる

クラスのPrivateメソッドもイミディエイトで実行できる 再び超小ネタ。 クラスモジュールの準備 クラスモジュールを作る。 リスト1 クラスモジュール 'オブジェクト名は"HiddenBooks"' Private Function isHiddenBook( _ ByVal targetBook As Workbook) As …

個人用マクロブックはアドインに非ず

個人用マクロブックはアドインに非ず 「当り前だろバカ!」と思ったらスルー推奨。 IsAddinプロパティ イミディエイト・ウインドウに ?Workbooks("PERSONAL.XLSB").IsAddin と打ち込んで[Enter]をポチッ。すると、 Falseが返るのであった。 Windows.Countプ…

非表示ブックの数を返すFunction(Excel)

非表示Bookの数を返すFunction アドインとか、個人用マクロブックみたいな、ブックを開いたら裏で勝手に開いているブックの数と、オモテで正々堂々と開いているブックの数を別々に取得する必要があったので作ってみた。 考えかた Application.Workbooksコレ…

Split関数の裏技

Split関数の裏技 このとき、 akashi-keirin.hatenablog.com thom (id:t-hom) さんに教えてもらった。 Split関数の第2引数は省略できる 完全に思い込みで必須だと思っていた。 なるほど、Office VBA Reference の Split Function の項によると、 Syntax Spli…

セル範囲が格子状になっているか判定するFunction(Excel)

セル範囲が格子状になっているか判定するFunction いわゆる「Excel方眼紙」との戦いの一環。 セル結合とかガンガンズンズングイグイかまして作った表が、格子状になっているか判定する必要に迫られたのだった。 かつて誰かが作ったツールに不具合があって、…

[Range].MergeAreaプロパティの返り値の謎(Excel)

[Range].MergeAreaプロパティの返り値の謎 単にRangeオブジェクトのことがよく分かっていないだけかも知れないが、恥を承知で書く。 MergeAreaプロパティの返り値 こんなシートがあったとする。 J1セルとJ2セルが結合されている。 したがって、J1セル…

ファイル名に接頭辞・接尾辞を附加するFunction

ファイル名に接頭辞・接尾辞を附加するFunction ファイル名変換ツールを自作したときに、ついでに作った。 ファイル名に接頭辞を付けるFunction これは簡単。単純に先頭に文字列を追加するだけ。 リスト1 標準モジュール Public Function getPrefixedFileNa…

ファイルのコピーを作成する(FileSystemObjectオブジェクトのCopyFileメソッド)

ファイルのコピーを作成する FileSystemObjectオブジェクトを用いる。 ファイルのコピーを作成するFunction FileSysetmObjectオブジェクトのCopyFileメソッドをラップする。 参照設定でMicrosoft Scripting Runtimeにチェックを入れておく。 リスト1 標準モ…

ファイル名をチェックするFunction

不正なファイル名を検出するFunction 作ってみた。 コード コードは次の通り。 リスト1 標準モジュール Public Function hasProhibitedCharacter( _ ByVal fileName As String) As Boolean '……(1)' hasProhibitedCharacter = True '……(2)' Dim ar As Varian…

シートモジュールとインターフェイス

シートモジュールにインターフェイスを実装する 単なる実験。 インターフェイスを作成する クラスモジュールを挿入して、次のコードを書く。 オブジェクト名はIA1ValueShowableとする。 ちなみに、Instancingプロパティの値を「PublicNotCreatable」にしてい…

「オブジェクト型の定数」的なものを設定する

オブジェクト型の定数 定数は便利な仕組みだが、オブジェクト型の定数は指定できないっぽい。 Range型の定数を定義しようとしてみる 標準モジュールの宣言セクションに、次のように書いてみる。 で、[Enter]を押してみると、 こんな風に、コンパイルエラーっ…

Propertyを使って配列定数っぽいものを実現する

列挙体とPropertyを組みあわせて配列定数っぽくする 前回 akashi-keirin.hatenablog.com のつづき。 Propertyに配列をセットする Propertyプロシージャ内でArray関数を用いて、Propertyに配列を持たせるようにした。 標準モジュール Option Explicit Private…

配列は定数にはならない

配列を定数にすることはできるのか 配列は定数にできるのだろうか。 やってみた 標準モジュールの宣言セクションに、次のように書いてみた。 リスト1 標準モジュールの宣言セクション Option Explicit Private Const CONST_ARRAY As Variant = Array("アホ"…

Workbook.LinkSourcesメソッド(Excel)

Workbook.LinkSourcesメソッド 何気なくggっていたら、WorkbookオブジェクトのLinkSourcesメソッドというものを見つけた。 MicrosoftのOffice VBA Reference:Workbook.LinkSources Method (Excel) のページによると、 Returns an array of links in the wor…