タグ

vbaに関するdelegateのブックマーク (73)

  • WindowsAPI をOffice64bit版または32bit版のVBAで使うには | hatena chips

    いままでOfficeの32bit版のVBAWindowsAPIを使用していたコードが、Officeを64bit版に変更するとコンパイルエラーになり使えないということが発生します。64bit版に対応させるためには、WindowsAPIのDeclareステートメントの宣言を書き換える必要があります。WEB検索するとMS公式のものも含めていろいろ情報が見つかりますが、分かりにくかったり、不正確な情報も多々あります。そこでhatenaなりに分かり安く整理してみました。 Office64bit版、Office32bit版どちらでも使用できるDeclare宣言詳しい解説は後回しにして、結論を先に書きます。 Office2010以降(VBA7)の場合Declare宣言実例で説明したほうか分かり安いと思いますので、SetWindowPos というAPIを例に説明します。 旧来の宣言は下記になります。 P

    WindowsAPI をOffice64bit版または32bit版のVBAで使うには | hatena chips
  • AccessVBA_クラスモジュール - たま氏の覚え書き

    クラスモジュールとは何か、どんな場合にどのように利用するのか クラスモジュールとその利用場面 クラスモジュールでオブジェクトを設計 インスタンスを生成(オブジェクトを実体化) 設計したオブジェクトを使用 【重要】プロパティプロシージャの使用 クラスモジュールとその利用場面 クラスモジュールとは、独自のオブジェクトを設計するモジュール 例えば以下の理由により、自分自身で独自のオブジェクトを作成したい場合に使用する ・同じ機能を複数個所で使いまわしたい ・複数人で開発に取り組む場合に、それぞれが同じ機能を重複して作成する状況を避けたい 【独自のオブジェクトの作成~利用までの流れ】 1:クラスモジュールでオブジェクトを設計 2:インスタンスを生成(オブジェクトを実体化)することでオブジェクトを利用可能な状態にする 3:設計したオブジェクトを使用する(当記事では標準モジュールで使用) ▼混乱防止の

    AccessVBA_クラスモジュール - たま氏の覚え書き
  • VBA ADOによるデータベース操作について詳細解説! [VBA関連解説#07] - 小さな在庫管理

    エクセルVBAのADO機能を利用した、アクセスDBとの連携について解説していきます。 この記事では、データベースの抽出/登録/更新/削除の各操作について解説します。 まだ、データベースの接続/切断について未読の方は、次の記事で解説しています。 VBA初期設定 レコード抽出 抽出 VBA実行 レコード登録 登録 VBA実行 レコード更新 更新 VBA実行 レコード削除 論理削除 VBA実行 物理削除 VBA実行 VBA初期設定 レコード抽出 抽出 データベースからのレコード抽出のサブプロシージャを標準モジュール:TESTに作成します。 レコードセットのデータを、配列変数に格納し、処理を実行する流れを解説します。 Sub レコード抽出() '''''''''' レコード抽出 '''''''''' 'レコードセットオブジェクトの作成 Dim adoRs As Object Set adoRs =

    VBA ADOによるデータベース操作について詳細解説! [VBA関連解説#07] - 小さな在庫管理
  • JET/ACE ロックとインデックス フィールドの値の更新

    分類:[VB6 以前] 環境は Windows 10 + Access 2019 VBA です(VBA ですみません)。 行ロックのテストをしているのですが、 インデックスが設定されたフィールドの値を更新した際の挙動で悩んでいます。 MS はこう明記しているのですが、 ページ レベル ロックとレコード レベル ロック | Microsoft Learn https://learn.microsoft.com/ja-jp/previous-versions/office-development/cc376645(v=msdn.10) >レコード レベル ロックをオンにしても、メモ フィールドやインデックス フィールドの値の更新には適用されないため、これらの操作を行う場合は、ページ レベル ロックに設定してください。 私が書いた簡単なテストプログラム2で、両方否になるはずなのに、 行ロックの

  • Access業務アプリで最初に仕込む汎用的なVBAコード - Qiita

    自分がMicrosoft Accessで業務アプリケーションを製作するときに、ほぼ共通して必ず仕込んでいるコードを紹介する。 汎用性はそこそこ高いと思うので参考にしてくれたら幸いだ。 条件付きで終了時にデータベース最適化 番リリース版(拡張子がaccde)に限り、アプリケーション終了時に自分自身のファイルサイズが既定値を超えていたらデータベースの最適化を行う。 定数LIMITはConst定義されているものとする。データベース体がSQL Server等ではなくローカルにある場合限定だ。 Private Sub Form_Unload(Cancel As Integer) Dim nSize As Long If Right(CurrentDb.Name, 5) <> "accde" Then Exit Sub nSize = FileLen(CurrentDb.Name) / 1024

    Access業務アプリで最初に仕込む汎用的なVBAコード - Qiita
  • 参照設定を利用して他のAccessとVBAコードを共通化する方法

    同じコードを複数のAccessで使うことが多くて変更があるたびにコピーしていくのは面倒です。 コピーを忘れてしまってしばらく経つと、どれが最新かも分からなくなってしまいますし、なんならそれぞれが独自に編集されていった結果、元は一つだったコードが複数のコードになってしまい管理が大変になってしまうという事態になります。 そんなときコードを共通化できると問題を解消できます。 そこで記事では、VBAの参照設定を使ってコードの共通化する方法をご紹介します。 ただ、いくつか注意点もあるので合わせて紹介します。

  • VBAのデバッグモードとボタンからの実行で処理速度が10倍以上変わる??? - Qiita

    結論だけ知りたい方はこちら 地味に沼にはまったので似たような方がいたときのためにナレッジを残しておきます ある日のこと 私は社内の業務を効率化することが趣味である。 今回は上司の依頼により貸出物の管理をカレンダーとして可視化するマクロの作成を行っていた。 ボタン一つ押すだけで貸出対象が何日から何日まで貸し出されるかを読み取りその期間に色をつけたカレンダーを作成するというシンプルなものだ。 コード抜粋 Sub OptimizedMode(ByVal enable As Boolean) With Application .EnableEvents = Not enable .Calculation = IIf(enable, xlCalculationManual, xlCalculationAutomatic) .ScreenUpdating = Not enable .EnableAni

    VBAのデバッグモードとボタンからの実行で処理速度が10倍以上変わる??? - Qiita
  • HOME - 小さな在庫管理

    このブログでは、中小企業における在庫管理の導入方法について、在庫管理とは?から在庫管理システム作成までの詳細を解説します。 システム作成には、Excel VBA 及び Access DB を利用していきます。 小さな在庫管理 在庫管理導入 在庫管理の導入 在庫管理を導入したい! 在庫管理の基を知りたい!方は、こちらから↓↓ VBA在庫管理システム作成 VBA関連解説 Excel VBAの初期設定ができていない方 その他 VBA関連解説は、こちらから↓↓ VBA在庫管理システムVer01 物流倉庫向け、商品入出庫管理システム ・インターフェイス:Excel VBA ・データベース  :Excel Book システム作成したい方は、こちらから↓↓ VBA在庫管理システムVer02 物流倉庫向け、商品入出庫管理システム ・インターフェイス:Excel VBA ・データベース  :Access

    HOME - 小さな在庫管理
  • VBAは怖くない!(SQLとレコードセット)|株式会社ルシーナソフトウェア

    第1章では、データベースの作成とAccessとの接続を説明しました。この章は、いよいよAccessで画面を作成していきますが、やはり壁はVBAになりますね。VBAと聞くと、「自分に出来るかなぁ~?」「難しそうだな…」という概念があるとどうしても毛嫌いしてしまいます。でも、VBAは構文を一度覚えてしまえば他の画面に適応できますので少しずつ覚えていけば決して難しいものではありません。 SQLって?レコードセットって?テーブルから、ある条件を元に抽出したり、更新したり削除したりする命令を記述します。例えば、ログイン画面を想像してみてください。ログインする人は複数行存在し、IDとパスワードを入力しログインボタンをクリックするとシステムを使えるというイメージになります。 例えば、上記構文を見ることにしましょう。MST_ログインからログインコードが001の人だけを抽出し、レコード(行)セット(塊)とい

    VBAは怖くない!(SQLとレコードセット)|株式会社ルシーナソフトウェア
  • 参照設定を行わないでAccessを扱う

    Sub 関数を使用してAccessを取得() '参照設定を行わないでAccessを扱う '総称オブジェクト型変数を宣言 Dim objAcc As Object 'Accessアプリケーションのインスタンスを作成 Set objAcc = CreateObject("Access.Application") MsgBox "Accessのバージョンは" & objAcc.Version & "です。" Set objAcc = Nothing End Sub 実行結果 ブック配布時に配布先PCと開発PCのAccessバージョンが違うと、参照設定が機能しない。 この問題を回避するには、「CreateObject」関数を使用して、「配布先のPCに『Access.Application』として認識されているAccessのアプリケーション」を動的に取得する。 「CreateObject」関数は「A

  • 【連載】ゼロからはじめるExcel VBA+Webサービス

    連載は、表計算ソフトウェアであるMicrosoft Excelと、そのプログラミング言語であるExcel VBAを用いて、各種のWebサービスを活用しようというものです。Webサービスとは、インターネット上で利用可能なようにさまさまなベンダーから提供されている便利なAPIのことです。Webサービスというと、Webアプリケーションから格的なプログラミング言語、たとえばPHPJavaScriptなどから呼び出して活用するというイメージが強いのですが、実はExcel VBAからでも利用可能です。

    【連載】ゼロからはじめるExcel VBA+Webサービス
  • 【Excel VBA】VBAを利用してAPI呼び出しをする

    こんにちは、おくやんです。 このブログでは、開発に役立つノウハウを実践的なコード例と共に紹介しています。 VBAからWEB API呼び出しを行う方法が知りたい! […]

    【Excel VBA】VBAを利用してAPI呼び出しをする
  • VB6(VBA)からC#製DLLを呼ぶ際のマーシャリング術 - Qiita

    C++ などから呼べるDLL をC# で作れるDllExport というツールがあります。 この記事は、そのDLL をVB6 やVBA から呼ぶという、極めてマイナーな方法を行う際のマーシャリング方法について記述した個人的な備忘録です。 VB6 とは 1990年代の使われていた言語で、現在はその派生形がOffice 製品のVBA で生き残っている。 特に、最終バージョンのVB6.0 では、ActiveX コンポーネントを組み合わせることでC++ などと比較して高い生産性を確保でき、開発者が確保しやすいことから日ではVB6.0 を使った業務システムなどが大量に作られた。 継承やマルチスレッド等がないものの、クラスを使ったカプセル化などは行えるので、一応オブジェクト指向っぽい開発も行える。 Visual Basic DllExport1 とは C# でC++ などで作られたネイティブDLL

    VB6(VBA)からC#製DLLを呼ぶ際のマーシャリング術 - Qiita
  • Directions API(REST API)をVBAで使う - Qiita

    はじめに 初投稿の非エンジニア事務職です。Directions APIGoogleのサービス)で検索した結果をVBAで取得する方法を記載しています。あまり需要はなさそうですが、何らかの理由でVBAからAPIを使う場合にお役立てください。 対象読者 VBAはそこそこ不自由なく使えるよ APIね… 聞いたことあるけどよく分からん 投稿のきっかけ 先日、業務で二地点間の距離を数百件ほど調べる必要がありました。色々調べた結果、DirectionsAPIVBAを使って二地点間の距離検索結果をExcelにまとめられるようになりました。どんな技術記事でも価値があるという考え方に基づいて、ちょっとでも刺さる人がいればいいなと思い投稿します。 とりあえずコードを確認したい!という場合はこちらをクリックしてスキップしてください。 検索方法について 二地点間の距離を数百件ほど調べるにあたり、最初はスクレイピ

    Directions API(REST API)をVBAで使う - Qiita
  • レスポンスのデータがおかしい ⇒ 原因はキャッシュ!

    WebAPIのテストでレスポンスに問題があって、以下のような状況があるとき、疑うべき原因はキャッシュアクセスだ。 ①レスポンスのステータスは正常値 ②レスポンスの中身(データ)はデタラメ ③サーバーのログを見ると、リクエストされた形跡がない ④サーバーを落としてリクエストすると通信エラーが発生しない。②と同じデータが返ってくる。 ⑤ローカルPCでサーバーは起動していない ⑥リクエストURLをブラウザで直接指定して実行すると、期待結果が返ってくる。サーバーにリクエストログも残っている。 サーバーでは値が変わっているのに、それを取得できないことがあるってことだ。キャッシュについては、以下を参照のこと。 キャッシュメカニズムは、ブラウザからのリクエストによって得られたコンテンツをキャッシュに保持しておき、同じURLのリクエストが生じたとき、来のWebサーバにコンテンツを取りに行かず、キャッシュ

    レスポンスのデータがおかしい ⇒ 原因はキャッシュ!
  • VBAでHTTP通信|EstusFlask

    seleniumを使用しないVBAスクレイピングをしようとするとIEを使用するのが簡単で初学者にもわかりやすいが、2022年のIEサポート終了に伴って、chromeやedgeで作り直す必要が出てきた。 ただし、chromeやedge経由でやろうとすると、seleniumをインストールする必要があり、職場でのインストール権限の問題から断念することもあると思う。 今回はseleniumをインストールせずに、HTTP通信でスクレイピングする一例を紹介する。 VBAを使用してHTTP通信を行うには、WinHTTPライブラリを使用することができます。WinHTTPはWindowsに組み込まれており、HTTPリクエストを送信し、レスポンスを受信することができます。 以下は、VBAでWinHTTPを使用してHTTP GETリクエストを送信し、レスポンスを受信する例。 Sub GetHTTP() Dim

    VBAでHTTP通信|EstusFlask
  • ExcelVBA┃モジュール種類と違い|すみぽけ

    コードウィンドウにでコードを書く場所をモジュールと言いますが、そのモジュールにはいくつか種類があります。 「VBAエディタにあるウィンドウの役割」でも少し触れていますが、シートモジュール、ブックモジュール、フォームモジュール、標準モジュール、クラスモジュールの5種類あってそれぞれ使い分けながらコードを書いていきます。が、難しくありません。基的には標準モジュールに書きます。スキルが上がって視野が広がるとやりたいことも増えてくるので、その時に追加スキルとして他のモジュールを使っていけばいいと思います。ただ一応どんなものか書いておきます。 [1] 標準モジュール言葉通り標準のモジュールです。基はここにコードを書いていきます。新規でExcelファイルを作成してもプロジェクトウィンドウ内に表示されていません。自分で挿入します。 標準モジュールの挿入[2] シートモジュールシートに付随するモジュー

    ExcelVBA┃モジュール種類と違い|すみぽけ
  • ExcelのVBAで使えるDLLを、C++(Visual Studio 2017)で作る。・・・その3.2(String型による文字列の受け渡し) - 空腹おやじのログと備忘録

    初めに BSTR 構造 メモリ管理 ポインタを介してのデータの書き換え 内部のデータ文字列の状態 ヘッダ 関数 SysAllocStringByteLen SysAllocString SysAllocStringLen SysFreeString SysStringLen SysStringByteLen SysAllocStringとSysAllocStringByteLenの違い コード DLL AccessibleFromVBA.h AccessibleFromVBA.cpp AccessibleFromVBA.def stdafx.h VBA 実行結果 参考にしたサイト まとめ 次回予告 過去掲載分 初めに 前回の予告で、「次回は、実際に配列の受け渡しを行ってみます。」などと書いたのだけれど、 「やっぱりString型の配列の受け渡しも欲しいよな。」 となったので、予定を変更して

    ExcelのVBAで使えるDLLを、C++(Visual Studio 2017)で作る。・・・その3.2(String型による文字列の受け渡し) - 空腹おやじのログと備忘録
  • Excel VBAからDLLを呼び出す時、Debugビルドだと実行時エラーになる - kk_AtakaのScrapbox

  • VBAでWinHTTPを利用した非同期通信の実装:詳細な解説と活用方法|Yuu's Memo

    的な実装 VBAでの基的なソケット通信コードにエラーハンドリングと非同期通信を追加したサンプルです。このサンプルはWinsockではなくWinHTTPを使用して非同期通信を実現しています。エラーハンドリングや非同期通信には適切な機能を追加することが必要です。 Option Explicit ' WinHTTP 非同期通信用の関数宣言 Declare PtrSafe Function WinHttpOpen Lib "winhttp.dll" (ByVal pwszUserAgent As Long, ByVal dwAccessType As Long, ByVal pwszProxyName As Long, ByVal pwszProxyBypass As Long, ByVal dwFlags As Long) As Long Declare PtrSafe Function

    VBAでWinHTTPを利用した非同期通信の実装:詳細な解説と活用方法|Yuu's Memo