タグ

ExcelとVBAに関するteddy-gのブックマーク (33)

  • 【ExcelVBA】HTTP/HTTPS通信でWebページを取得する - Qiita

    はじめに 業務でVBAのプログラムを作っていた時に、内閣府の祝日情報を扱いたいと思ったのですが、VBAではお手軽にHTTP/HTTPS通信出来る組み込みの関数が用意されていませんでした。 (※内閣府の祝日情報はCSV形式で提供されています。) そこで様々なサイトを参考にしながら、HTTP/HTTPS通信でWebページを取得できるモジュール(クラス)を作成してみました。 作成したクラス VBAでHTTP通信するプログラムを作るにあたり、こちらの記事を参考にしてベースのプログラムを作りました。 また、HTTPS通信に対応させるにあたって、こちらの記事を参考にしました。 幾つかのサイトで紹介されていたサンプルコードにはCreateObject("MSXML2.XMLHTTP")が使われていましたが、この書き方だとTLS1.2を利用しているページでエラーとなってしまいます。 HTMLではなく単なる

    【ExcelVBA】HTTP/HTTPS通信でWebページを取得する - Qiita
    teddy-g
    teddy-g 2021/01/24
    HTTPSでちゃんとresponseBody取れるのは良い。問題はUTF-8だ。
  • エクセルVBAでIEを使わずにHTMLドキュメントを取得する方法

    エクセルVBAでHTTPリクエストをする方法をお伝えしました。 しかし、この方法で取得したHTMLドキュメントは”文字列”なんですね。 正規表現を使って処理をすることはできますが、getElement~メソッドを使ってIDやClass、タグ名などを使って要素を取り出すということが残念ながらできません。 ということで、今回はエクセルVBAでHTTPリクエストにより取得したHTMLテキストから、HTMLドキュメントオブジェクトを生成する方法をお伝えします。 つまり、IEを使わずにHTMLドキュメントを取得するということになります。 では、行ってみましょう。 前回のおさらいと今回のお題 まずおさらいからです。 前回のプログラムはこちらです。 Sub HTTPリクエスト() Dim httpReq As XMLHTTP60 Set httpReq = New XMLHTTP60 httpReq.O

    エクセルVBAでIEを使わずにHTMLドキュメントを取得する方法
    teddy-g
    teddy-g 2021/01/24
    HTMLDocumentにWriteすればエレメントでアクセスできるのは便利。
  • Mac版ExcelでVBAのDictionaryを使えるようにするまで - Qiita

    Mac版のExcelを使ってVBAを開発していると使えない機能があって嫌になることが投げ出したくなることが、VBAの勉強を初めて1週間で、すでに2回もありました。(いやもっとあったけど、Macに限る話じゃないからカウントしません。) 1つ目は、ユーザーフォームを開発できない。 これ致命的じゃないでしょうか?マイクロソフトさん。2011年のMacExcelでは使えていたみたいですけど、2016年版くらいから使えなくなったという、後のバージョンで使えなくなるというマイクロソフトさんお得意の、機能を減らして新バージョンを購入させる戦法ですね。。 2つ目は、Mac版ではDictionaryが使えないということ。これも致命的というか、もうVBAMacで開発できない、動かないと言っているようなもの。ユーザーフォームが使えないのは妥協しても流石に根幹的な機能であるDictionaryが使えないのは、

    Mac版ExcelでVBAのDictionaryを使えるようにするまで - Qiita
    teddy-g
    teddy-g 2020/06/30
    Mac版ExcelではDictionaryが使えないという衝撃の事実
  • 【VBA】Formatで日付・時刻、数値、文字列の表示設定

    Format関数って使ってますか? Format関数は出力表示する際の表示形式を設定する場合に使用します。日付・時刻の表示形式は、和暦や曜日の表示なども色々と設定できるようになっていますので、使う機会も多いかと思います。 この記事では、Format関数について

    【VBA】Formatで日付・時刻、数値、文字列の表示設定
    teddy-g
    teddy-g 2020/06/30
    Excel VBAで日付をフォーマットするときはFormat関数が便利
  • VBAでJSONを読み込んでみる - Qiita

    なんかふと気になったのでExcelでJSONを読み取る方法を探した。 JSONパース自体はこちらを参考にさせてもらった。 ExcelでJSONを扱う場合のつまずきポイント まず前提として、外部ファイルであるJSONファイルを開き読み込んでシートに一覧出力する、 という処理を行いたい。 JSONの構造 JSONの構造は下記。 {"tweet":[ { "id":"0001", "daytime":[ { "year":"2019", "month":"01", "day":"01", "hour":"12", "minute":"00" } ], "contents":"テストテストテスト" }, { "id":"0002", "daytime":[ { "year":"2019", "month":"01", "day":"01", "hour":"12", "minute":"00" }

    VBAでJSONを読み込んでみる - Qiita
    teddy-g
    teddy-g 2020/02/13
    ScriptControlは64bitでは無理なんだよたえこ。
  • VBAで安全にエラーハンドリングする - Qiita

    VBAは「Try-Catch」ができない!? 「!?」なんて言ってますが、もちろんできないです。(笑) ちなみに、VB.NETならできます。 ただ、Try-Catchがあろうなかろうが、正しくエラーハンドリングができるかどうかは別です。 大事なのは、モジュールを構造化したときに、 正しい経路で、エラーを伝播できるか だと思います。 ということで、VBAにおけるエラーハンドリングについて説明していきます。 何もしなかったらどうなる? こんな処理を考えてみましょう。 ' こいつは上位 Sub Main() ErrorMethod MsgBox "完了しました。" End Sub ' こいつは下位 Sub ErrorMethod() Err.Raise 513, "なにか起きた" End Sub このとき、Mainが上位、ErrorMethodが下位になります。 下位モジュールでエラーが起きてま

    VBAで安全にエラーハンドリングする - Qiita
    teddy-g
    teddy-g 2020/02/13
    Try Catchを実装する気はないのだろうか。いまどきOn Error Go ToってBASICかよ!ってBASICだったな。
  • ユーザー定義関数を作る:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

    ツイート VBAには、値を返さないSubプロシージャと、値を返すFunctionプロシージャがあります。 Sub Sample1() Dim buf As Long buf = 123 MsgBox Func1(buf) End Sub Function Func1(arg As Long) Func1 = arg * 2 End Function Func1のような、値を返すFunctionプロシージャは、ワークシート上でも使用できます。 ワークシート上で使用することを目的としたFunctionプロシージャを、ユーザー定義関数と呼びます。 たとえば、上記のFunc1は、セルに「=Func1(123)」のように入力することで、SUM関数やVLOOKUP関数などと同じように使うことができます。 引数として数字を受け取るユーザー定義関数は、上記Func1の「(arg As Long)」のように

    teddy-g
    teddy-g 2020/02/13
    ユーザ定義関数のTips色々。オプションの引数とか、不定の引数とか。忘れやすいので。
  • VBA基本(Range,Cellsの組み合わせでシート指定)

    セル参照するプロパティのシート指定は同一でなければなりません。 RangeプロパティとCellsプロパティを組み合わせて、行や列を変数にしてセル範囲を指定する方法です。 Range(Cells(GYO1, COL1), Cells(GYO2, COL2))という書き方で、 Cellsプロパティが指定しているセルを左上、右下としてのセル範囲のRangeオブジェクトが取得できますが、 この時にシートを明示しようとする時の間違いです。 Worksheets("Sheet1").Range("A1:D3")という書き方はよく目にします。 これにならって、RangeプロパティとCellsプロパティを組み合わせてセル範囲を指定する時の書き方です。 Dim GYO1 As Long, GYO2 As Long, COL1 As Long, COL2 As Long GYO1 = 1: COL1 = 1

    teddy-g
    teddy-g 2016/04/09
    RangeとCellsってシートオブジェクトから明示的に指定しないといけなかったのか。だから昔いちいちactivateしてたんだな。
  • Integer型とLong型はどちらを使うべき? | VBA性能向上委員会

    VBAで整数を扱う型には、『Integer型』と『Long型』があります。 Integer型が扱える数字の範囲は、-32,768 ~ +32,767 です。 Long型が扱える数字の範囲は、-2,147,483,648 ~ +2,147,483,647 です。 上記範囲を超えた数字を設定しようとすると、オーバーフローを起こし、コンパイルエラーとなってしまいます。 Long型であれば許容範囲が広いので、オーバーフローはしないでしょうが、メモリのことを考えると無駄な領域は確保したくない、というのがプログラマの考えるところでしょうか。 さて今回は、この二つの整数型について、どちらを使用すればいいかを、性能の見地から検証をしてみたいと思います。 Int型 サンプルプログラム Sub int型() Const INT_MAX As Integer = 32767 Const INT_MIN As I

    teddy-g
    teddy-g 2016/04/09
    VBAで型宣言って面倒だからあまりしないけど、IntegerよりLongの方が速いらしい。
  • http://keep-on.com/excelyou/2001lng2/200110/01100049.txt

    teddy-g
    teddy-g 2014/07/27
    GET.CELL関数のリファレンス。65種類も検査方法があるらしい。マクロなのでEXCEL2010だとxlsm形式で保存しないと使えない。
  • オートシェイプ(直線・矢印・双方向矢印): .xls

    「オートシェイプ」-「線」-「直線/矢印/双方向矢印」 '直線を引く ActiveSheet.Shapes.AddLine(始点X, 始点Y, 終点X, 終点Y).Select ------------------------------------------ '始点のスタイル Selection.ShapeRange.Line.BeginArrowheadStyle = 定数 '終点のスタイル Selection.ShapeRange.Line.EndArrowheadStyle = 定数 '定数 msoArrowheadNone '矢印なし msoArrowheadTriangle '矢印 msoArrowheadOpen '開いた矢印 msoArrowheadStealth '鋭い矢印 msoArrowheadDiamond 'ひし形矢印 msoArrowheadOval '円形矢

    オートシェイプ(直線・矢印・双方向矢印): .xls
    teddy-g
    teddy-g 2014/04/30
    VBAで線を引くときの矢印のタイプ指定について。
  • Excel/VBAでワークシート関数を使うのに苦戦 - まりふのひと

    (結論はこちら) パソコン同好会で使っている「よくわかる Microsoft Office Excel演習問題集」の Lesson36 に「カレンダー」がある。「インストラクターのネタ帳」にも、年度末のこの時期、結構なアクセスがある らしい。 因みに、「Excel演習問題集Lesson36「カレンダー」の補完」のアクセス件数を調べてみた。 一週間後に迫った来年度、当区の自治会会長をすることになったが、途端に入ってきた業務が「集会所の予約」管理。j留守にすることが多い(アウトドア志向のため)k無携帯電話。で、上述のカレンダーのことがあったので、「実務に役立つカレンダー」作りに挑戦、自宅のどのパソコンからでも見られるようにしよう... Lesson36「カレンダー」は、予定は印刷して書き込む 方式である。例えば、パソコン同好会のように、「毎週○曜日の○時から使いたい」と言われると‥‥ そこでマ

    Excel/VBAでワークシート関数を使うのに苦戦 - まりふのひと
    teddy-g
    teddy-g 2014/04/30
    ワークシート関数を使うと実行時エラーが出る件
  • クレジットカード現金化の高還元率の優良店を選ぶためには

    クレジットカード現金化の高還元率の優良店を選ぶためには クレジットカード現金化の優良店を選ぶポイントは、換金率やスピードもありますが、そのほかにも見ておきたいポイントもあります。 お金に厳しい人が利用しますので、手数料やキャンペーンの有無、価格交渉ができる業者ということは見ておきたいところです。 それぞれどのような内容なのでしょうか。 手数料が無料であるクレジットカード現金化の業者には、手数料をすべて無料でしてくれるところがあります。 業者によっては、単純に手数料という名目で業者側の利益がとられていたり、振込手数料、事務手数料という名目で少額ながらお金がかかることがあります。 せっかく高い換金率が記載されていても、手数料の分が差し引かれることで、損をしたような気持ちになったり後から気づくこともあります。 これらの手数料は最初から公式ホームページに記載がある場合は了承したうえで申し込みもでき

    teddy-g
    teddy-g 2014/04/21
    EXCEL VBAでオートシェイプを追加するメソッドいろいろ。円は楕円で入れることができる。
  • 画像ファイルを挿入する:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

    次のサンプル1は画像をリンク貼り付けします。 ●サンプル1● Sub AddPictureSampLinkPaste() Dim myFileName As String Dim myShape As Shape myFileName = ActiveWorkbook.Path & "\mogtan.gif" '--(1) 選択位置に画像ファイルを挿入し、変数myShapeに格納 Set myShape = ActiveSheet.Shapes.AddPicture( _ Filename:=myFileName, _ LinkToFile:=True, _ SaveWithDocument:=False, _ Left:=Selection.Left, _ Top:=Selection.Top, _ Width:=0, _ Height:=0) '--(2) 挿入した画像に対して元画像と

    teddy-g
    teddy-g 2014/04/21
    EXCEL VBAで画像を挿入するときはshapes.addpicture。
  • クレジットカード現金化の高還元率の優良店を選ぶためには

    クレジットカード現金化の高還元率の優良店を選ぶためには クレジットカード現金化の優良店を選ぶポイントは、換金率やスピードもありますが、そのほかにも見ておきたいポイントもあります。 お金に厳しい人が利用しますので、手数料やキャンペーンの有無、価格交渉ができる業者ということは見ておきたいところです。 それぞれどのような内容なのでしょうか。 手数料が無料であるクレジットカード現金化の業者には、手数料をすべて無料でしてくれるところがあります。 業者によっては、単純に手数料という名目で業者側の利益がとられていたり、振込手数料、事務手数料という名目で少額ながらお金がかかることがあります。 せっかく高い換金率が記載されていても、手数料の分が差し引かれることで、損をしたような気持ちになったり後から気づくこともあります。 これらの手数料は最初から公式ホームページに記載がある場合は了承したうえで申し込みもでき

    teddy-g
    teddy-g 2014/04/21
    VBAで図形の塗りつぶし。
  • クレジットカード現金化の高還元率の優良店を選ぶためには

    クレジットカード現金化の高還元率の優良店を選ぶためには クレジットカード現金化の優良店を選ぶポイントは、換金率やスピードもありますが、そのほかにも見ておきたいポイントもあります。 お金に厳しい人が利用しますので、手数料やキャンペーンの有無、価格交渉ができる業者ということは見ておきたいところです。 それぞれどのような内容なのでしょうか。 手数料が無料であるクレジットカード現金化の業者には、手数料をすべて無料でしてくれるところがあります。 業者によっては、単純に手数料という名目で業者側の利益がとられていたり、振込手数料、事務手数料という名目で少額ながらお金がかかることがあります。 せっかく高い換金率が記載されていても、手数料の分が差し引かれることで、損をしたような気持ちになったり後から気づくこともあります。 これらの手数料は最初から公式ホームページに記載がある場合は了承したうえで申し込みもでき

    teddy-g
    teddy-g 2014/04/21
    画像を透明にする。fill.transparency。そのまんまだな。
  • 『画像の色の変更をVBAで』(うつぽっぽ) エクセル Excel [エクセルの学校]

    teddy-g
    teddy-g 2014/04/21
    画像を挿入してグレースケールにしたりする
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    teddy-g
    teddy-g 2014/04/21
    EXCELでヒートマップ。なんかまだるっこしいが、できればいいからこれでいいや。
  • VBAで、多次元のDictionaryを扱うことはできるでしょうか。 - Perlでは下記のようにして二次元の連想配列を扱えます。こ... - Yahoo!知恵袋

    VBAで、多次元のDictionaryを扱うことはできるでしょうか。 Perlでは下記のようにして二次元の連想配列を扱えます。 これをVBAのDictionaryを使って再現することができないでしょうか。 # ハッシュ作成 # %a = ( 'a' => { 'A1'=>1, 'A2'=>2, 'A3'=>3 }, 'b' => { 'B1'=>1, 'B2'=>2, 'B3'=>3 } ); #-- 1次元のみ取出す --# foreach my $key ( keys %a ){ print "$key, $a{$key}\n"; } #-- 全ての値を表示する --# foreach my $key1 ( keys %a ){ foreach my $key2 ( keys %{$a{$key1}} ){ print "$key1, $key2, ". $a{$key1}->{$ke

    VBAで、多次元のDictionaryを扱うことはできるでしょうか。 - Perlでは下記のようにして二次元の連想配列を扱えます。こ... - Yahoo!知恵袋
    teddy-g
    teddy-g 2014/03/18
    二次元dictionaryもできる。
  • No.17 VBAで連想配列 ~ Scripting.Dictionary

    VBAな方には連想配列というのはなじみのない言葉かもしれません。awkにはじまりPerlJava、ノーツ(LotusScript)でもリストとして実装されているものです。通常の配列の場合は数字をインデックスとして値を格納しますが、連想配列の場合は文字列をインデックスとすることができます。箱を配列とすると値は中身、それぞれの箱に名札(ラベル)を付けることができるので値を取り出すときも感覚的にわかりやすいですよね。それ以外にもメリットがあります。通常の配列の場合あらかじめ領域を確保しておく必要がありますが、連想配列の場合は不要で配列が溢れることを気にする必要がないのです。 Perlでの記述例 $Result{'山田太郎'} = 95; $Result{'鈴木次郎'} = 78; $Result{'田中三郎'} = 83; print $Result{'山田太郎'}; Dictionaryオブ

    teddy-g
    teddy-g 2014/03/18
    Dictionaryオブジェクトってなんかうまく使えないんだけどなんで?