Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
![【Excel VBA】気象庁のデータをスクレイピング - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/ddd40b68724337c38b827f4ed678e70fc58f3e59/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwRXhjZWwlMjBWQkElRTMlODAlOTElRTYlQjAlOTclRTglQjElQTElRTUlQkElODElRTMlODElQUUlRTMlODMlODclRTMlODMlQkMlRTMlODIlQkYlRTMlODIlOTIlRTMlODIlQjklRTMlODIlQUYlRTMlODMlQUMlRTMlODIlQTQlRTMlODMlOTQlRTMlODMlQjMlRTMlODIlQjAmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTgzNjEzMTQ2MDdiZGEwYTQ2ZjcyMTk5NTg0MjkzNTIy%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDA2THhBaTlHQ09tUmlnVUkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWRkYWEyOGEzMzJhMzYwYTRkNWMxNmZjN2I3MzgzYzZh%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D58221dc91cc46d59b7112c12b802aad6)
Excel VBAで組んだ処理でエラーが発生した時、デバッグモードに移ってしまうとどのモジュールのどのプロシージャでエラーが発生したのかよくわからなくなることがあります。 そのような場合、エラー発生箇所と内容を出力する画面をポップアップさせるようにしておくとデバッグが楽です。 方法としては、エラー内容レポート用の標準モジュールを用意しておき、エラートラップから当該モジュールを呼ぶというきわめて原始的な方法です。 エラーレポート用モジュール Option Explicit Public Sub displayError( _ plErrNum As Long, _ psErrDesc As String, _ psErrApl As String, _ psErrModule As String, _ psErrProc As String, _ Optional pvErrNote As
Err.Raiseステートメント C++やJava言語のようにtry-catchによる例外処理が必須な言語と比べるとVBAにはそこまで厳密な例外処理はまず要求されることはありません。 その理由で一番大きいのは、VBAはC++やJavaのように「絶対に異常終了してはいけない」とか「24時間常時稼働」などのような厳しい条件を付きつけられることがないことが挙げられます。 ちなみに、例外処理とは、ある関数内でなんらかの実行時エラーが発生した場合に、関数の呼び元でエラーを補足してもらい異常終了しないようにするための処理を言います。 VBAではC++やJavaのような厳しい条件を要求されることはほとんどないと思いますが、それでもある程度の性能を要求されることはあるでしょう。 そのような場合に、On Error Goto で「エラー発生しました。はい、異常終了で終わります」とするのではなく、エラーを事前
VBAは「Try-Catch」ができない!? 「!?」なんて言ってますが、もちろんできないです。(笑) ちなみに、VB.NETならできます。 ただ、Try-Catchがあろうなかろうが、正しくエラーハンドリングができるかどうかは別です。 大事なのは、モジュールを構造化したときに、 正しい経路で、エラーを伝播できるか だと思います。 ということで、VBAにおけるエラーハンドリングについて説明していきます。 何もしなかったらどうなる? こんな処理を考えてみましょう。 ' こいつは上位 Sub Main() ErrorMethod MsgBox "完了しました。" End Sub ' こいつは下位 Sub ErrorMethod() Err.Raise 513, "なにか起きた" End Sub このとき、Mainが上位、ErrorMethodが下位になります。 下位モジュールでエラーが起きてま
結論から言うと、VBAにはTry-Catch-Finallyが存在しない。 そこでOn Errorステートメントとラベルを使う。 一番簡単な例外処理(エラーハンドリング)は以下のとおり。 Sub ErrHandlingTest() On Error GoTo ErrorHandler Dim value As Long value = 2 / 0 '-- ゼロ除算のためエラー発生 Exit Sub ErrorHandler: '-- 例外処理 MsgBox Err.Number & ":" & Err.Description, vbCritical & vbOKOnly, "エラー" End Sub このようにすると、エラーが発生した時点で「On Error GoTo ラベル名」に指定したラベル名(上記の例ではErrorHandler)に飛ぶ。 エラーごとにキャッチしたい ひとつの例外しか
すんごい久しぶりっす。申し訳ない。別にわすれてたわけではありません。単に忙しかっただけです。でもブログはのんびり自分のペースで続けます。オス。 今回は、エクセルマクロをもっとオブジェクティブに使ってみたいと思います。今回はマクロを組む上で欠かせないエラー処理を極めます。これ使うとぶっちゃけすごい便利。 目的はエラー処理を一定の書式で同じ法則で入れられること これ。マクロをどんどん組んでいくとどんどん複雑化していきます。その中でエラー処理をどのように拾っていくのか?ということが非常に重要になっていきます。場所によって処理の仕方や、内容が変わってしまうと、マクロ1本の中に同じエラー処理なのにいろんな書き方存在してしまい、非常に煩雑化します。もちろんその後のメンテナンスにも関わってきますよね? これを共通化するのが目的です。今回は中級者よりのお話なのでオブジェクトとは?は勿論理解しているし、クラ
Excelのグラフはy軸は2軸までしか対応しておらず、複数のグラフを並べて表示することが多いかと思います。 特に、時系列データ分析では、同じカラムの別時間帯のデータが欲しい場合が多いので下記のモジュールを作成しました。 コード Start,Endにセルを絶対参照で指定してやることで、すべてのグラフの参照個所を変更することができます。 replaceを用いることですべての文字列を置き換えることになりますが、これの応用でタイトルやy軸名称など一括で変更することができます。 Function Macro() '=============================================================== 'アクティブシートに存在するすべてのグラフの文字列を入れ替える。 '===============================================
VBAの多次元配列は2種類ある? ExcelVBAを書いてたら避けては通れない配列。 セルへの出力を高速化するにも、配列を使うのはメジャーな手段です。 複数行×1列、または1行×複数列であれば1次元配列でもセルへの出力が可能ですが、複数行×複数列となると1元配列ではデータが保持できません。 そんな時に出てくるのが多次元配列。 元々Java屋なので、多次元配列=配列の入れ子として理解していたのですが、VBAではそうではないパターンがあったので、まとめておきます。 配列操作全般に関しては、この辺にもまとめてあります。ArrayUtils的に使える関数群です。 →【VBA】使い回せる配列操作用関数 サンプルコード CSVファイルを読み込んで、ワークシートに出力します。 CSVの各行のデータに対して出力対象かどうか判定し、対象である行だけを出力することにします。 今回は、ヘッダ行とCSVの1項目目
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
インタフェースを用いたポリモーフィズムをやってみた 立山秀利さんが著書の中で使っていた音楽プレーヤのたとえが私にとっては一番分かりやすかったので、それをVBAでやってみる。 方針としては、 「RecordPlayer」クラス、「CDPlayer」クラス、「MP3Player」クラスの3つのクラスを作る 3つのクラスに共通する「音楽を再生する」という機能を「play」メソッドとして括り出す 「IMusicPlayer」インタフェースに「play」メソッドを定義する 「RecordPlayer」、「CDPlayer」、「MP3Player」の各クラスで「IMusicPlayer」インタフェースを実装する 「RecordPlayer」、「CDPlayer」、「MP3Player」の各クラスで「play」メソッドを独自に定義する これでポリモーフィズムが実現できるはず。 イメージとしては、 音楽を
VBAにおけるディクショナリ VBAには標準の配列データ型以外に、Dictionaryというデータ型を用いることが出来ます。 Dictionary型のデータを使う為には、大別して2つの方法が存在します。 1.宣言 Dim dict As New Dictionary を用いる方法。 これは一見お手軽な方法ですが、事前にVBエディタの[ツール(T)]->[参照設定(R)]から[Microsoft Scripting Runtime]のチェック欄にチェックを入れておく必要があります。 この設定後であれば、 Dim dict As New Dictionary と宣言することでディクショナリ型が使えるようになります。 しかしながら、上記設定をしておかなければ、上記宣言はエラーとなってしまいますので、例えば配布する必要があるEXCELシートで使用する場合、余計な手間、コストがかかることとなります。
はじめに VBAでJSONをパースする際にはCreateObject("ScriptControl")を使用するのが一般的でしょう。(サンプル例) しかし、この手段は32bit限定であり、64bitでは使用できません。将来性を考えたら他の手法を用いるべきであり、JSONパースのライブラリーとして一般的なVBA-JSONを使ってみることにしました。 導入の背景 Excel2010のサポートもそろそろ来年にきれるし、必要なときに必要なだけバラバラに買っていたのをやめて、Office365にバージョンアップしようとしたら64bit版がインストールされてしまって、JSONを使えなりました。なお、"HtmlFile"なる手段を使うやり方もあるようですが、IEやedgeの将来性を考えたらこれもつかいたくありません。 今までVBA-JSONを見送った背景 なら、VBA-JSONしかないとなりましたが、
[アーティクル]06/11/2024 3 人の共同作成者 適用対象: Excel 2010, Excel 2013, Excel for Microsoft 365, Microsoft Excel for Mac 2011, Excel for Mac for Microsoft 365 概要 この記事では、Microsoft Excel が浮動小数点数を格納および計算する方法について説明します。 これは、丸めまたはデータの切り捨てのために、一部の数値または数式の結果に影響を与える可能性があります。 概要 Microsoft Excel は、浮動小数点数の格納方法と計算方法を決定するために IEEE 754 仕様に基づいて設計されました。 IEEE (Institute of Electrical and Electronics Engineers) は、特にコンピューター ソフトウェア
はじめまして。KonKonと申します。 プロダクトロゴ色違いの2案を提案させていただきます。 ■主な特徴  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ・わかりやすさと楽しさをフラットなデザインで表現しました。 ・送信ボタンにも強弱をつけ、直感で操作できるデザインを目指しました。 ・操作が比較的に慣れているWEBの入力フォームのようなデザインに近づけました。 ■他社ツールとの差別化  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 訓練メールで検索すると、他社は結構な送信単価でしたので、 貴社サービスは「低価格帯」を想起させるユーザフレンドリーな雰囲気にしました。 ※ロゴやタイトル、ボタンなどの文字はメリハリをつけるためテキスト画像にしております。 ※それ以外の文言は「メイリオ」フォントを使用しているため、容易に修正いただけます。 ※「無料モニター版」とある部分について、他のバージョンも必要でしたら納品後でも無償で作成します
エクセルで大量のデータを扱う場合、シートの読み込みや書き込みで処理が非常に遅くなる場合がある。1000個程度のデータで問題なく動いているのに実際に使う数十万個のデータだと処理時間が長すぎて実用できないこともある。ここでは処理速度と使いやすさを意識したVBAプログラムのテクニックを紹介したいと思う。 エクセルのマクロやVBAと言うともう十数年と使われている言語であるため、様々な参考書が出ていたり、ネットで紹介されていると思う。ただ、あまり速度まで気にしてサンプルプログラムが書かれていることはあまりない。プログラムの組み方に関してはプログラマの好みでいいと思うが、VBAに関しては組み方によって処理速度が大きく変わるので、作るのであればなるべく最速で動くようにしたい。(エクセルと連携したVBAが特殊ではあるが、仕事などではよく使われるだろう) 現在のパソコンであれば処理速度を意識しなくてもいいん
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く