スポンサードリンク

VBA

Dirを利用したファイル検索(ファイル検索比較1)

VBA

これから何回かに渡ってVBAでのファイル検索の方法を検証してみようと思います。 まずはDir関数からです。 Dir関数の使用方法 Dir関数 Dir ( [pathname], [ attributes VbFileAttribute = vbNormal ]) as String 引数 内容 pathname 省略可能。検索したいフ…

検索対象のデフォルトを「値」に変更したい

2019/02/11 20:30 修正 以前は感じなかったのですが、最近検索してもある筈のものが検索に引っかからないと感じることが多いです。 自分の場合そういう時はほぼ検索対象が「数式」になっているためです。 個人的には式の中身を検索対象にすることは稀なので…

リスト形式へのデータ整形

VBA

先日twitterでデータ並び替えで質問を投げかけられているのを見かけたので、物は試しとやってみた。 前提条件 下記のように横1行に並んでいるデータを4つ毎に区切って下に順番に並び替えていく。 元ネタをつぶやかれた方は「For」を使ってと条件をつけてい…

ビット演算を数式の条件判定に使えないか検証してみた

VBA

前回2進数とビット演算について検証をしてみた。 www.excellovers.com 今回はビット演算の考え方をExcel関数の条件判定に使えないかと検証してみた。 sumproductの代替 パッと思いついたのがこれだ。 A列からC列はテーブルに変換している。 J列K列で名前定義…

ファイル属性の判定方法(2.ビット演算でファイル属性判定)

VBA

前回はGetAttr関数を使ってファイル・フォルダの属性値をVBFileAttribute列挙型で取得する方法を紹介した。 www.excellovers.com 今回は取得した返り値から自分が探している属性値を含んでいるかどうかを判定する方法を検証する。 どうして判定が必要か? Ge…

ファイル属性の判定方法(1.GetAttr関数の使い方)

VBA

ファイルやフォルダの属性を調べる関数と、その関数の返り値について検証してみました。 GetAttr関数構文 ファイルやフォルダの属性を調べるには GetAttrを使用します。 Function GetAttr(pathname as string) as VBFileAttribute 引数pathnameにはフォルダ…

2007形式から2003形式へ一括して変換

VBA

先日部長から「このメールに添付しているファイルを古い形式にしてAさんに送付しておいて」 と指示を受けた。どうやら先方からダウングレードして送付してほしいと依頼があったらしい。 仕方ないなぁと思いながら取り掛かろうと思ったらファイルが7つも添付…

配列から空白(Empty)を取り除く方法

セル範囲を一括で配列に取り込んだ際などに、空白が紛れ込むことがあります。 そのような場合に配列から空白を除く方法を検証してみます。 空白のある元データ 簡単なデータを用意しました。 このセル範囲を配列に取込、空白の削除を行うのが以下のコードで…

VBA変数の初期値とEmptyの不思議

VBA

変数って代入して初めて値が発生しているかと思いきや、宣言をしただけで値が入ってるんですよね。 今回は変数の型ごとの初期値を調べてみました。 変数の初期値一覧 早速だがこれが変数の型ごとの初期値一覧です。 型 初期値 String "" Boolean False Byte …

CDと本の管理システムをExcelで作成する(7.検索結果(配列)をSQLで並び替え)

前回でレーベンシュタイン距離を付与することが出来ました www.excellovers.com 今回はレーベンシュタイン距離の値に応じ検索結果を並び替えたいと思います。 ソートアルゴリズム?いえSQLです 検索結果はユーザーフォームに表示される直前に多段階配列(ジャ…

CDと本の管理システムをExcelで作成する(6.SQLite3データベースからのデータ抽出フォーム)

前回までで、MadiamarkerからのSQLite3データベースへのインポートと、データ入力のフォーマットを作成した。 www.excellovers.com 今回からは入力したデータを検索する仕組みを作ってみたいと思う。 検索ユーザーフォーム全景 まずはシンプルに仕上げてみる…

CDと本の管理システムをExcelで作成する(5.SQLite3データベースへのデータ入力フォーム2)

前回は入力フォームに設置しているテキストボックス等の設定を確認した。 www.excellovers.com 今回はユーザーフォームに設定しているコードを確認していく。 入力項目を選択制にする 今回のコードはいずれもユーザーフォームに記載しています。 Private Sub…

CDと本の管理システムをExcelで作成する(4.SQLite3データベースへのデータ入力フォーム1)

前回でSQLite3データベースへMeidaMarkerのデータを挿入して基礎となるデータベースが完成しました。 www.excellovers.com 今回はこれから新しくデータを登録する際の入力フォームを作成してみたいと思います。 ちょっと長くなりそうなので、第1弾としてフ…

CDと本の管理システムをExcelで作成する(3.SQLite3データベースへのデータ挿入)

前回はCD・本データを格納しておく、SQLite3データベースを作成しました。 www.excellovers.com 今回は作成したデータベースへMediaMarkerからダウンローしたデータを挿入してみます。 下記のコードを標準モジュールに記載してください。 Sub CDBookManger_…

CDと本の管理システムをExcelで作成する(2.SQLite3データベースの作成)

前回、管理システムの元ネタとなるデータをMediaMarkerからダウンロードし、利用する項目を選定しました。 www.excellovers.com 今回はCD・本データを格納しておく、SQLite3データベースを作成します。 SQLite for Excel でデータベース作成 以前にも使用し…

CDと本の管理システムをExcelで作成する(1.MediaMarkerのデータをエクスポート)

前回、華々しく(?)スタートした当プロジェクト。 www.excellovers.com まずは今まで私が使っていた本・CD管理サービスMediaMarkerからデータをエクスポートして、元データとしたいと思います。 設定→CSVエクスポート 右上の『設定』 サイドバーから『CSVエク…

CDと本の管理システムをExcelで作成する(0.プロジェクトスタート)

先日こちらの記事を拝見しまして、無性に作りたくなりました infoment.hatenablog.com ExcelでCDと本の管理システム 例のごとく行き当たりばったりになりますが、少しずつ組み立てていきたいと思います。 管理システムを作成する理由 直接的な原因は上記のbl…

CSVファイルを配列へ取込、データベースへ高速Insert

前回CSVファイルを全件一括で取り込もうして失敗してしまいました。 www.excellovers.com コメントで「1行ずつ配列にいれてみては」とアドバイスを頂きましたので、実践してみました。 高速かつ手間いらず データ量:566,401×70のCSVファイル。213MB。 処理…

配列を使って高速化しようとして失敗したお話

タイトルそのままですが。 今日試して撃沈したネタをご紹介します。 セル範囲を配列へ取り込み高速化 VBAでの処理高速化ネタの一つにセルへのアクセスを極力減らすというものがあります。 そのためにセル範囲を一旦配列へ格納してから諸々の処理を行うと処理…

SQLite for ExcelでIn Memory Databaseを使用する方法

以前にSQLite3データベースをExcelから使用する方法をご紹介しました。 www.excellovers.com その時には使い方がわからなかったIn Memory DataBaseという機能の使い方がわかりましたのでご紹介します。 In Memory Databaseとは 正確な定義はググって頂くとし…

Split、Joinの区切り文字は1文字じゃなくても良い

VBA

先日SQLの in 句を作成するためにこのようなことをやっていたのですが 実際にはもう少し単語を繋げていたので何ともイケてないなぁと感じていたら Join関数があるじゃないかと閃いたんですね。 その時に自分の中で思わぬ発見がありました。 区切り文字(Delim…

Thisworkbook.pathってどこ?

VBA

Thisworkbook.pathってどこ? 先日このような記事を公開しました。 www.excellovers.com この記事を作成している際に実務でも時々出くわす事態に遭遇しましたので紹介します。 アドレスは無し? Option Explicit Sub BookPath() MsgBox ThisWorkbook.Path En…

定数と変数で同じ名前をつけた(重複した)場合の挙動

VBA

要はタイトルのようなミスをやらかしてドツボにはまってしまった時のお話です。 なぜなんだ?と首をひねり過ぎて疲れてしまったので、同じことをやらかさないようにするための備忘録 プロシージャレベル優先? やらかしてしまった状態を極限まで簡素化したの…

配列のセルへの一括転記(3.転記の方法と大量データの並び替え)

前々回で配列の並び方、前回で行列の並び替えについて調べてみました。 www.excellovers.com www.excellovers.com 今回は配列のセルへの一括転記とTranspose関数の限界を超える大量データの並び替えについて調べてみました。 Transpose関数の限界と対応 配列…

配列のセルへの一括転記(2.配列の行列並び替え)

前回は配列のデータの並び方について調べました。 www.excellovers.com 今回は前回解説した3種類の配列について、それぞれ行列並び替えをした際に どのようにデータ並び替わるのかを調べてみたいと思います。 Transpose関数で行列並び替え VBAで配列の行列…

配列のセルへの一括転記(1.配列の並びとは)

VBAで取得している配列をTranspose関数で行列を入れ替えて、 セル範囲へ一括貼り付けをよく使います。 配列からの一括転記にすると処理がかなり高速化されます。 しかしこのTranspose関数を使えば良いのか使わなくていいのか、 2回使わないといけないのかで…

ExcelからSQLite3を操作する方法(5.データの抽出)

前回まででSQLiteデータベースにMP3タグの情報が蓄積された状態になっています。 今回は蓄積された情報をSQLiteデータベースから抽出をしてExcelへ転記していきます。 現在の状態はこのような感じです。 ワークシートのオブジェクト名をデフォルトから変更し…

ExcelからSQLite3を操作する方法(4.データの挿入)

前回予告どおり今回は取得したMP3タグデータをExcelへの転記ではなくSQLiteデータベースに取り込んでみようと思います。 SQLのInsert文でデータを取り込む Sub GetMusicFileProperty() n = 0 ReDim MusicFileProperty(n) FileSearch "G:\Music\" ReDim Prese…

VBAでの改行の方法

VBAでの改行の方法 メッセージボックス(msgbox)で表示する文章が長くなってくると、見やすくするために改行を行いたときがあります。 VBAには改行を表現が何種類か用意されています。 それぞれの違いを交えながら紹介したいと思います。 改行表現一覧 定数 …

Excelでドラム演奏(mciSendString関数でmp3再生)

好きなんです、ドラム(1回しか叩いたこと無いけど)。 叩きたくなりますよね、ドラム(ドラムマニアは何度か)。 無理からにExcelで作ってみました、ドラム(不安定だけど)。 どんなもの 事前にキーボードのキーと再生する音の組み合わせを決めておきます。 指…