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

ブックを次の受信者に回覧する必要がない場合 (回覧用紙がないか、既に回覧されている場合)、この引数は無視されます。 それ以外の場合、このパラメーターの値に応じてブックが回覧されます。 True を指定すると、次の受信者にブックが送信されます。 False を指定すると、ブックは送信されません。 この引数を省略すると、ブックを送信するかどうかを確認するダイアログ ボックスがユーザーに表示されます。 注釈 Visual Basic からブックを閉じるとき、ブックの Auto_Close マクロは実行されません。 RunAutoMacros メソッドを使用して、Auto_Close マクロを実行します。 例 次の使用例は、Book1.xls を閉じます。内容の変更は保存しません。 Workbooks("BOOK1.XLS").Close SaveChanges:=False サポートとフィードバ
VBAには、ファイルの種類を調べる関数などがありません。ファイルの種類を調べるには、FileSystemObjectを利用します。FileSystemObjectのFileオブジェクトには、Typeプロパティがあり、ファイルの種類を取得できます。 下のサンプルコードは、Application.GetOpenFilename()を使って「ファイルを開く」ダイアログを表示させ、そこで選択したファイルの種類を表示するものです。選択したファイルのパスが変数Targetに入るので、このパスをFileSystemObjectのGetFileメソッドに渡すことで、そのFileオブジェクトのTypeプロパティを取得しています。
サイト全体の更新情報・お知らせ 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を初心者向けに基礎から解説。
Sub Sample_SaveCopyAs() Dim OpenBook As String Dim CopyBook As String Dim w As Workbook Dim Result, Prompt, Buttons, Title 'コピー元のブック名 OpenBook = "C:\Documents\test01.xlsx" '保存するブック名 CopyBook = "C:\Documents\mybook.xlsx" 'コピー元ブックを開く Set w = Workbooks.Open(OpenBook) '同名のブックが存在する時の処理 If Dir(CopyBook) <> "" Then 'メッセージボックス表示 Prompt = "同名ファイルが存在します。" & Chr(13) & "上書きしますか?" Buttons = vbYesNo + vbInforma
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は配列として使用できます。ただし、この宣言時点では要素数が確定していませんので、実際には使えません。そこで、プログラムのコード中で要素数を再
サイトをご覧になった方からリクエストをいただきました。「特定のブックを開いているか、どうやってチェックしたらいいですか?」と。また、別の方から「'合計'という名前のシートがあるかどうか調べたい」というメールもちょうだいしました。これらは同じ考え方で実現できますので、一緒に解説しましょう。 ブックが開いているか調べる このテクニックは、実は「ファイルの操作」の「現在開いているブックの一覧を取得する」で解説しています。念のため同じコードを再度ご紹介します。 Sub Sample01() Dim wb As Workbook, flag As Boolean For Each wb In Workbooks If wb.Name = "Book1.xlsx" Then flag = True Next wb If flag = True Then MsgBox "Book1 を開いています。",
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く