例えば、テーブル名が全て "public_"で始まっている場合に "public_"を削除する方法。
VBAの最近のブログ記事
続きを読む: Access VBA テーブル名を一括変更するマクロ
Excel VBAで、Writeステートメントを使ってCSV出力すると、日付が #2008-01-01# のような形式になってしまいます。
このCSVをAccessにインポートするのは大変です。
以下のような自作関数を使って変換しましょう。
現在のプレゼンテーションファイルの場所(パス)を取得する方法。
MsgBox ActivePresentation.Path ExcelやPowerPointやWordでVBAを実行するときに、マクロの実行時間を測定する方法。
ストップウォッチが手元にないときはこのコードを使いましょう。
マクロを使ってCSVでファイル保存をしたときなどに、下記のような確認・警告メッセージがでて、いちいち「はい」を押さないと先に進まないことがあります。
続きを読む: [Excel VBA]警告・確認ダイアログを非表示にする
エクセルシートをタブ区切りtxt形式でエクスポートするマクロ。
書き方は前回の記事(CSVで保存)とほぼ同じです。
エクセルシートをCSV形式でエクスポートするマクロ。
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のデータを取りに行くというのが必要なときもあります。
たしかに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!に良いやり方が載っていました。
調べてみたら、教えてGoo!に良いやり方が載っていました。
foreachを使ってますか?
初級プログラマに意外と知られていないforeach。
何が便利かというと、
カウンタや添え字(index)を意識せずに、配列の全要素に対してアクセスし、何らかの処理をすることができます。
foreachを使わない場合、
for(i=0;i<=n;i++){ print 配列名[i]; }
のように、配列の要素数とカウンタを使ったダサイ記述をするハメになります。一方、foreachを使えば楽ができます。
Excel VBAでマクロを実行したら、FormのShowメソッドの箇所でマクロが勝手に止まってしまうという現象が起きました。
Excelの画面でマクロが動かないな、と思ってVBEの画面に切替えたら、Form.Showの行が黄色くなって、中断モードになっています。
コンパイルエラーでもなく、実行エラーでもない。エラーじゃないのでエラー番号もでない。
Excelの画面でマクロが動かないな、と思ってVBEの画面に切替えたら、Form.Showの行が黄色くなって、中断モードになっています。
コンパイルエラーでもなく、実行エラーでもない。エラーじゃないのでエラー番号もでない。
