PeaceJetのブログ

金融系の社内エンジニアをやりながら、マーケティングやプランナーなども

VBA

画面中央に「処理中」という案内板を出す方法【エクセル VBA】

こんにちは、PeaceJetです。今回は、画面中央に「処理中です」という案内を出す方法をご紹介します。意外と難しいのかなぁ~と思う方も多いかと思いますが、意外と簡単ですのでお試しあれ。 ユーザーフォームの準備 今回はユーザーフォームを使用して、「た…

VBAでメールを送信する方法

VBAでメールを送信するには? こんにちは、PeaceJetです。「エクセルでセルの内容をメール出来ないか?」といったニーズがありまして・・・ちょっと書いてみたいと思います。メールを送る際には、本来なら自前のサーバーを送りたいところなのですが、「メー…

セルの変更履歴を保存する方法 【エクセル・VBA】

こんにちは、PeaceJetです。今日は、久々にプログラミング的な記事を書きます。 セルの変更履歴を別のシートに記録したい 複数人数によって共有されるエクセルブックの場合、「いつ? 誰が? どの部分を変更したのか?」を追跡したいと言った需要が生まれる…

【VBA】基本的な操作 〜文字列操作編(LEFT LENなど)〜

LEFT RIGHT MID LEN LEFT 文字列の左端から、指定した文字数分の文字列を取り出す。 Sub sample1() Dim Str As String Str = "PeaceJet" MsgBox Left(Str, 1) '"P"を返す。 End Sub Mid 文字列の指定した位置から、指定した文字数分だけ文字列を取り出します…

【VBA】基本的な操作【開く・閉じる…など】

基本的なことなのですが、ワークブックの操作を忘れたりすることがあります。なので、今回は「あれ?」っと思い出せなくなるような単純なことを、メモしておきます。 ワークブック Open Close Copy ワークブックを開く Sub Sample1() Workbooks.Open "C:\Boo…

ExcelVBAで多次元配列(2次元・3次元)を作成してみよう!【ExcelVBA・エクセルマクロ】

前回の記事では、2次元や3次元など多次元配列 では最後の次元しか変更できないという話をしました。今回は、多次元で動的配列を用いる場合について考えてみたいと思います。例えば、以下のようなリストを多次元配列に入れた場合、 取り出す時に楽をできそう…

多次元配列のサイズを変更する際の注意すべきポイント【ExcelVBA・エクセルマクロ】

ExcelVBAにて、多次元配列のサイズを変更する際に注意すべきポイントをご紹介します。 ポイント 多次元配列のサイズ変更する場合、最後の次元しか変更できません。 ルパン「じげ~ん!」 ・・・ええ、従いまして・・・ 以下のプロシージャはエラーになります…

ExcelのシートをHTMLテーブルとして出力する方法。【ExcelVBA・エクセルマクロ】

本日はExcelシート上のデータをテーブル(Tableタグ付きデータ)に 加工して出力してみます。 ポイント Rangeオブジェクトは2次元配列。 2次元配列の要素数を取り出すには、UBound関数の知識が必要。 加工後は『イミディエイト・ウインドウ』へ出力する。 Su…

重複しているデータを抽出して、重複しないリストを作成してみよう!【ExcelVBA・エクセルマクロ】

今回は、以下のようなリストにおいて、 重複しないように名前とメールアドレスを抽出(抜き出す)方法 を考えてみたいと思います。 Sheet1 ABCDE 1属性氏名フリカナ性別メールアドレス 2A組伊沢兼吉イザワカネキチ男kanekichi4638@ckttcy.wg 3B組岩沢治イワ…

配列の要素に特定の文字列があるか調べてみよう!【VBA・エクセルマクロ】

配列の要素に特定の文字列があるか? 今回は、配列の中に特定の文字列が存在するか、 調べる方法について考えてみたいと思います。Javaであれば、いわゆるindexOfメソッドを使用する ことで、解決するのですが・・・VBAでは、満足いく結果が得られなかったの…

改行コードが埋め込まれているCSVファイルを読み込もう【VBA・エクセルマクロ】

CSVファイルを読み込むと、形が崩れる。 CSVファイルをエクセルに取り込む場合に、エクセルなどのCSVリーダーアプリでは リスト形式が保たれているのに、「CSVファイルをメモ帳で開くと、一行になっている」これは、メモ帳側が改行コードを読み取れないこと…

テキストファイルを読み込んでみよう。【VBA・エクセルマクロ】

今回は、テキストファイルをVBAを使用して、 ワークシートへ読み込む方法をご紹介します。 キモは2つのステートメント 「Openステートメント」 「Line Input #ステートメント」 まずは「Openステートメント」でファイルを開く。 「Openステートメント」を使…

超簡単!マクロで2つのデータを比較してみよう!【エクセルマクロ・ExcelVBA】

例えば、ワークシートに以下のような値が入っているとします。 ※分かりやすくするため、重複しているものに色を付けています。 AB 1佐藤下村 2藤田長嶋 3ジョンソン田中 4梅村バイソン 5下村アンダーソン 以下の範囲を比較したとき Range("A1:A5") Range("B1…

ワークシートごとにCSVファイルを作成する。後編【エクセルマクロ・VB・VBA】

前編では、ワークシートごとにCSVファイルを作成する方法として、 プロシージャを作りました。今回は、後編としてプロシージャの使い方を見ていきます。プロシージャ呼ぶための親プロシージャを作成することで、 使用することができます。前編で作成したプロ…

ワークシートごとにCSVファイルを作成する。前編【エクセルマクロ・VB・VBA】

ワークシートをCSVファイルとして出力(保存)する方法をご紹介します。たとえば、ワークシートに下記のような値が入っているとします。 AB 1佐藤satou@hogehoge.jp 2藤田fujita@foobar.jp 3ジョン・ピーターセンjhon@hogefuga.uk 4小早川kobayakawa@fugafug…

続・ワークブックが開いているかどうかを確認する。【エクセルマクロ・VB・VBA】

前回は、ワークブックが開いているかを調べる関数を作成しました。今回は、これらを使って実践的な方法をご紹介します。 ①もしも、ワークブックが開いていたら・・・する。 Sub IfWorkbooksAlreadyOpenedThenDo() '開いているか確認したいブック Const Targe…

ワークブックが開いているかどうかを確認する。【エクセルマクロ・VB・VBA】

『あるワークブックが開いていれば、そのままで…開いていなければ、開くようにしたい』と言った必要に迫られる場合があります。 今回は、ワークブックが開いているかどうかを調べる方法を、ご紹介します。まず、関数をBoolean型で作成し、 開いていれば True…

UBound関数について【エクセルマクロ・VB・VBA】

配列の要素を調べるために、UBound関数を使用しますが、返される値には注意が必要だったりします。公式ドキュメントには、次のように書かれています。 https://msdn.microsoft.com/ja-jp/library/95b8f22f%28v=vs.90%29.aspx 戻り値 Integer 型の値です。指…

VBAで可変長配列を使う方法【エクセルマクロ・VB】

エクセルでマクロを作っているときに、『特定のメールアドレスだけを、まとめて別のシートへ移す』などといったニーズがあった場合に可変長配列を使用して解決する方法をご紹介いたします。”Sheet1”には、以下のようなリストが 書かれているとします。 AB 1…