3339Q.Excelのマクロ付きブックで、商品管理を行っているのですが、商品毎にECサイトの価格をチェックする業務があります。その際、商品にあったECサイトを表示するボタンを設けたいと思うのですが、VBAからインターネットエクスプローラーを起動し、サイトを表示することはできるのでしょうか。A.Excelマクロでは、InternetExplorer.Applicationというオブジェクトを使用すれば簡単に実現できます。簡単なやり方でインターネットエクスプローラーの表示方法を確認しましょう。下記は、マクロの中で書いたアマゾンのサイトを表示させるコードとなります。SubExcel画面の「開発」リボンの「マクロを表示」から上記関数を選択し直接実行して動作に問題がないか確認して下さい。それができたら、後は簡単ですね。コード中の★の部分を、商品にあったECサイトのアドレスが代入されるようにプログラムを変更すれば良いのです。このようにして、単純なホームページの表示は実現できます。ここからは、さらに発展した使い方です。ECサイトでは、多くのサイトで、サイトのアドレス(URL)にパラメーター(商品名や、ISBNなど)を付けることで、商品ページをダイレクトに表示できるような仕掛けがあります。後ろに、検索キーワードを入れたURLで、検索結果のページがすぐに開きます。※ただし、ここで指定できるのは英語のみ。日本語は、「エンコード」という処理をしないと正常に処理されません。これについては、興味ある方は調べてみて下さい。この方式が分かれば、Excel上に記入した、ある商品の名前をamazonで検索した状態でインターネットエクスプローラーを開く、という処理が自動化できるということになります。アイデア次第でいろいろ活用できそうですね。2959Q.マクロを使って、あるフォルダに集められた週報のファイルを一覧にして作業をすることになりました。フォルダのファイルを一覧して表示するようなVBAのコマンドはあるのでしょうか。A.Excelマクロの関数「Dir」を使用すれば、比較的簡単にファイルの一覧を取得できます。した場合の、まずはコードを先に示します。Editorを起動して下さい。Editorの左ペインから選択し、コードエディタから下記を記述します。Subこれを実行すると(Excel画面に戻って、「開発」リボンの「マクロを表示」から上記関数を選択し実行する)、選択しているシート上のA1から下にファイルの一覧が表示されたと思います。★(1)の部分で、Dir関数の引数に、対象のフォルダを指定します。このとき、「*.*」を指定することで存在する全てのファイルを指定しています。※このような指定の方法を「ワイルド・カード」と言います。*は文字は任意の文字の任意の回数の繰返しを示します。従って、「*.*」は、拡張子(Excelならxlsx)付きのファイル名なら何でも、ということですね。その後、★(2)では、Dir関数の引数をなしにすることで、前回Dir関数を行った対象のフォルダを続けて検索する、と言う意味になります。(★(2)で★(1)と同じ対象フォルダを指定すると、都度新たに検索をはじめからやり直すことになるので、ずっと1個目のファイルが表示され続け止まらなくなるので注意してください!)そして対象のフォルダからファイルが見つからなくなると、Dir関数が空文字を返すので、はじめのDoループを脱出して、処理終了となります。こちらの処理もいろんな業務効率化のマクロで使えそうなので、是非マスターして下さい。12096Q.Excelの数式を使ってある集計処理を行っているのですが、上司から、その集計結果表をホームページ業者にHTMLファイルとしてお渡しして、ホームページに掲載してもらうように指示されました。今のExcelブックを簡単にHTMLに変換する方法はあるでしょうか。A.ExcelマクロのPublishObjectsというオブジェクトを使用すれば簡単に実現できます。単純なケースは、集計結果表のExcelファイルにマクロを追加して対応して実現することが可能です。集計結果表のExcelファイルをマクロ付きブックとして保存し、マクロを使える状態にします。Editorを起動して下さい。実行することで、ExcelファイルをHTMLファイルとして出力することができます。ここでは、「集計」シートの内容を、cドライブ直下に、result.htmlとして出力しています。Subこれを実行する際には、Excel画面の「開発」リボンの「マクロを表示」から上記関数を選択し実行するようにして下さい。(Excel画面上にボタンなどを貼り付け、そのボタンから上記の関数を実行するとエラーとなるようです。)このやり方を覚えると今まで作った資料なども簡単にWebにアップすることができますね。Excelファイルだと、Excelで開かないと基本的に中身を見ることができません。この方法でHTMLファイルにすれば、このケースのようにホームページに組み込んだり、HTMLファイルをテキストエディターで開き、中身のHTMLテキストをブログに貼り付けたりすることでブログ記事に組み込むようなことが可能となります。15257Q.商品リストなどをExcelで扱う際に、商品の種類だけを知りたいなどで、2行以上ある同じ商品のリストを1行にまとめることはVBAで可能でしょうか。A.VBAを使えばとても簡単に実現可能です。重複行の削除は、VBAのプログラムでひとつひとつ地道にリストを辿れば可能ですが、実はVBAに便利なコマンドがあります。今回はそれを紹介します。シート上に以下のようなリストを作成して下さい。これは1日の商品の売り上げリストをイメージしました。A4ノートさて、VBAの画面を開き、下記のコードを入力します。Subたったこれだけです。RangeオブジェクトでA1セルを含む表を指定し、そのRemoveDuplicatesメソッドで重複を除去します。重複を判定する列は、2列目すなわちB列(販売商品)ですね。)なので、データではないことを示しています。プログラムが完成したら、「デバッグ」メニューの「VBAProjectのコンパイル」をして、エラーが出ないことを確認します。シートの画面に戻り、「開発」リボン※の「マクロ」で、上記のプログラムの名称「重複データ削除」を実行すると、シート上にテキストファイルの内容が出力されます。いろんな場面で使用できそうなコマンドですので是非覚えてみて下さい。※「開発」リボンが見えない場合は、下記の記事を参考にしてください。2639Q.マクロを使用して集計を行いたいのですが、Excelシート上では入力できる合計「=SUM(・・・)」は、VBAでは見当たらず、どのように行えば良いでしょうか。A.WorksheetFunctionクラスのSUMメソッドが使えます。WorkSheetFunctionクラスには、その名の通り、「ワークシートの関数」がいろいろ用意されています。そのうちのSUMメソッドを使用して、下記のように記述します。SubSumメソッドの引数に、集計したいセルを表示すれば良いのです。WorkSheetFunctionのメソッドは沢山あります。Editorで「WorksheetFunction.」とドットを打てばメソッドの一覧が表示されますので、他にも使える関数がないか確認してみて下さいね。2017当ブログではビジネスシーンで起こるPCの様々な疑問を記事にし、解決するブログです。個別のご相談も承っておりますので、ご不明な点はお気軽にお問い合わせフォームor下記メールアドレスへお問合せくださいませ。オフィスソフト活用・業務効率化Q&AブログHomeお問合せ。