[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『背景が透明なユーザーフォームを作成したい』(きっしー)
はじめまして
VBAの初心者でいろいろ調べながらどうにか簡単なものが作れるようになった程度の者です
質問お願いします
背景が透明なユーザーフォームを作ろうと調べていたのですが、行き詰ってしまいました
仕事で使用する光学検査機器で、他アプリのウインドウ内に光点が表示されるものがあります
こちらの位置マーキングをこれまでマウスカーソルを合わせてマウスに触らないとう原始的な方法で行っていたのですが、このたび検査解析用のExcelファイルを作りまして、そのファイルから背景が半透明なユーザーフォームを起動し光点の位置にオーバーレイさせて位置マーキングを行えないかと考えました
イメージとしては、狙撃銃のスコープのクロスヘアのように、ターゲットの光点に合わせてユーザーフォームのウインドウを置いておくイメージです
当方API等は知識もなく、また検査用のPCは64bitと32bitが混在、Win7とWin10が混在、Excel2010と2013が混在という状況で、ネットで検索した限りですが、API利用の場合32bitと64bitでソースコードが多少変わるとの情報までたどり着き途方に暮れておりました
どなたかご教授いただけるかたがいらっしゃれば、ぜひ教えを請いたくよろしくお願いいたします
< 使用 Excel:Excel2010、使用 OS:Windows7 >
(隠居じーさん) 2020/03/08(日) 10:40
[[20180117210141]] 『ユーザーフォームの背景だけを透明にしたい』(Chanki)
(OK) 2020/03/08(日) 12:21
隠居じーさん様 別アプリのウインドウ上に重ねるため、Excel外に移動させられない図形では目的を果たせないのです
OK様 そちらですと、おそらく32bit向けのソースコードになるのではないでしょうか?
目的が果たせるかもと試してみたのですが、当方のPCが64bitのため、エラーとなってしまいました
(きっしー) 2020/03/08(日) 14:48
(隠居じーさん) 2020/03/08(日) 15:11
Bit数はPCじゃなくてExcelのほうじゃなかったかな...と思ったけど32bitコードでエラーか。 このあたり見て修正するしかないのかな?
VBAでWindowsAPIを使うには https://qiita.com/nukie_53/items/6a88ce82565e238a3c71
上のリンク先で重要なのは >VBA 7.x 用の記述 リファレンス >Microsoft公式のものとして以下のようなものがダウンロードできます。
>Office 2010 Help Files: Win32API_PtrSafe with 64-bit Support https://www.microsoft.com/en-us/download/details.aspx?id=9970
>VBA 7.x 用の記述は解凍したファイルの中の「Win32API_PtrSafe.TXT」内に記載されています。
VBAでWinAPI32を使うためのリンク集 https://qiita.com/Q11Q/items/16862ef1797e25cbadfd
Office の 32 ビット バージョンと 64 ビット バージョン間の互換性 https://docs.microsoft.com/ja-jp/office/client-developer/shared/compatibility-between-the-32-bit-and-64-bit-versions-of-office
Office 2010 ヘルプファイル:64 ビットのサポートが含まれる Win32API_PtrSafe https://docs.microsoft.com/ja-jp/office/troubleshoot/office/win32api_ptrsafe-with-64-bit-support
どのようなものかというと、 >詳細 >Microsoft Office 2010 および >Visual Basic 7.0 for Applications (VBA 7) より前のバージョンの Microsoft® Office および >Microsoft Visual Basic® Applications (VBA) には、 >Microsoft Windows API を呼び出すことができる Win32api.txt ファイルが >含まれていました。 Microsoft Office 2010 に64ビット版のサポートが >追加されたため、このファイルに対する更新は、64ビット API 呼び出しを >サポートするために必要になります。 Win32API_PtrSafe .txt は、 >32ビットと64ビットの両方のバージョンの Windows で API 呼び出しを >サポートする新しいバージョンの Win32api.txt です。
>Win32API_PtrSafe .txt には次のものが含まれています。
>·元の Win32api.txt ファイルに含まれていた Windows API 関数の32ビット (x86) と64ビット (x64) 互換の Declare ステートメント。
>·指定された Declare ステートメントが使用する定数のグローバル定数宣言。
>·提供された Declare ステートメントが使用するユーザー定義型 (構造) の型宣言。
それでもよくわからない場合は、
VBAでWin32APIの64bit対応自動変換プログラムを作ってみた https://www.excel-chunchun.com/entry/vba-64bit-declare-convert
使用の際は「事前準備と使い方」をお読みください。 (2u) 2020/03/08(日) 20:51
おはようございます。。。^^ 完成されたようでよかったですね。もうご覧になっていない かもですが。。。( ̄▽ ̄) >>これから同じコードを会社で手入力するのは憂鬱ですが 作成されたフォームモジュールと標準モジュールを エクスポート【左上端のプロジェクトエクスプローラの各、 モジュール名を右クリック】でメニューがでます。 で 標準モジュールは.bas フォームモジュールは。.frm .frx という拡張子のファイルが二つ作成されます これをVBE画面の、ファイル、メニューのインポートで 開けば ← ここから選択してエクスポートも可能です 作成したものがそのまま取り込めますです。 手遅れでしたら済みません。。。m(_ _)m... (隠居じーさん) 2020/03/09(月) 08:40
追伸 失礼致しました。 フォームの場合二つ作成されますが。取り込時はfrm だけでOKでした。。。m(_ _)m [ エクセル様が自動で判別 ^^;] テストの結果新規BOOKで透明フォームが表示されました では ごきげんよう。。。m(_ _)m (隠居じーさん) 2020/03/09(月) 08:48
個人的な興味でお聞きしますが、業務で情報収集の為、ネット検索しますよね?
当然、コード(文字ベース)を掲示しているサイトにもアクセスできると思うんですが、 その画面の文字コピーも出来ない会社なんでしょうか?
(半平太) 2020/03/09(月) 19:04
情報セキュリティレベルがエリアごとに区切られており、該当の職場はコアになる技術の部分としてかなりセキュリティレベルが高いのです
室内からインターネットへの接続は不可で、社内ネットワークには接続できますが、すべてログが残るらしいです
もちろん、別の部屋にはインターネットへの接続が可能なPCもあるのですが、そこで収集した情報をデータで職場内に持ち込むには社内ネットワークを利用するしかない状況です
また、職場内に持ち込んだとしても許可を受けたUSBメモリを利用してネットワークにつながったPCから検査PCへのデータの移動が発生するため、その過程で誰が何をしたか把握されているそうです・・・
とにもかくにも、検査PCのある部署は大昔のシステムをそのまま利用しており、現状を変えることなく運用するのが会社の方針のようです
(おさんどん) 2020/03/10(火) 21:09
おさんどん さん
ご回答いただき、誠にありがとうございました。
二重入力の手間もやり切れないですが、 時勢柄、セキュリティ第一ですからね。 お察しします。
では失礼します。m(__)m
(半平太) 2020/03/10(火) 21:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.