VBAの最近のブログ記事

例えば、テーブル名が全て "public_"で始まっている場合に "public_"を削除する方法。

Excel VBAで、Writeステートメントを使ってCSV出力すると、日付が #2008-01-01# のような形式になってしまいます。
このCSVをAccessにインポートするのは大変です。
以下のような自作関数を使って変換しましょう。

現在のプレゼンテーションファイルの場所(パス)を取得する方法。

MsgBox ActivePresentation.Path 

ExcelやPowerPointやWordでVBAを実行するときに、マクロの実行時間を測定する方法。

ストップウォッチが手元にないときはこのコードを使いましょう。

マクロを使ってCSVでファイル保存をしたときなどに、下記のような確認・警告メッセージがでて、いちいち「はい」を押さないと先に進まないことがあります。

エクセルシートをタブ区切りtxt形式でエクスポートするマクロ。
書き方は前回の記事(CSVで保存)とほぼ同じです。

エクセルシートをCSV形式でエクスポートするマクロ。

access-query.JPGExcel VBAからAccessのクエリ(削除クエリや更新クエリ)を実行したい場合があります。
その場合も、前回の記事と同様にADOを使うと簡単に実現できます。

←実行したいアクションクエリ

PowerPoint VBAの使い方

パワーポイントで、文字がテキストボックスからはみ出しているときに、強制的にフォントサイズを小さくしてボックス内に収めたいことがあります。

VBAでゼロパディング(1→001に変換するやつ)のやり方を紹介します。
Excel, Access, Powerpoint等、Office製品の全てで共通に使えます。

1 を 001に変換してみる

Sub test()
MsgBox Right(1 + 10 ^ 3, 3)
End Sub

上記のように書くと、「それってAccessのエクスポート機能を使えばいいじゃん」と思われるかもしれません。
たしかにAccessを開いて、テーブルやクエリをエクセル形式でエクスポートするやり方もあります。

しかし、Excelファイルを開いた上で、そこからAccessのデータを取りに行くというのが必要なときもあります。
コレクションに、ある値(メンバー)が既に存在するかをチェックする関数
重複チェックなどに便利です。
Function isMemberOfCollection(col As Collection, query) As Boolean
    Dim item
    
    For Each item In col
        If item = query Then
            isMemberOfCollection = True
            Exit Function
        End If
    Next
    
    isMemberOfCollection = False
    
End Function
使うときは、
If isMemberOfCollection(myCollection, myValue) Then
    MsgBox "エラー:" & vbLf & vbLf _
     & "値が重複しています。" &  myValue
    End
End If
のような形で呼び出します。
エラー処理などに使えます。
VBAでMsgBoxを表示すると、OKボタンを押すまで処理が中断してしまうので不便だなーと思っていました。
調べてみたら、教えてGoo!に良いやり方が載っていました。

foreachを使ってますか?

初級プログラマに意外と知られていないforeach。

何が便利かというと、
カウンタや添え字(index)を意識せずに、配列の要素に対してアクセスし、何らかの処理をすることができます。

foreachを使わない場合、

for(i=0;i<=n;i++){ print 配列名[i]; }
のように、配列の要素数とカウンタを使ったダサイ記述をするハメになります。
一方、foreachを使えば楽ができます。
Excel VBAでマクロを実行したら、FormのShowメソッドの箇所でマクロが勝手に止まってしまうという現象が起きました。
Excelの画面でマクロが動かないな、と思ってVBEの画面に切替えたら、Form.Showの行が黄色くなって、中断モードになっています。
コンパイルエラーでもなく、実行エラーでもない。エラーじゃないのでエラー番号もでない。

人気記事

このアーカイブについて

このページには、過去に書かれたブログ記事のうちVBAカテゴリに属しているものが含まれています。

前のカテゴリはAccessです。

次のカテゴリはWSHです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近の人気記事