タグ

関連タグで絞り込む (230)

タグの絞り込みを解除

vbaに関するkiyo_hikoのブックマーク (223)

  • Excel2016 : イミディエイトウィンドウをクリアする

    kiyo_hiko
    kiyo_hiko 2019/05/09
    すごい。これで時間かかる処理をイミディエイトでみていたのが、終了と同時にクリアできる
  • エクセルのマクロ(VBA)でUTF-8を書き出す方法 - Qiita

    VBAは標準ではShift-JISかUTF16LEのみ マクロを使ってHTMLの出力をする際にUTF-8で書き出したかったのですが、WriteLine()関数などでは基的にShift-Jisになるようです。 UTF-8を書き出すにはADODB.Streamを使う(設定が必要) Visual Basic Editor のメニューから[ツール]→[参照設定]を選び,[参照可能なライブラリファイル]の中から "Microsoft ActiveX Data Objects x.x Library" にチェックを入れます。 バージョンは最新のものでOK? サンプルコード 書き出し用オブジェクトの準備 Dim output As ADODB.Stream Set output = New ADODB.Stream With output .Type = adTypeText .Charset = "

    エクセルのマクロ(VBA)でUTF-8を書き出す方法 - Qiita
  • Office Visual Basic for Applications (VBA) リファレンス

    Office Visual Basic for Applications (VBA) は、Office アプリケーションの拡張に使用できるイベント駆動型のプログラミング言語です。 Office での VBA プログラミング この記事の内容は、VBA について学ぶことを希望したり、Office をカスタマイズする作業にプログラミングを役立てる方法について詳しく知ることを望む、経験ある Office ユーザーのために書かれています。 Office アプリケーション スイートには、豊富な機能が用意されています。 ドキュメント、メール、データベース、フォーム、スプレッドシート、プレゼンテーションを多数の異なる方法で作成、書式設定、および操作することができます。 Office において VBA プログラミングが提供する大きなメリットは、マウス、キーボード、またはダイアログ ボックスで実行できるほとん

    Office Visual Basic for Applications (VBA) リファレンス
    kiyo_hiko
    kiyo_hiko 2019/04/25
    公式の体型だった解説がなかなか見つからなかったんだ。ここね
  • Office TANAKA - Excel VBA Tips[ステータスバーを使う]

    処理の完了までに長い時間がかかる場合は、何らかの方法でユーザーに「現在処理中です...」と伝えたいものです。Windowsの標準機能などでは、ファイルを削除したりコピーしたりするとき、バーが右に伸びることで処理の進捗状況を伝えます。このバーを「プログレスバー」と呼びますが、こうした仕組みをExcelで実現するときは、ステータスバーを使うのが簡単です。 ステータスバーはExcelの最下部に表示されるバーで、通常は「コマンド」とか「編集」「入力」などと表示されます。また、セルのコピー中には「コピー先を選択して~」などと操作の手順をナビゲートしてくれます。ステータスバーにメッセージを表示するには、ApplicationオブジェクトのStatusBarプロパティに表示したい文字列を設定します。次のコードは「○回目の処理をしています...」をステータスバーに表示します。 Sub Sample01()

    kiyo_hiko
    kiyo_hiko 2019/04/25
    超重い処理させるときに進捗を知らせる
  • Office TANAKA - Excel VBA Tips[CPUの使用率を抑える方法]

    何か、すごく時間のかかるループを実行すると、処理が終わるまでCPUの使用率が100%近くになることがあります。 Sub Sample1() Dim buf As String Const LogFile As String = "C:\log\ex090310.log" Open LogFile For Input As #1 Do Until EOF(1) Line Input #1, buf Debug.Print buf Loop Close #1 End Sub 上記の"C:\log\ex090310.log"は、サーバーのログファイルです。テキストファイルで約45MB、約20万行あります。さすがに、このボリュームになると、Line Inputで1行ずつ読むのには時間がかかります。そして、処理が終わるまで、CPUの使用率はずっと100%となります。 マクロが終わるまで、コーヒーでも

    kiyo_hiko
    kiyo_hiko 2019/04/25
    超重い処理させるときにお行儀よくする
  • Regular Expression オブジェクトのプロパティとメソッド

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。

    Regular Expression オブジェクトのプロパティとメソッド
    kiyo_hiko
    kiyo_hiko 2019/04/25
    Perlで慣らしてるからすっごい使いにくい
  • VBA_ファイルの読み込み(Input # と Line Input #) - …Inertia

  • Office TANAKA - VBAのステートメント[Type]

    Typeステートメント 構文 [Private|Public] Type varname elementname[([subscripts])] As type End Type キーワードPublicは省略可能です。すべてのモジュールから参照できるユーザー定義型を宣言します。 キーワードPrivateは省略可能です。Typeステートメントを記述したモジュールからのみ参照できるユーザー定義型を宣言します。 varnameには、ユーザー定義型の名前を指定します。 elementnameには、ユーザー定義型を構成する要素の名前を指定します。 subscriptsは省略可能です。配列変数の次元を指定します。 typeには、ユーザー定義型を構成する要素のデータ型を指定します。 解説 ユーザー定義のデータ型を作成します。 Typeステートメントは、プロシージャレベルで使用します。 標準モジュール内で

  • 【VBA入門】Dictionaryオブジェクト(連想配列)の使い方 | 侍エンジニアブログ

    それではDictionaryオブジェクトのプロパティやメソッドの使い方についてサンプルコードで確認していきましょう! 宣言、初期化、追加、参照する方法 Dictionaryオブジェクトを宣言し使用するためには、CreateObject関数を使ってオブジェクト型の変数に格納する必要があります。 Dim 連想配列名 As Object Set 連想配列名 = CreateObject(“Scripting.Dictionary”) なお、オブジェクト型の変数に格納するにはSetステートメントが必要です。 Dictionaryオブジェクトを初期化、および要素を追加するにはAddメソッドを使用します。 サンプルコードで確認しましょう。 Sub macro1() 'Dictionaryオブジェクトの宣言 Dim myDic As Object Set myDic = CreateObject("Sc

    【VBA入門】Dictionaryオブジェクト(連想配列)の使い方 | 侍エンジニアブログ
    kiyo_hiko
    kiyo_hiko 2019/04/24
    dotnet前のVB系だけあって結構使いにくい
  • VBScriptのディクショナリの参照の罠 - Qiita

    VBScriptには辞書型のオブジェクト Scripting.Dictionary があります。 が、このオブジェクトにはちょっとした罠が潜んでいます。 それは「存在しないキーに対して値を取得しようとするとキーを作成してしまう」というものです。 項目を変更するときに引数 key で指定したキーが見つからない場合、newitem で指定した項目と関連付けられた、引数 key で指定した新しいキーが作成されます。また、既存の項目を取得するときに引数 key で指定したキーが見つからない場合は、空の項目と関連付けられた、引数 key で指定した新しいキーが作成されます。 以下、実際に試したコードです。 Option Explicit Dim objDict, sKey Set objDict = CreateObject("Scripting.Dictionary") ' "hoge" キーを追

    VBScriptのディクショナリの参照の罠 - Qiita
    kiyo_hiko
    kiyo_hiko 2019/04/24
    これはひどい仕様だ。説明がないと気づかない
  • Eval 関数 - Microsoft サポート

    Eval 関数を使うと、テキスト文字列または数値になる式を評価できます。 文字列を作成し、実際の式と同じように Eval 関数に渡すことができます。 Eval 関数は文字列式を評価してその値を返します。 たとえば、Eval("1 + 1") は 2 を返します。 関数の名前を含む文字列を Eval 関数に渡した場合は、Eval 関数はその関数の戻り値を返します。 たとえば、Eval("Chr$(65)") は "A" を返します。 構文 Eval ( stringexpr ) stringexpr 引数は、英数字のテキスト文字列に評価される式です。 たとえば、 stringexpr には、文字列または数値を返す関数を指定できます。 または、フォーム上の コントロール への参照を指定することもできます。 stringexpr 引数は、文字列または数値に評価する必要があります。 Microso

    kiyo_hiko
    kiyo_hiko 2019/04/24
    ん…?gosubみたいな前時代的なものと混ざってevalとかメタな機能が…?
  • Loading...

    kiyo_hiko
    kiyo_hiko 2019/04/24
    "VB6やVBAでは配列を定数として定義することができないらしいです" / split使う方法
  • Office TANAKA - Excel VBA Tips[入力されているデータの最終セルを取得する]

    これは基的なテクニックだと思って今まで解説しませんでしたが、セミナーなどで質問が多かったので、簡単に書いておきます。たとえば、下図のようなリストがあったとします。 この、現在入力されている最終セル(あるいは最終行)を取得するには、どうしたらいいでしょう。 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

    kiyo_hiko
    kiyo_hiko 2019/04/24
    Rows.count(物理最終行)からさかのぼって入力値セルを見つける方法。多分一番確実
  • IsMissing 関数 (Visual Basic for Applications)

    オプションの Variant引数がプロシージャに渡されたかどうかを示すブール値を返します。 構文 IsMissing(argname) 必須の argname 引数には、オプションの Variant プロシージャ引数の名前が含まれます。 注釈 IsMissing 関数を使用して、プロシージャの呼び出しでオプションの Variant 引数が指定されているかどうかを検出します。 指定した引数に値が渡されていない場合、IsMissing は True を返します。それ以外の場合は False を返します。 引数に対して IsMissing が True を返した場合、他のコードで不足している引数を使用すると、ユーザー定義エラーが発生する可能性があります。 引数 ParamArray で IsMissing を使用すると、常に False が返されます。 空の ParamArray を検出するには

    IsMissing 関数 (Visual Basic for Applications)
    kiyo_hiko
    kiyo_hiko 2019/04/24
    Lispでいうsupplied-pみたいな人
  • VBAのEmptyやNothingやNull等の違いを整理 | Excel作業をVBAで効率化

    値が無い場合の表現 VBAでは値が入っていないときの表現がいくつもあります。 Empty Nothing Null “” vbNullString これらの違いを説明します。 Emptyは、主に2つの場合で発生します。 1つは空白セルの値。もう1つはVariant型の変数の初期値になります。 VBAでは変数の定義時に型を指定せず暗黙の型変換とした場合はVariant型(なんでも型)になるためEmptyになります。セルや変数の値がEmptyかどうかを判定するにはIsEmpty関数を使いますが、””と比較してもちゃんと動作します。 以下のような感じで使います。

    VBAのEmptyやNothingやNull等の違いを整理 | Excel作業をVBAで効率化
    kiyo_hiko
    kiyo_hiko 2019/04/24
    Empty = Variant型の初期値、Nothing = Object型の初期値、Nullは手動でObjectにSetしないと発生しない。あとIsMissingはプロシージャに省略可能引数が渡されたかをチェックする述語。 / 全部Nullでいいのにと思わず愚痴が出る
  • How to handle missing xml node in excel macro

    kiyo_hiko
    kiyo_hiko 2019/04/24
    個人的にNull使うのかMissing使うのかNothing使うかEmpty使うかさっぱりわからないのでlength>0で見ることにした
  • List object methods and properties

    kiyo_hiko
    kiyo_hiko 2019/04/24
    めんどくさすぎて眠くなる
  • 【ExcelVBA】Excel VBAでのXMLの扱い方 - Qiita

    Excelで、Visual Basic for Applicationsを立ち上げる。 ツール(T) > 参照の追加(R) で、参照設定ウィンドウを開く。 「Microsoft XML, v6.0」にチェックを入れ、OKボタンを押す。 XMLファイルを読み込む。

    【ExcelVBA】Excel VBAでのXMLの扱い方 - Qiita
    kiyo_hiko
    kiyo_hiko 2019/04/24
    New MSXML2.DOMDocument
  • Office TANAKA - ファイルの操作[UTF-8形式のテキストファイルから読み込む]

    稿で紹介する「テキストファイルの操作」は、UTF-8形式のテキストファイルを対象にしています。Shift-JIS形式のファイルを扱うときは、下記ページをご覧ください。 テキストファイルを操作する 正確には「UTF-8形式のファイル」ってのも、ちょっと変な表現なんですけどね。ファイルの形式じゃなくて、そこで使われている文字コードが"UTF-8"だよってことなんですが。まぁ、細かいことはいいとして。ここでは面倒なので「UTF-8形式のファイル」「Shift-JIS形式のファイル」という呼び方をします。 UTF-8の文字コードが記録されたテキストファイルを、上記「テキストファイルを操作する」で解説した方法で読み込むと、望んだ結果になりません。ちょっと、やってみましょう。 UTF-8の文字コードで書かれたデータを読み込むときは、ADO(ActiveX Data Objects)という仕組みを使い

    Office TANAKA - ファイルの操作[UTF-8形式のテキストファイルから読み込む]
    kiyo_hiko
    kiyo_hiko 2019/04/24
    ReadText:まるごと読み取り
  • 文字化けよさようなら!エクセルVBAでUTF-8のCSVを読み込む方法

    エクセルVBACSVの取り扱いをしていると、必ず出くわすと言ってもよい「UTF-8問題」。 これまでの方法ではUTF-8CSVファイルは取り込むと文字化けを起こしてしまいます。 今回は、ADODB.Streamオブジェクトというものを使ってエクセルVBAUTF-8CSVファイルを取り込む方法についてお伝えします。 前回のおさらい 前回のおさらいとしてこちらのプログラムをご覧ください。 Sub getCSV_camma() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim strPath As String strPath = "C:UsersNoriakiDropbox40_ブログvba-csvtestラーメン店アンケート_dq & comma.csv" Dim i As Long, j As Long Dim

    文字化けよさようなら!エクセルVBAでUTF-8のCSVを読み込む方法
    kiyo_hiko
    kiyo_hiko 2019/04/24
    ADODB.Streamオブジェクトを作ってCharsetプロパティを"UTF-8"にする。open->loadfromfile->do until eos->readtext->close / なおUNCパスのファイル名渡してもロードできてニッコリ