2015.08.10エクセルVBAを使ってバラバラの経費精算書のデータをデータベースに集約するシリーズです。前回はこちらの記事でした。【エクセルVBA入門】With文でプログラムをスッキリわかりやすく書くエクセルVBAを使ってバラバラの経費精算書のデータをデータベースに集約するマクロを作っています。今回はWithというステートメントを使って、オブジェクト名を省略してプログラムをスッキリ書く方法をお伝えします。tonari-it.com2015.08.02With文を使ってオブジェクトを省略する書き方について解説をしました。今回はエクセルVBAでWith文と組み合わせて他のワークブックを開く書き方についてお伝えしていきます。前回のプログラムはこちらです。Sub太郎さんの経費精算書ファイル「201807経費精算書_経費_3001.xlsx」の経費データを「経費データ」シートwsDataにコピー&ペーストをしていくというものです。ファイルを開いていないと実行できないただ、このプログラム...太郎さんのファイルを開いた状態からでないと、以下のようなエラーが出てしまいます。「インデックスが有効範囲にありません」...ちょっとよくわからないメッセージですね。「デバッグ」ボタンをクリックすると、以下の部分でエラーが発生していることがわかります。答えを言っちゃいますと、このエラーは、Workbooksコレクションの中に「201807経費精算書_経費_3001.xlsx」が存在していないことに起因しています。ファイルを開いてないんですから。今回はこの点を解消すべく、ファイルが閉じていてもプロシージャを実行できるように修正をしていきます。Openメソッドで他のワークブックを開くファイルが閉じているのであれば、開いちゃえばいいんですね。WorkbooksコレクションのOpenメソッドを使えばOKです。開くブックのフルパスつまり、冒頭に以下のような処理を入れてあげましょう。wb.Worksheets(1)Openメソッドの使い方についてはこちらの記事をご参考ください。初心者向けエクセルVBAのシリーズとして請求書を作成するマクロの作り方をお伝えしています。今回は、エクセルVBAで新たなブックを開く方法です。コレクションやWorkbooksプロパティについても解説しますよ。tonari-it.com2018.03.04ちなみに、太郎さんの経費精算書は、現在のマクロブックと同じ階層の「data」というフォルダの中にあるとします。その際の、開くブックのフルパスの指定の仕方などは、以下の記事が参考になります。【初心者向けエクセルVBA】現在マクロを書いているブックのフォルダパスを取得する初心者向けエクセルVBAのシリーズとして請求書を作成するマクロの作り方をお伝えしています。今回はエクセルVBAで現在マクロを書いているブックのフォルダのパスを取得する方法についてお伝えします。tonari-it.com2018.03.05ファイルを開いてデータを取り込むプロシージャ以上をまとめたプロシージャがコチラです。Sub開いたら閉じるべきなので、最後にCloseメソッドも入れています。ワークブックを開いた上でWithさて、以上で特に問題はないのですが、今回は一歩進んだOpenの仕方をしていきたいと思います。以下のように、OpenメソッドとWith文と組み合わせるのです。Withまず、1つ目のWith文により、開いたWorkbookオブジェクトを省略することができます。難しい話ですが、Openメソッドの戻り値として開いたWorkbookオブジェクトを取得できますので、それをWith文のオブジェクトとして指定するわけですね。.Worksheets(1)」で、その開いたワークブックの1枚目のWorksheetオブジェクトを省略できます。2つ目以降のWithブロックでオブジェクトを省略した場合は、開いたワークブックの1枚目のシートを対象にした処理ということになります。百聞は一見にしかず、今回のプログラムをこの書き方で記述してみますと、以下のようになります。Subかなりスッキリしていますよね。開いたワークブックのシートをすぐに使いたいときにはWithとOpenを組み合わせると非常に簡潔にプログラムを書けるようになります。ファイル名」ではなくて「Workbooks.Open(ファイルのフルパス)」となっていることに注意してください。メソッドの戻り値を使う場合はカッコが必要なのです。まとめ以上、エクセルVBAでWithをしながら他のワークブックを開く方法についてお伝えしました。ワークブックを開くときはWithで開くことにより以降のオブジェクト名の表記を省略しスッキリ記述することができますし、開いたワークブック用のオブジェクト変数などを用意する必要もなくなります。次回はVBAでフォルダを操作するためにFileSystemオブジェクトを使います。【エクセルVBA入門】フォルダやファイルを操作するFileSystemオブジェクトとその使い方エクセルVBAでバラバラの経費精算書をデータベースに集めるマクロの作り方をお伝えしています。今回はエクセルVBAでフォルダやファイルを操作するFileSystemオブジェクトとその使い方についてです。tonari-it.com2018.06.21どうぞお楽しみに!連載目次:エクセルVBAで経費データをデータベースに集約する請求書シリーズと逆のパターンですが、バラバラの帳票からデータ一覧つまりデータベースに情報を集めて蓄積していく、というお仕事も多いと思います。ここでは各担当者から提出された経費精算書をデータベースに蓄積するプログラムを目標にして進めていきます。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。関連記事Excel・VBA活用術エクセルVBAのQueryTable.RefreshメソッドでCSVをシートに出力する方法エクセルVBAのQueryTable.Refreshメソッドを使用して、クエリテーブルに取り込んだCSVをWorksheetに出力する方法を紹介します。高速にCSVを取り込む方法をシリーズでお伝えしています。「初心者でもわかるエクセルVBAのクラスモジュール」をテーマにシリーズ連載をしております。今回は、エクセルVBAでCollectionオブジェクトを使ってインスタンスの集合をコレクション化する方法をお伝えします。VBAで、既読メールをUnreadプロパティで未読メールにする方法をご紹介しています。単体ではあまり便利さが感じられないかもしれませんが、他のメソッドやイベントと組み合わせれば、とっても便利に使えるかもしれません。複数回の連載で、Outlookのメール添付ファイルを、マクロ実行のワンステップで指定フォルダに保存する方法をご紹介しています。今回は連載の仕上げ、AttachmentsコレクションからAttachmentオブジェクトを取得して、SaveAsFileメソッドで添付ファイルを指定フォルダに保存する方法をご紹介しています。2018.10.16Excel・VBA活用術エクセルVBAでBOM無しのUTF-8でCSVファイルなどを出力する方法エクセルVBAでデータを様々なファイル形式に書き出す方法についてお伝えしています。今回は、エクセルVBAでBOMなしのUTF-8にてCSVファイルを書き出す方法についてお伝えしていきたいと思います。2016.06.12Excel・VBA活用術エクセルVBAでグラフのデータ範囲を変更しながらPowerPointに連続して貼り付けるエクセルVBAでPowerPointを操作する方法についてお伝えしています。今回はエクセル上のグラフのデータ範囲を変更しながら次々にPowerPointに貼り付けていくプログラムについて紹介をします。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Apps2PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Apps2PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。開発者プログラムとは、またどうして期限切れになったのか2020.02.222020.02.22ノンプロ研の福岡で初イベント「ノンプロ研無料体験@福岡」を開催しました!2020.02.14GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説2020.02.092020.02.09新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法2020.02.082020.02.12Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。