VBA-マクロのパスワード解除とは?(VBAProjectパスワードのこと) マクロのパスワード解除とは、「VBAProject パスワード」の解除って意味ですね。

サイト全体の更新情報・お知らせ 2022/10/24 LAMBDA関数と6つのヘルパー関数の解説を追加しました。 さらに、配列を便利に扱える関数等も多数追加されましたので、これらの関数の解説も追加しています。 LAMBDA以降に追加された関数 , LAMBDA以降の新関数の問題集 2022/09/26 数式を入力したセルから結果があふれて隣接したセルにも出力される新機能のスピル。 スピルの基礎から応用までのスピル問題集を追加しました。 2020/10/20 新シリーズ!ツイッター連動企画「VBA100本ノック」を開始しました。 ツイッターで1日1本出題し翌日解答VBAを出します。 2021/03/03に最後の100本目を出しました。 2020/09/06 新シリーズ「Python入門:プログラミング事始め」を開始しました。 人気のプログラミング言語Pythonを初心者向けに基礎から解説。
はじめに ADODB.StreamオブジェクトのSaveToFileメソッドでUTF-8形式のファイルを作成した場合、ファイルの先頭にBOM(Byte Order Mark)が付加されてしまいます。 この記事では、BOMを付加せずに、UTF-8のファイルを作成する方法を紹介します。 2009.12.13追記 一時ファイルを作成しなくても、BOMなしのUTF-8ファイルを出力する方法が見つかりました。 BOMなしのUTF-8ファイルを作成するには、まずBOM付きの一時ファイルを作成します。そして、一時ファイルをバイナリモードで読み込み、BOMの部分(先頭3バイト)を読み飛ばした4バイト目からバイナリモードで目的のファイルに書き込むという手法を用います。 一応説明しておくと、一度Streamに対してUTF-8でデータを書き込みます。その後で、バイナリとして最初の3バイト(BOM分)を読み飛ばし
VBAでは画面描画を停止すると実行が早くなることは広く知られているが、実はあと2つ、設定すると有効なオプションがある。 手動計算と、イベントの抑制だ。 それぞれ、次のようにして設定する。 Application.ScreenUpdating = False '描画停止 Application.EnableEvents = False 'イベント抑制 Application.Calculation = xlCalculationManual '手動計算 With文で一度に設定しても良い。 With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With 設定を解除するには次のようにする。 With Application .ScreenUpdat
シート名の一覧を抽出する方法をご紹介します。 ■方法1:名前の定義を使う 「数式」タブ-「名前の定義」をクリック 適当な名前を入力し(例 sName)「参照範囲」に=GET.WORKBOOK(1)と入力して「OK」 シート名を出したいセルに次の数式を入力し、オートフィルする =REPLACE(INDEX(sName,ROW(A1)),1,FIND("]",INDEX(sName,ROW(A1))),"") 補足:get.workbook(1)ではシート名の一覧を取得できます。名前の定義後、=名前を入力すると[ファイル名]シート名が表示されます。 INDEX関数でシート名一覧から○行目…を指定することで1番目のシート、2番目のシート…のように取得できます。○行目はROW(a1)…で指定します。 ■ 方法2:VBA画面に表示(簡単) ALT+F11キーを押す CTRL+Gキーを押して下部に「イ
これは基本的なテクニックだと思って今まで解説しませんでしたが、セミナーなどで質問が多かったので、簡単に書いておきます。たとえば、下図のようなリストがあったとします。 この、現在入力されている最終セル(あるいは最終行)を取得するには、どうしたらいいでしょう。 Excelに詳しくない、VBAのプログラミング的なことしか知らないような方でしたら、次のように考えるかもしれませんね。「A列を上から順番に見ていって、空欄セルが見つかったら、その直前が最終セル」だと。その方法でやってみましょうか。 Sub Sample1() Dim i As Long, r As Long For i = 1 To 10000 Range("A" & i).Select If Selection = "" Then r = i - 1 Exit For End If Next i Range("A" & r).Sele
昔、本項で比較したかったのは、要するに「For Next と For Each って、どっちが速いの?」ってことです。1995年にMicrosoftから出版されたVBAに関する公式本に「For Each の方が速いよ~理由はね~」って書いてあったからです。その頃調べた結果では、確かに For Each の方が速かったです。でも、時代は変わりました。と同時に、パソコンの性能も飛躍的に向上しています。理論的に速くても、体感速度として、あるいは計測結果としては、どうなんでしょう。 まず、For Next と For Each で比較してみましょう。 Sub Test1() Dim i As Long For i = 1 To 10000 Cells(i, 1) = 100 Next i End Sub Sub Test2() Dim c As Range For Each c In Range(
ワークシートの最終セル(最終行、最終列)を取得する… VBAをはじめた人は誰しも最初に引っかかる問題ではありますが、幸いにもインターネットで検索するといくつもの解決法が見つかります。 ところが…動いたり動かなかったり、想定外の動作をすることがあります。そもそもいくつもの解決法があること自体おかしい、いったい本当の答えはどれ?この際、白黒はっきりさせようじゃないかというのがこのページの趣旨です。 <S1> ワークシートの最大行、最大列を取得する MaxRow = Rows.Count MaxCol = Columns.Count まず基本からですが、ワークシートの最大行、最大列を取得するコードです。もちろんこれ自体は最終行、最終列を取得するものではありません。 Rowsはワークシートの行全体をあらわすオブジェクトで、Columnsは列全体をあらわすオブジェクトです。そのメソッドCountは数
Excel VBAでハッシュを使う方法のまとめです。 1.はじめに Excel VBAではハッシュテーブル(連想配列)を使うことができます。 で、ネットで検索してもパッとみて分かるようなサンプルがなかったので、できるだけ無駄なものを省いたサンプルを使って本エントリーで説明してみたいと思います。 2.サンプル まずはざっくりしたサンプルから紹介します。 Sub test() Dim obj As Object Set obj = CreateObject("Scripting.Dictionary") obj.Add "foo", 100 obj.Add "bar", 200 obj.Add "hoge", 300 Dim key As Variant For Each key In obj MsgBox obj(key) Next key Set obj = Nothing End Sub
引数varnameにユーザー定義型を指定することはできません。 サンプル 次の例は、バリアント型変数の内部処理形式を表示します。 Sub Sample() Dim var As Variant var = "ABC" MsgBox VarType(var) '8を表示します var = 123 MsgBox VarType(var) '2を表示します var = 123.456 MsgBox VarType(var) '5を表示します var = Array("A", "B", "C") MsgBox VarType(var) '8204を表示します End Sub
VBA でシステムを作ったとき、機能をメニューから選択できると便利ですね。独自のメニューをメニューバーに登録する方法をご紹介しましょう。 Sub AddMenu() Dim NewM As Variant, NewC As Variant ''新しいメニューを追加する Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup) NewM.Caption = "新しいメニュー(&C)" ''オリジナルコマンドを追加する(1) Set NewC = NewM.Controls.Add With NewC .Caption = "保護解除(&U)" .OnAction = "UnProtectSheet" .BeginGroup = False .FaceId = 277
Time関数 Topへ パソコン(システム)の時刻が返されます。 使用例 Sub test1() Range("A1").Value = Time End Sub A1セルにはPCの時刻が「10:20:40」(10時20分40秒)のように返ります。 Now関数 Topへ パソコン(システム)の日付と時刻が返されます。 使用例 Sub test2() Range("A1").Value = Now End Sub A1セルにはPCの日付と時刻が「2008/11/2 14:44:40」(2008年11月2日 10時20分40秒)のように返ります。 Hour関数 Topへ パソコン(システム)の時刻の時数が返されます。 使用例1 Sub test3-1() Range("A1").Value = Hour(Time) End Sub A1セルにはPCの時刻が10時20分40秒のとき、
MsgBoxで、どんなときに括弧を使うのかと、メッセージを改行する"改行コード"について、詳しい解説を動画で公開しています。ぜひ、こちらもご覧ください。Youtubeでは、ほかにもたくさんの動画を公開しています。チャンネル登録をお忘れなく! Office TANAKAチャンネル ■VBAのコードで、括弧はどんなときに使うのか 構文 引数promptは必ず指定します、ダイアログボックスに表示するメッセージを指定します。 引数buttonは省略可能です。ダイアログボックスに表示する、ボタンの種類やタイプなどを指定します。 引数titleは省略可能です。ダイアログボックスのタイトルバーに表示する文字列を指定します。 引数helpfileは省略可能です。ダイアログボックスの[ヘルプ]ボタンから開くヘルプファイルを指定します。引数helpfileを指定する場合は、引数contextも必ず指定しなけれ
配列は、いわば集合住宅のようなものです。1棟の建物に複数の世帯が同時に住むことが可能です。配列を使用するときは、配列の宣言時に部屋数(要素数)を指定します。 では、プログラムの実行中に、要素が増加するような場合はどうでしょう。あるいは、プログラムを作成する時点では、いくつの要素を格納するかわからないときは、どうしたらいいでしょう。そんなケースで役立つのが動的配列という使い方です。 動的配列は、宣言時に要素数を指定しません。 Sub Sample33() Dim Member() As String End Sub 一般的な配列では「Member(5)」などと要素数を指定するところを、「Member()」と括弧だけを指定します。これで、変数Memeberは配列として使用できます。ただし、この宣言時点では要素数が確定していませんので、実際には使えません。そこで、プログラムのコード中で要素数を再
VBAにもクラスのコンストラクタとデストラクタがあるらしく、利用方法をまとめた。 コンストラクタ Public Sub Class_Initialize() 'ここに処理を書く End Sub デストラクタ Public Sub Class_Terminate() 'ここに処理を書く End Sub ただし、引数を設定することが出来ず、宣言と同時に初期化を行った場合にはClass_Initializeが走らないという謎の挙動をしてる TestClass Public Sub Class_Initialize() debug.print "コンストラクタが動いたよ!" End Sub Public Sub Class_Terminate() debug.print "デストラクタが動いたよ!" End Sub Test1プロシージャ Public Sub Test1() Dim testA
概要 Microsoft Visual Basic で New 演算子または CreateObject 関数を使用して Microsoft Office アプリケーションのインスタンスを作成すると、次のエラー メッセージが表示されることがあります。 このエラーは、コンポーネント オブジェクト モデル (COM) が要求された Automation オブジェクトを作成できず、Automation オブジェクトが Visual Basic では使用できない場合に発生します。 このエラーは、すべてのコンピューターで発生するわけではありません。 この記事では、このエラーの原因となる可能性がある一般的な問題を診断して解決する方法について説明します。 詳細情報 Visual Basic では、エラー 429 の原因がいくつかあります。 エラーは、次のいずれかの条件に該当する場合に発生します。 アプリケ
Microsoft Office製品(WordやExcelなど)に独自の処理を追加する方法としては、主に下記の3種類がある。 VBA(Visual Basic for Applications)マクロ Office COM(Component Object Model)アドイン Visual Studio Tools for Office(VSTO) このうち、最も手軽に作成できるのが、VBAマクロであるが、このVBAマクロでも、.NET Frameworkで作成した独自のクラスを活用できる。本稿ではその方法を紹介する。 ●VBA向けの.NETライブラリの作成 最初に、VBA向けに.NETのクラス・ライブラリを作成しよう。 管理者としてVisual StudioのIDEを立ち上げ、メニューバーから[ファイル]-[新規作成]-[プロジェクト]を実行すると表示される[新しいプロジェクト]ダイア
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く