タグ

VBAに関するmnruのブックマーク (319)

  • NullとEmptyとNothingと空の文字列の違い:Access VBA|即効テクニック|Excel VBAを学ぶならmoug

    NullとEmptyとNothingと空の文字列の違い (Access 97/2000/2002/2003/2007/2010) ツイート VBAでは変数やフィールドに有効な値がない状態や、空の状態を表す値がいくつもあります。 ここでは、それぞれの意味や使用上の注意についてご紹介します。 ■長さ0の文字列("") 文字を1つも含まない文字列 ("") です。 「長さ0の文字列」の名前のとおり、Len関数やLenB関数の引数に指定すると0を返します。 Dim myStr As String myStr = "" Debug.Print Len(myStr) '--> 0 と表示される ■値0の文字列(vbNullString) String型の変数の初期状態を表す値です。vbNullStringという定数で表します。 長さ0の文字列("")と同様に、Len/LenB関数の引数に指定すると 0

    mnru
    mnru 2019/12/06
  • Excel VBA 設計書自動作成ツール

    ExcelVBAのプログラム設計書を自動作成するアドインを作って見ました。 まあ、設計書といっても大したもんじゃないけど納品用に作るくらいには使えるかな。 アドインをインストールすると、リボンメニューに「設計書作成支援ツール」が追加されるので、 そこから作成実行を選択すると、開いているExcelVBA設計書が作られます。 Excel2010でしか試してないけど多分2013でも動きます。 オプションで色々設定できるので、各自のコーディング規約とかに合わせて使ってください。 あとソースもgithubに上げておくので文言とか適当に修正して使ってもらっても大丈夫です。 https://github.com/fuku2014/VBA-PSCreater

    mnru
    mnru 2018/12/26
  • 変数を宣言する

    変数を宣言するとき、通常使用するのは Dim ステートメントです。 宣言ステートメントをプロシージャ内に置くと、プロシージャ レベルの変数を作成できます。 または、モジュールの一番先頭の宣言セクション内に置いて、モジュール レベルの変数を作成することもできます。 次の例では、変数を作成し、String データ型を指定します。 Dim strName As String このステートメントがプロシージャ内にあると、変数 strName はそのプロシージャでのみ使用できます。 このステートメントがモジュールの宣言セクション内にあると、変数 strName はそのモジュール内のすべてのプロシージャで使用できますが、プロジェクト内の他のモジュールにあるプロシージャでは使用できません。 この変数をプロジェクト内のすべてのプロシージャで使用可能にするには、たとえば次の例のように、変数の前に Publi

    変数を宣言する
    mnru
    mnru 2018/11/06
  • VBAメモリーリークについて

    VBAのメモリー管理は 参照カウンタ方式 です。仕組みはシンプルですが、漏れ無く開放 するにはそれなりの注意が必要です。 まずは、自分が以前に同様の問題の解決に役立ったページをご連携致します。実際にはかなり膨大な数のページを参照しましたが、とりあえず主だったものを3つだけ… 4.1.5 オブジェクト消滅の管理 Excelのプロセスが正常に終了しない理由(その1) 15.消えないExcelのプロセス Excel VBA以外の話題も含まれていますが、原理は同じです。ちょっと長いのですが、辛抱して注意深くお読みください。 要点を簡単にまとめると、 メモリーリークが発生するのは参照カウンタが0になっていないために開放されないオブジェクトがあるから 使用済みオブジェクトを確実に開放するには使用済みオブジェクトの参照カウンタを確実にデクリメントする 「暗黙の参照」が発生しないように気をつける このうち

    VBAメモリーリークについて
    mnru
    mnru 2018/11/05
  • MSXML2.XMLHTTPでvbaからweb apiを利用 - end0tknr's kipple - web写経開発

    今回は、google map apiを例に、MSXML2.XMLHTTPとMSXML2.DOMDocumentによるvba(私の環境はexcel 2003)からのweb apiの利用方法を書き留めておきます。尚、google map apiのresponse形式等は、以前に紹介しているのでそちらをご覧下さい。 http://d.hatena.ne.jp/end0tknr/20081021/1224576363 MSXML2.XMLHTTPとMSXML2.DOMDocumentで簡単に実現 google map apiはresponse形式にcsvやxmlを選択できますが、xmlをvbaで扱う場合、「ツール」→「参照設定」でMSXML2.DOMDocumentを追加して下さい。 この参照設定が完了すれば、後は簡単。次のように MSXML2.XMLHTTP でgoogle map apiを呼び

    MSXML2.XMLHTTPでvbaからweb apiを利用 - end0tknr's kipple - web写経開発
  • 64ビット環境でのScriptControlの代わり

    VBAやVBScriptでURLエンコード処理する場合に、下記コードのようにScriptControlがよく使われます。 Public Sub Sample() MsgBox EncodeURL("こんにちは") End Sub Private Function EncodeURL(ByVal sWord As String) As String With CreateObject("ScriptControl") .Language = "JScript" EncodeURL = .CodeObject.encodeURIComponent(sWord) End With End Function ところが64ビット環境で上記コードを実行すると、下図のようなエラーが発生します(64ビットOS上の32ビット版Office(WOW64上)ではエラーになりません)。 これは「msscript.

    mnru
    mnru 2018/08/28
    scriptcontrol64ビット環境でのScriptControlの代わり
  • IE11のダウンロード通知バーのVBからの操作 - OKWAVE

    IE11のダウンロード通知バーをExcel VBAから操作する為、 http://okwave.jp/qa/q8121989.html を参考にさせて頂きました。 「保存」のボタンを探す条件がまずい為か、IUIAutomationElementのButtonを参照する所で、Buttonが見つかっていない為、エラーになります。 Dim iCnd As IUIAutomationCondition Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "保存") Dim Button As IUIAutomationElement Set Button = e.FindFirst(TreeScope_Subtree, iCnd) Dim InvokePattern As IUIAutomationInvokePattern Set I

    IE11のダウンロード通知バーのVBからの操作 - OKWAVE
    mnru
    mnru 2018/03/19
  • How to run JSL from within Visual Basic (VB)

    mnru
    mnru 2018/03/12
  • Excel/VBA:構造体(Type)を使ってデータ処理を便利にする | 非IT企業に勤める中年サラリーマンのIT日記

    Excel/VBAでも構造体があります。Typeというステートメントを使います。 あまり有名じゃないのか、僕の周囲で使っている人少ないですね。でも、使うと便利なので覚えておきましょう。 [ad#top-1] VBA構造体の基VBAの構造体は以下のように書きます。Type~End Type間に必要な変数を宣言します。この変数群がプロパティとして使えるわけですね。 Type TestStructure Name As String Age As Integer City As String End Type Sub test() Dim person As TestStructure person.Name = "山田太郎" person.Age = 22 person.City = "横浜市" End Sub 「ユーザー定義型は定義されていません」への対処 よくやってしまう失敗例が以下

    Excel/VBA:構造体(Type)を使ってデータ処理を便利にする | 非IT企業に勤める中年サラリーマンのIT日記
    mnru
    mnru 2018/02/14
  • ユーザー定義型(内部で動的配列) : 趣味のプログラムあれこれ

    2010年08月03日06:16 カテゴリvba ユーザー定義型(内部で動的配列) ユーザー定義型の中で、固定サイズの配列だけでなく、動的配列も指定できるんですね。 出来ないもんだと思い込んでました。 'こんな感じ type db_write name as string spec as double val() as double end type '実際の変数の宣言 dim values1(10) as db_write '動的配列のサイズ定義 redim values1(0).val(2) redim values1(1).val(1) 知りませんでした。この使い方(笑)。 (サイズ定義しないと使えないところが難点かなぁ。忘れそうです) 前回の話と一緒で、この使い方は、かなり特殊なケースです。 知らなくても、問題はないです。 「そんな要求、vbaでは無理じゃ~!」という無理難題を吹っ

    mnru
    mnru 2018/02/14
  • vbaのエラー処理 - Qiita

    Private Sub f1(ByVal v as Integer) If v < 0 Then Err.Clear Err.Raise Number:=999, Description:="something went wrong" End if End Sub Private Sub f2() On Error Goto Have_Err Call f1(-1) Have_Err: If Err.Number = 999 Then MsgBox Err.Number & vbCrLf & Err.Description Exit Sub End If End Sub 見ての通り例外のようなことができる。 プロシージャf1 ではErrオブジェクトにエラー値の設定のみしておき、プロシージャ呼び出しでエラーをチェックする。 これはErrオブジェクトがパブリック・スコープを持つため可能になる。

    vbaのエラー処理 - Qiita
    mnru
    mnru 2017/12/25
  • VBA オブジェクトとメモリの関係 ~ オブジェクトが参照型と呼ばれる理由 - t-hom’s diary

    前回、VBAを擬人化して、変数が記号表によって管理されているというところまで書いた。 ※読んでない方はこちら thom.hateblo.jp さて、今回はオブジェクトがメモリ上でどう扱われるのかという話。 次のコードで説明しようと思う。 Dim c As Collection Set c = New Collection オブジェクトはメモリにどのように存在するのか 前回の話では、値がメモリに入っていて、記号表によって変数名とアドレスを対応付けていると説明した。 オブジェクトの場合もこんな風になっているんだろうか。 実はこの図は間違いで、Integer型やLong型のように直接値が入っているわけではない。 オブジェクト型変数の場合、記号表からアドレスを参照した先には、更に別のメモリ領域を指すアドレスが入っていてそこにオブジェクトの実体が居る。 図中にスタックメモリ・ヒープメモリと書いたが、

    VBA オブジェクトとメモリの関係 ~ オブジェクトが参照型と呼ばれる理由 - t-hom’s diary
    mnru
    mnru 2017/12/19
  • Table Resize VBA

    mnru
    mnru 2017/12/19
  • VBの「As String * 128」とは?

    VBの「As String * 128」とは? Visual Basic 2010 Expressでコンソールアプリケーションを作成しています。 OSのヴァージョンを取得する機能を作成したかったので、 http://hanatyan.sakura.ne.jp/vbhlp/Version.htm を参考にして、OSVERSIONINFOの構造体を定義しました。 しかし szCSDVersion As String * 128 の 「* 128」 の部分で、ステートメントの終わりを指定してくださいとエラーが出ます。 「* 128」とは、いったいどういう意味ですか? また、エラーを無くす方法はありますか? いろいろ検索しましたが、調べ方が悪いのか、分かりませんでした。 よろしくお願いします。

    VBの「As String * 128」とは?
    mnru
    mnru 2017/11/28
  • 再帰呼出しについて(再帰プロシージャー)|VBA技術解説

    VBA技術解説 再帰呼出しについて(再帰プロシージャー)ExcelマクロVBAの問題点と解決策、VBA技術的解説 公開日:2013-06-04 最終更新日:2022-10-14 再帰呼出しについて(再帰プロシージャー) 再帰プロシージャとは、自分自身を呼び出すプロシージャです。 プロシージャが、そのプロシージャ内で自分自身を呼び出すような処理を再帰呼び出しと呼びます。 自分自身を呼び出し、終了条件を満たすまで、意図的に無限ループさせます。 再帰呼出を実装したプロシージャーは再帰プロシージャーと呼びます。

    再帰呼出しについて(再帰プロシージャー)|VBA技術解説
    mnru
    mnru 2017/03/10
  • Insert and Access Fold Feature Example (VBA) - 2015 - SOLIDWORKS API Help

    mnru
    mnru 2017/03/10
  • VBA-content/VBA/Access-VBA at master · OfficeDev/VBA-content

    mnru
    mnru 2017/03/09
  • ApplicationとWorksheetFunctionの違い

    http://oshiete.goo.ne.jp/qa/1341789.html ここに同じような質問があるのですが ワークシート関数をVBAで使いたい場合 Application.WorksheetFunction.xxxxx WorksheetFunction.xxxxx Application.xxxxx の三つの方法があります、 これらはどのような違いがあるか教えてください。 上記のページによれば 97以上の書法 Application.WorksheetFunction.xxxxx WorksheetFunction.xxxxx 古いVersionの書法 Application.xxxxx らしいですが、 実際に計算速度を自作プログラムを使って比較したところ Application.WorksheetFunction.Round WorksheetFunction.Round の

    ApplicationとWorksheetFunctionの違い
    mnru
    mnru 2017/03/07
  • Excel VBAでWebサービス - YouTube APIで動画を検索しよう

    はじめに 今回は、動画サイトで有名な「YouTube」を操作するためのAPIを利用します。入力キーワードから、ExcelVBAで検索結果リストを作成する方法を紹介します。ワークシート上の一覧表にまとめることで、目的の動画が探しやすくなります。もちろん、タイトルをクリックすると、実際の動画をブラウザで見られます。 動作確認は、Windows 7、Excel 2010、VBA 7.0およびWindows XP、Excel 2007、VBA 6.5で行っています。 Excel VBAWebサービス - 天気予報を取得してみよう Excel VBAWebサービス - MSNマネーから株価の推移を取得しよう Excel VBAWebサービス - Excelで書籍情報を検索・取得してみよう YouTube APIによる動画の検索リクエスト 検索リクエストは、次のURLに、GETリクエストを送信

    mnru
    mnru 2017/03/02
  • VBAに新時代が到来しました。 - ClockAhead 開発Blog

    まえがき朝、目が覚めると、元エクストリームVBA-er であらせられる@igeta氏が ウワアァァ!! https://t.co/TQQwEfuqN5 — いげ太 (@igeta) 2015, 3月 9とんでもないものをTwitterのタイムラインに投下されていました。 1990年代前半から時が止まってしまったかのようなVBAの開発環境 VBE(Visual Basic Editor)に、現代の統合開発環境(IDE)並の機能を追加するクレイジーなアドインが登場したようです。 現代に舞い降りたまさに狂気の権化、その名もRubberduck。 さあ、キミたち、ラバーダックのレポを書くんだ! — いげ太 (@igeta) 2015, 3月 10とのことなので、簡単にレポートを書いてみたいと思います。 レポートインストールは至極単純です。RubberduckのgithubリポジトリのRelaseペ

    VBAに新時代が到来しました。 - ClockAhead 開発Blog
    mnru
    mnru 2017/02/28