mobazou

えー、iOS用に「巻き紙電卓」シリーズ(?)App出しています。社内ではメール誤送信対…

mobazou

えー、iOS用に「巻き紙電卓」シリーズ(?)App出しています。社内ではメール誤送信対策マクロやシステム情報の登録マクロをリリースしています。脱VBということでpythonの勉強始めましたが、Power Platformを勉強中。 既存のExcel 様式も解析して移行させるかな。

マガジン

  • OfficeScriptで行こう!

    Office Scriptにもなれないとですね。

  • VBAで行こう!!

    Pythonで行こうとおもいましたが、やはりVBAでないと当面の開発効率はよくないです。そのうちPythonに戻るかもしれませんが、当面はVBAのノウハウをためていきたいと思います。

  • 複雑なExcel様式をVBAで解析をする

    Excel様式がメンテ出来なくなっている人が多そうなので、VBAを使い解析することにしました。

  • SeleniumBasicで行こう!

    VBAからPhythonへ移行しようとしましたが、環境の整備で挫折。こんどはSelenimBasicを導入して引き続きVBAでの高度化を目指したいと思います。

  • Pythonで行こう!

    これまで自分はは仕事の効率化のためにVB(Visual Basic)を多用してきました。しかしVBは、コードの可読性・メンテナンス性が非常に悪く、C++やC#も候補として検討しましたが、VBからの移行に必要なOffice環境との連携に関する情報に乏しく、行き先不透明な状況でした。pythonもその候補の一つではありましたが、ブラウザを自動操作する紹介動画があがっており、Pythonとそのライブラリ群が、業務効率化という自分の目的に非常にマッチしたものであることがわかりました。実現にむけた具体的イメージが膨らみ、Pythonを使う業務効率化に具体的に取り組むこととしました。

最近の記事

  • 固定された記事

Python超入門 #001 [何故pythonへ向かうのか]

何故Pythonなのか(脱VB) こんにちはmobazouです。これまで自分はは仕事の効率化のためにVB(Visual Basic)を多用してきました。しかしVBは、コードの可読性・メンテナンス性が非常に悪く、このまま利用を拡大するとメンテナンスに追われる結果、新しいものが作れなくなってしまうという疑念がつきませんでした。そのため将来を見据え「脱VB」を指向し、後継の言語・環境を調べてきました。  C++やC#も候補として検討しましたが、VBからの移行に必要なOffice環

    • 【Office Script】順列に応じた並び替え処理

      VBAはいろいろできるものの、Power AutomateだとかOffice Scriptだとかで肩身の狭い思いがします。 今は、Teams上の組織のデータを集約する処理をPower Automateで作っていますが、Power AutomateでデータをExcelに追加すると、Excelのくせに一番最下行にしか追加してくれません。 そのため、データの追加のあとOffice Scriptで並び替えをするコードをつくってみました。しかし会社毎に並び替える際に、やはり順序という

      • Power Automateのクソ仕様(複数項目の取得(GetItems)/フィルタークエリ)

        Power Automateには言いたいことがたくさんありますが、ここではSharePointの「複数項目の取得」のフィルタークエリの設定上の注意点について触れたいと思います。 1.まずマニュアルがクソ PAのアクション名は「複数項目の取得」ですが、日本語マニュアル上は「項目の取得(GetItems)」となっており、同じ名称の「項目の取得(GetItem)」と区別がつきません。 英語マニュアルと日本語マニュアルはなんとかOperation IDでたどれますが、実際のPAの

        • [VBA]基本関数(ログファイルの削除)

           ログファイルの場合、古いログファイルが残っているケースでは削除し、1から生成したい場合があります。ファイルが削除できないまま処理を進めるとログが記録されないなどの問題が生じるためです。  そのため、単にファイルを削除するのではなく、ログファイルが削除できないケースも処理として含めるべきかと思います。これに対応したコードはFunctionとして共通化すべきかと思います。  コードとして以下となるかと思います。フォルダが深くても動くようにfsoで記述していますので、Micros

        • 固定された記事

        Python超入門 #001 [何故pythonへ向かうのか]

        マガジン

        • OfficeScriptで行こう!
          1本
        • VBAで行こう!!
          18本
        • 複雑なExcel様式をVBAで解析をする
          1本
        • SeleniumBasicで行こう!
          4本
        • Pythonで行こう!
          9本

        記事

          [VBA]ChatGPTでVBA生産性10倍

          ChatGPTでコード生成されるようになり、かなり生産性が上がりましたが、同じ生成AIをつかうにも、使い方でだいぶ生産性に違いがあったのでご紹介します。 部品から作るChatGPTもいきなり複雑なコードは作れません。 ますば部品から作るようにしましょう。そのため、指示でサブルーチンを生成してきても、必ず「関数にして」と指示し、関数を生成させるようにしてください。 テストする関数を生成させると、必ず呼び出しコードサンプルも生成してきます。このコードも合わせて実装し、必ずテス

          [VBA]ChatGPTでVBA生産性10倍

          【VBA】Excelの入力規則にリスト以外の値を組み入れることが出来るようにする

          Excelでは、ユーザの入力ミスを予防するために入力規則(リスト)を設定することで、プルダウンリストからユーザが選択するように設定できます。 しかし、入力値が予め予想できない場合で、ユーザによる入力のばらつきを抑えるために、ユーザが入力した値でリストを作り、プルダウン選択するという機能は、通常のExcelの機能の範囲内ではある程度作り込めるものの、使いやすいものになりません。 ここでは、Excel関数とVBAを組み合わせることで、ユーザの任意の入力値でプルダウン選択を可能

          【VBA】Excelの入力規則にリスト以外の値を組み入れることが出来るようにする

          Excelのセルの入力禁止措置

          Excelのセルの入力禁止は、いままでバッファをもって元に戻すという処置をしていましたが、もっと簡単にシートの保護で対応可能なようです。 ここではG列に式がある場合はロック解除し、上書きなどで式がない場合はグレーアウトしロックして入力を禁止します。 いままでExcelの標準機能で入力禁止はできないと思いこんでいました(どこそかの記事による) これだと単純でいいですね。

          Excelのセルの入力禁止措置

          複雑なExcel様式をVBAで解析する(主旨)

          Excelの様式で非常に複雑なものがあり、メンテナンスが困難になるケースがあります。頭の中で構造を理解しようとしても、セル位置をベースに記述されているなか、なかなか困難かと思います。 困難な理由としては、セルの位置の意味が理解できない、もしくはたどっていくうちに忘れてしまうということがあるでしょう。また要素が多数あるという点もあります。 このシリーズでは、頭のなかでExcelの構造を理解するのではなく、名称の付与方法などを含めて解析方法を検討し、VBAでExcelの構造を

          複雑なExcel様式をVBAで解析する(主旨)

          VBAが終了に向かう

           先日Outlookユーザに対し「新しいOutlook」というものが提供されるようになり、さらに「新しいOutlook」は、Windows11からの標準メールクライアントとして提供がされるというアナウンスがされました。  マイクロソフトは、新しいOutlookはComベースではなくWebView2で構築されており、ComアドインやVSTOアドインがサポートされなくなり、JavaScript Webアドインのみをサポートする方針を明らかにしています。  今後、VBAを生き残

          VBAが終了に向かう

          【VBA】Goto文とFor Each分の組み合わせによる配列のロック

          ハマりましたよ。 For文の前に配列にSplitで値を代入して、その配列をなめるかたちでFor Eachを記述していましたが、このステップを2回目とおると ・「この配列は固定されているか、または一時的にロックされています。 というエラーがでてきて値が代入できませんでした。 一日悩んでしまいましたが、原因はGoto文でした。 配列の値をもとにFor文が回るのですが、そのFor文をExit Forではなく、Goto文で抜けると、配列がロックされてしまい上書きできないというの

          【VBA】Goto文とFor Each分の組み合わせによる配列のロック

          【VBA】fsoを使ったDir関数

          File I/OではOneDriveにアクセスできない Open、Close、Input、Line Input、Print、Write、Get、Putなどの古いファイルアクセスIFでは、OneDriveのフォルダにアクセスできません。これらIFを使っていると、OneDriveとリンクしているフォルダを踏むとエラーが発生しています。 fsoを使った場合の問題点 そこでfsoを使ってファイルへアクセスすることになりますが、この場合の問題としては、Dir()に相当とする関数が

          【VBA】fsoを使ったDir関数

          【VBA】Outlook 仕分けルールの初期設定がうまくいかない件

          Outlook VBAはあまり情報がなく困ってしまいますが、受信時メッセージのルールで、差出人アドレスに指定した文字列を含まない場合の初期設定が全然うまくいきません。 こんな感じでアドレスを突っ込んでも、差出人の条件がまったく表示されません。 Dim olCondition As Outlook.RuleCondition Set olCondition = oRule.Exceptions.senderAddress olCondition.

          【VBA】Outlook 仕分けルールの初期設定がうまくいかない件

          【VBA】配列に含まれないデータを配列で返す(メールデータ)

           最近ChatGPTでコードを探ることも多くなってきましたが、ChatGPTも微妙に間違ったコードを返してくるので困ったものです。 今回はあたかもちゃんとしたコードのように見えて、まったく間違ったコードが返ってきていたので、正しいコードをメモしておきます。  そうは言うものの汎用的なコードにするのが面倒でメインルーチンにダラダラと書いてしまうこがままありますが、ChatGPTのアシストでそんな面倒も乗り越えて関数を検討できますので、いい時代になったものです。 前提この

          【VBA】配列に含まれないデータを配列で返す(メールデータ)

          [VBA]M365に格納されるファイルのURLを取得する方法

          Officeのクラウド化(M365) Officeアプリケーションのクラウド化に伴い、OneDriveやTeams、SharePointなどのネットワーク上にあるファイルにアクセスする機会が多くなり、VBAを記述する際も、クラウド上のファイルにアクセスが必要です。 ファイルのありかの記述の変化(フォルダ階層からhttpsへ)ファイルの格納場所は、これまではフォルダ階層で表記されていましたが、クラウド上のファイルについては、https://~ といったURLでの記述になります

          [VBA]M365に格納されるファイルのURLを取得する方法

          [Win/VBA]インストールしたアプリケーションを確認する方法

          レジストリを見てインストールアプリケーションを確認してはダメWindowsにインストールしたアプリケーションは、管理者権限でインストールし全てのユーザが使用できるものの他、特定のユーザだけが利用できるものがあります。 よくサンプルコードなどで、Windowsでインストールしたアプリケーションの一覧をレジストリから得るものがありますが、多くの場合レジストリとして HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVer

          [Win/VBA]インストールしたアプリケーションを確認する方法

          SeleniumBasicでダイアログ入力する際の留意点

          障害はSeleniumBasicのせいではないSeleniumBasicでスクレイピングするなか、ボタンクリックで表示されるファイル指定のダイアログでのファイル指定に大変苦労しました。 始めは、Seleniumの要素抽出が悪いのか、ダイアログの操作は無理なのかと思いましたが、なんと障害は「クリップボードの文字化け」でした。 クリップボードの文字化けとはボタンクリックして表示されるダイアログでファイルを指定するには、クリップボードからファイル名をペーストすることになります。

          SeleniumBasicでダイアログ入力する際の留意点