CSVファイルをエクセルに読み込む CSVファイルを1行ずつ読み込む VBA マクロ

CSVと相性のいいExcelですが、

マクロでサクッとエクセルに読み込むにはどう書けばいいのでしょうか

できるだけ簡潔に書いてみました♪

 

重要なポイント

・OPENメソッドを使う

・OPENメソッドの引数を理解する

・Doループで読み出す

・セルに出力する

・Closeする

 

この4点を抑えれば、

エクセル1行ごと1つのセルに、

テキスト1行毎の読み出しがサクッとできます

 

カンマ区切りでセルの列毎に出力していくことも可能

ですが、ちょろっと難易度あがるので次回の記事にしたいと思います笑

 

今回のサンプルコードは下記です

ではでは♪

表のマッチングをマクロで表現するには? VlookUp関数 Index関数/Match関数 Excel マクロ VBA

マッチングに便利なVlookUp関数・match関数Index関数ですが、

マクロで表現するにはどうすればいいでしょうか

 

初歩的なプログラミングの要素が必要となりますが、

コツを掴めば初歩の壁を越えられるかと思います♪

 

下記の画像のようにB列とC列に金額と消費税を反映させるマクロを例にします

セルB9 C9 にはSUM関数が入っています

 

サンプルコードは下記です

処理の流れ

①ループ1のtoValueに入る

toValueの値⇒2 A列2行目を取得 セルの中身2

 

②ループ2のmListに入る

toValueの値⇒2 A列2行目を取得 セルの中身2 ココの値は変わらない

mListの値⇒2 F列の2行目を取得 セルの中身

 

IF文で toValueの値 [range(“A” & toValue)] と mListの値[range(“F” & toValue)] を比較

初回はマッチせず

 

ループ2の2回目のループ

toValueの値⇒2 A列2行目を取得 セルの中身2 ココの値は変わらない

mListの値⇒2 F列の2行目を取得 セルの中身2

マッチしました!

 

③B列とC列に吐き出す

2行目に吐き出したいのでVtoの値は2

Range(“B” & Vto).Value = Range(“H” & mList).Value
Range(“C” & Vto).Value = Range(“B” & Vto).Value * 0.08
 Vto = Vto + 1 ‘次回出力先は3行目なので+1を自己代入する

【ループ2を抜ける】 Exit For

①ループ1の2回目のループに入る

toValueの値⇒3 A列3行目を取得 セルの中身5

②ループ2の2回目のループに入る

2~8回ループする

マッチングする

③出力する

出力変数を+1自己代入する

 

①②③を繰り返す……..

全てのループが終了されるという流れです

 

以上です。

細かいこと省いてざっくりですが、

自分の説明力と書面だとこれが限界ですww

 

 

プログラミングはとにかく書くこと

なので手を動かして失敗しまくって体で覚えればすんなり頭に入ることも多々あります

 

プログラミングライフを楽しみましょう♪

 

ではでは♪

エクセルVBAでパワポのスライドを取得する Excel → PowerPoint VBA Excelマクロ

エクセルからパワポのスライド画像を取得できないか?

お話しがあったので作ってみました!

 

使い方は簡単

下記のExcelファイルを開く(マクロを有効にする)

取得ボタンを押す

パワポファイルを選択

出来上がり♪

 

仕様

・パワポのスライドを画像ファイルとしてエクセルに出力します。

・スライドのページ毎にエクセルのシートを追加して1スライドに1シートずつ出力します。

 

ソースコード・ファイルは下記です♪

 

パワポ取得マクロ

 

 

ではでは♪

エクセル 任意の選択範囲を画像化! 画像化したファイルをフォルダに保存する VBA マクロ

選択範囲を画像化させたいという案件もあるかと思います。

今回はマクロで選択範囲を画像化させる方法とフォルダーに保存する方法をご紹介します。

 

手順

 

画像化させる方法の重要なポイント①

ChartObjectsオブジェクトで土台を作る

 

画像化させる方法の重要なポイント②

 

CopyPictureメソッドで画像をコピー

 

画像化させる方法の重要なポイント③

 

Chartメソッドで画像をチャートとして張り付ける

 

流れを理解できれば選択範囲を画像化できます♪

 

サンプルコードは下記です

画像取得マクロ


ではでは!

エクセル コンテンツの有効化 ボタンをショートカットキーで押すには?

Excelを開くとセキュリティの警告はわりとでてくるものなので

ショートカットキーを覚えておいた方がわざわざマウス使うより圧倒的に楽ちんです

「F6」キーを2回(エクセルを起動した状態から)押すとボタンにフォーカスされます。

 

ちなみに F6キーは 4つのタブにフォーカスができます

 

1回押下 → シートタブにフォーカス

2回押下 → セキュリティ警告タブにフォーカス

3回押下 → ステータスバー(Excel画面下部のボタン)にフォーカス

4回押下 → メニューバーにフォーカス(Altキー押下と同じ)

 

使いこなせばまたまた便利な機能ですね♪

ではでは♪

数式のみをコピペする マクロ VBA

久しぶりの投稿になります。

令和もよろしくお願いします!

 

エクセルの表で対象行の挿入・削除・編集などの処理をしたいとき、数式のみをいじりたい!

 

ということがあるのはマクロを書いてる以上よくあることかと思います。

 

エクセルの機能で数式のみコピーってありますが値までもペーストされてしまいますよね怒

 

エクセルの操作上で数式のみペーストするには、

Ctrl  + G → セル選択オプション → ”数式”

を選んでやっと数式を選択できます。めんどい。

そもそもコピペ機能でそういう仕様にしてくれよMicrosoftさん

 

Ctrl  + G → セル選択オプションこれらの処理をマクロで表現するには

SpecialCellsメソッドを使います

A11せるに数式が入っている下記の画像の例

 

A11を選択するコードは下記です。

Sub FormulaCell()
    ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Activate
End Sub

Rangeオブジェクトに格納して処理もできるのでSpecialCellsメソッド自体は便利です

 

ではでは♪

WorkSheet Changeイベントの活用方法 シートチェンジイベント シートイベントシリーズその2

WorkSheet Changeイベントの活用方法として挙げられるのは、

特定のセル範囲に対しての処理です。

 

例えば、

このセル範囲の

・任意の文字列しか入れられないようにしたい

・日付や数値しか入れられないようにしたい

・桁数を制限したい

etc…

 

Changeイベントではこのような問題を解決できます。

 

そんなわけで今回も引き続き第二弾としてChangeイベント使用例として、

セルA1からA10 の範囲内で、入力したセルの文字列が ”気まま” なら赤く塗る

という処理をご紹介したいと思います♪

まずは準備をします

 

Changeイベントで最も重要なメソッドがあります。それは、

Intersect メソッド です。

特定の範囲に指定したセルが被っているか、被っていないかを調べることができます。

 

サンプルコードを下記にご紹介します。

 

ではでは ちゃんと処理するかを確認します。

まずは処理対象範囲内のセルA1に ”エクセル” と入力します。

何も起きてないので問題ないですね♪

 

では本命の ”気まま” ではどうでしょうか

きちんと赤くなってくれました♪

 

こんな感じで特定範囲のセルの処理をすることができました。

というわけでChangeイベントは何かしら大活躍します。

是非皆さんも
Changeイベントをご活用あれ♪

ではではヾ(@⌒ー⌒@)ノ

モジュールレベル変数が嫌いな件(-ω-) VBA マクロ モジュールレベル変数のメリット・デメリット

これまでたくさんマクロを書いてきたのでよくわかりますが、モジュールレベル変数はデメリットばかりで嫌いですw

 

デメリット

 

■汎用性が低い

サブルーチンがたくさんある場合、

グローバル変数を参照されまくります。

グローバル変数が参照されればされるほどエラーがでやすくなっちゃいますよ(>_<)

オブジェクト型を使用してたら、処理対象ではないシートやブックに処理が行われる可能性あり!

計算がうまく行われない可能性あり!

 

■保守性が低い

このサブルーチンのグローバル変数はこれ、あのサブルーチンのグローバル変数の動きはこう、、、などなど

変数の後追いが面倒!

また、変数の型が変わればまたコードの書き直し、、、

めんどくせぇw

 

などなどの理由で自分はグローバル変数が嫌いです。

 

デメリットばかり言っても仕方ないので、

あえてメリットも言います

 

メリット

 

■初級者がとっつきやすい

最大の要素がこれだと思います。

モジュールレベル変数を使う人は、 Functionプロシージャ や 引数付きSubプロシージャ が扱えないからでしょう。

例えばブックとブックで計算や転記処理をする場合、

モジュールレベル変数でブックとブックの処理を強引にがちゃがちゃ実行させているのかと思います。

 

■コードの少ないモジュールなら変数がスッキリ?

強引にあえて言えば何度も変数を宣言しなくていいのでコードがスッキリ?する。かもしれません、、、

構造体使えばよくね?って思いますがw

 

こんな感じでモジュールレベル変数をディスってしまいましたw

是非、モジュールレベル変数の使用は控えましょうw

 

ではでは♪

WordPressの新エディタが非常に使いづらい件

ワードプレスのバージョンアップで Gutenberg ? という入力方法が導入されましたが、

officeを使い倒している自分にとってこのワードプレスのバージョンアップは改悪でした。。。

背景色・フォント色の指定がめんどい!!

文字サイズの指定がまたまためんどい!!

なんじゃブロックって!!勝手に違うエリアになってない?

中央揃えとか 文字の位置の操作しづらい!!

etc…

 

新エディタってワードプレス愛用者とかWEB系でヘビロテで慣れまくった人専用なんじゃね?w

 

すぐさまClassicEditorに戻しましたww

ClassicEditorに戻すにはワードプレスのプラグインにあります。

「ClassicEditor」で検索すれば速攻ででてきます。

 

ClassicEditorのプラグインの評価高いので、

自分と同じように

ClassicEditorの方がいいと思っている人の方が多いんじゃないのかなww

 

ではでは!

セル内の改行を削除する VBA マクロ vbLf

セル内の改行は vblfを使用すれば削除できます♪

 

改行を削除したいセルに対してReplace関数とvblfを組み合わせればきれいさっぱり改行がなくなります!

 こんな感じの改行を下記のようにします!

 

 

改行コードは vbcrlf とか vbnewline とかありますが、

 

セルの改行vblf !と覚えておけばいいと思います♪

 

サンプルコードは下記です

 

ではでは♪