Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9947 / 13646 ツリー ←次へ | 前へ→

【24615】HtmlHelp関数の構文教えて下さい nobuyuki 05/4/28(木) 13:40 質問[未読]
【24617】Re:HtmlHelp関数の構文教えて下さい ちゃっぴ 05/4/28(木) 16:04 回答[未読]
【24626】Re:HtmlHelp関数の構文教えて下さい bykin 05/4/28(木) 23:01 回答[未読]
【24631】Re:HtmlHelp関数の構文教えて下さい nobuyuki 05/4/29(金) 3:37 お礼[未読]
【24630】HtmlHelp関数の構文追加質問おねがいします nobuyuki 05/4/29(金) 3:26 質問[未読]
【24633】Re:HtmlHelp関数の構文追加質問おねがいし... ちゃっぴ 05/4/29(金) 7:10 回答[未読]
【24636】Re:HtmlHelp関数の構文追加質問おねがいし... nobuyuki 05/4/29(金) 10:34 お礼[未読]
【24637】Re:HtmlHelp関数の構文追加質問おねがいし... bykin 05/4/29(金) 11:37 回答[未読]
【24639】Re:HtmlHelp関数の構文追加質問おねがいし... nobuyuki 05/4/29(金) 17:22 お礼[未読]

【24615】HtmlHelp関数の構文教えて下さい
質問  nobuyuki  - 05/4/28(木) 13:40 -

引用なし
パスワード
   いつもVBA質問箱を拝見し、とても役立っています。
HtmlHelp関数を使って実際にプログラミングしたことがある方、
いらっしゃいましたら、是非御教示の程よろしくお願い致します。

HtmlHelp(hwndCTRL,"C:\sample.chm::/\helptxt.txt", _
HH_DISPLAY_TEXT_POPUP, (DWORD)&popup
             ↑   ↑

注:samply.chmは自分が作成したコンパイル済みヘルププロジェクトファイル名
  helptxt.txtは自分が作成したヘルプテキストファイル名

構文中 dwdata文 つまり”↑”のところの構文で、helptxt中の自分が名づけた
ヘルプメッセージID "IDH_INPUTDATA"に対応するテキストを表示するよう指定したいのですが、

HH_POPUP structure syntax
typedef struct tagHH_POPUP
{int      cbstruct;
HINSTANCE   hinst;
UNIT     idstring;
LPCTStr    pszText;
POINT     pt;
COLORREF   clrForeground;
COLORREF   clrBackground;
RECT     rcMargins;
LPCTStr    pszFont;} HH_POPUP;

上記パラメータ(?)をどのように記述し(区切り符号の使い方をも含め)、
”↑”部分に組み込んだら(記述したら)良いのでしょうか?

諸兄のお知恵を拝借したくお願い致します。

【24617】Re:HtmlHelp関数の構文教えて下さい
回答  ちゃっぴ  - 05/4/28(木) 16:04 -

引用なし
パスワード
   >HH_DISPLAY_TEXT_POPUP, (DWORD)&popup

APIですかね?

HtmlHelp API を使用してヘルプを表示する
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/modcore/html/decondisplayinghelpbyusinghtmlhelpapi.asp


>HH_POPUP structure syntax
>typedef struct tagHH_POPUP
>{int      cbstruct;
> HINSTANCE   hinst;
> UNIT     idstring;
> LPCTStr    pszText;
> POINT     pt;
> COLORREF   clrForeground;
> COLORREF   clrBackground;
> RECT     rcMargins;
> LPCTStr    pszFont;} HH_POPUP;
>
>上記パラメータ(?)をどのように記述し(区切り符号の使い方をも含め)、
>”↑”部分に組み込んだら(記述したら)良いのでしょうか?

HH_POPUP
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/Htmlhelp/str_hh_popup.asp

構造体のようなのでUser定義(Type)を使ってやるでしょうね。

Public Type HH_POPUP
   cbstruct As Long
   hinst As Long
   idstring As Long
   pszText As Long
   pt As Long
   clrForeground As Long
   clrBackground As Long
   rcMargins As Long
   pszFont As Long
End Type

な感じで定義してやらんと使えないと思います。

【24626】Re:HtmlHelp関数の構文教えて下さい
回答  bykin  - 05/4/28(木) 23:01 -

引用なし
パスワード
   こんばんわ。

普通のヘルプ(chm)なら経験あるんやけど、
ポップアップは使ったことないんで、ネットで調べてみました。
http://www.mvps.org/htmlhelpcenter/htmlhelp/hhvbclas.html
↑ここからサンプルコード(クラスモジュール)がDLできまっせ。

わては解説できまへんが・・・確認してみてな。
ほな。

【24630】HtmlHelp関数の構文追加質問おねがいしま...
質問  nobuyuki  - 05/4/29(金) 3:26 -

引用なし
パスワード
   >>HH_DISPLAY_TEXT_POPUP, (DWORD)&popup
>
>APIですかね?
>
>HtmlHelp API を使用してヘルプを表示する
>http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/modcore/html/decondisplayinghelpbyusinghtmlhelpapi.asp
>
>
>>HH_POPUP structure syntax
>>typedef struct tagHH_POPUP
>>{int      cbstruct;
>> HINSTANCE   hinst;
>> UNIT     idstring;
>> LPCTStr    pszText;
>> POINT     pt;
>> COLORREF   clrForeground;
>> COLORREF   clrBackground;
>> RECT     rcMargins;
>> LPCTStr    pszFont;} HH_POPUP;
>>
>>上記パラメータ(?)をどのように記述し(区切り符号の使い方をも含め)、
>>”↑”部分に組み込んだら(記述したら)良いのでしょうか?
>
>HH_POPUP
>http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/Htmlhelp/str_hh_popup.asp
>
>構造体のようなのでUser定義(Type)を使ってやるでしょうね。
>
>Public Type HH_POPUP
>   cbstruct As Long
>   hinst As Long
>   idstring As Long
>   pszText As Long
>   pt As Long
>   clrForeground As Long
>   clrBackground As Long
>   rcMargins As Long
>   pszFont As Long
>End Type
>
>な感じで定義してやらんと使えないと思います。

▼ちゃっぴ さん:
 こんばんは
 このたびは早々のご教示ありがとうございました。答礼遅くなり申し訳ありませんでした。
1、APIのことであります。早速"HtmlHelp APIを使用してヘルプを表示する"
 記事を参照し、HtmlHelp関数のうちdwdataまで入力しました(テストはまだなのですが)。
2、そして標準モジュール先頭行から、教えていただいたUser定義(Type)を記述  し、END Type文の次にHH_POPUP構造体の構文を記述し始めたのですが、
 途中エラーが出るので、追加質問させてください。

typedef struct tagHH_POPUP
   int cbStruct
   Hinstance hinst
   UINT idString
   LPCTStr pszText
   Point pt
   COLORREF clrForeground
   COLORREF clrBackground
   RECT rcMargins
   LPCTStr pszFont
HH_POPUP

上記原稿中、int文からカーソル移動キーで次の行に移ろうとすると、
コンパイルエラー 修正候補:識別子になります。
それではと int 100と入力しても同じエラーが出ます(100というのは試しに)。
 構造体は初めて経験するので、貴兄にとってはあきれた質問かもわかりませんが、よろしくご回答のほどお願いいたします。

【24631】Re:HtmlHelp関数の構文教えて下さい
お礼  nobuyuki  - 05/4/29(金) 3:37 -

引用なし
パスワード
   >こんばんわ。
>
>普通のヘルプ(chm)なら経験あるんやけど、
>ポップアップは使ったことないんで、ネットで調べてみました。
>http://www.mvps.org/htmlhelpcenter/htmlhelp/hhvbclas.html
>↑ここからサンプルコード(クラスモジュール)がDLできまっせ。
>
>わては解説できまへんが・・・確認してみてな。
>ほな。

▼bykin さん:
こんばんは。ご連絡ありがとうございました。
早速お示しくださったサイト上の"DOWNLOAD THE VISUAL BASIC CLAS MODULE.."を
開いてみたのですが、圧縮(ZIP形式)フォルダは無効であるか、または
壊れています、となります。
たぶん小生のやり方が間違っていると思うので、トライしてみます。
取り急ぎご連絡まで。

【24633】Re:HtmlHelp関数の構文追加質問おねがい...
回答  ちゃっぴ  - 05/4/29(金) 7:10 -

引用なし
パスワード
   >typedef struct tagHH_POPUP
>   int cbStruct
>   Hinstance hinst
>   UINT idString
>   LPCTStr pszText
>   Point pt
>   COLORREF clrForeground
>   COLORREF clrBackground
>   RECT rcMargins
>   LPCTStr pszFont
>HH_POPUP
>
>上記原稿中、int文からカーソル移動キーで次の行に移ろうとすると、
>コンパイルエラー 修正候補:識別子になります。
>それではと int 100と入力しても同じエラーが出ます(100というのは試しに)。
> 構造体は初めて経験するので、貴兄にとってはあきれた質問かもわかりませんが、よろしくご回答のほどお願いいたします。

これは、VC++の宣言でしょ。VBAでは使えませんよ。

VBからAPIのCall方法を勉強されることをお勧めします。
探せば、かなり少なくなりましたが書籍があるはずです。

【24636】Re:HtmlHelp関数の構文追加質問おねがい...
お礼  nobuyuki  - 05/4/29(金) 10:34 -

引用なし
パスワード
   ご返答ありがとうございます。
基本に立ち戻ってよく勉強いたします。
このたびは愚問にお付き合い頂きありがとうございました。

【24637】Re:HtmlHelp関数の構文追加質問おねがい...
回答  bykin  - 05/4/29(金) 11:37 -

引用なし
パスワード
   こんにちわ。もうみてへんかな?

>開いてみたのですが、圧縮(ZIP形式)フォルダは無効であるか、または
>壊れています、となります。

ダウンロードに失敗したんやと思うよ。こっちではちゃんとDLできてます。

>VBからAPIのCall方法を勉強されることをお勧めします。

同感。VBからの使い方をご存知ないみたいやね・・・
TypeとDeclareくらいはヘルプで確認してみてな。

DLしたクラスモジュールはめっちゃコードが多いんで、そのままではわかりにくいし、
VB用なんで、VBAで使うとそのままではエラーが出るさかいに、
ポップアップの部分だけ抽出・単純化して、エクセルのVBAで使えるように変更して
みました。

シートを右クリックしたらポップアップが表示されます。

'シートモジュール=================================================================

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  Dim PopupHelp As New clsPopup
  
  PopupHelp.ShowPopup "これはテスト用の表示です。"
  Cancel = True
End Sub


'クラスモジュール(モジュール名:clsPopup)=======================================

Private Const HH_DISPLAY_TEXT_POPUP = &HE

Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private Type POINTAPI
  x As Long
  y As Long
End Type

Private Type tagHH_POPUP
  cbStruct As Integer
  hinst As Long
  idString As Long
  pszText As String
  pt As POINTAPI
  clrForeground As Long
  clrBackground As Long
  rcMargins As RECT
  pszFont As String
End Type

Private Declare Function HtmlHelpTextPopup Lib "hhctrl.ocx" _
  Alias "HtmlHelpA" _
  (ByVal hwnd As Long, _
  ByVal lpHelpFile As String, _
  ByVal wCommand As Long, _
  ByRef dwData As tagHH_POPUP) As Long

Private Declare Function GetCursorPos Lib "user32" _
  (ByRef lpPoint As POINTAPI) As Long

Private Declare Function GetActiveWindow Lib "user32" () As Long

Public Sub ShowPopup(ByRef PopupText As String)
  Dim pPoint As POINTAPI
  Dim hPopup As tagHH_POPUP
  Dim rRect As RECT
  Dim hWnd As Long
  
  GetCursorPos pPoint
  
  With rRect
   .Bottom = -1
   .Left = -1
   .Right = -1
   .Top = -1
  End With
  
  With hPopup
   .cbStruct = Len(hPopup)
   .clrForeground = vbBlack
   .clrBackground = vbYellow
   .idString = 0
   .pszText = PopupText
   .pt = pPoint
   .rcMargins = rRect
   .pszFont = "MS 明朝, 12"
  End With
  
  hWnd = GetActiveWindow()
  HtmlHelpTextPopup hWnd, vbNullString, HH_DISPLAY_TEXT_POPUP, hPopup
   
End Sub

あとは元のクラスモジュールを解析してみておくれやす。
ほな。

【24639】Re:HtmlHelp関数の構文追加質問おねがい...
お礼  nobuyuki  - 05/4/29(金) 17:22 -

引用なし
パスワード
   ▼bykin さん:
こんにちわ。
ご返答ありがとうございました。

>ダウンロードに失敗したんやと思うよ。こっちではちゃんとDLできてます。
   どうもすみませんでした。小生側でもダウンロードできました。
>
>>VBからAPIのCall方法を勉強されることをお勧めします。
>
>同感。VBからの使い方をご存知ないみたいやね・・・
>TypeとDeclareくらいはヘルプで確認してみてな。
   bykinさん、ご指摘ありがとうございます。
   最近、マイクロソフトの"HOWTO:VISUAL BASICでのアプリケーションでのユー  スHTML HELP API (文書番号183434)"を丸呑みして実行できた程度なので、
  耳(目?)が痛いです。もっと勉強します。

>DLしたクラスモジュールはめっちゃコードが多いんで、そのままではわかりにくいし、
>VB用なんで、VBAで使うとそのままではエラーが出るさかいに、
>ポップアップの部分だけ抽出・単純化して、エクセルのVBAで使えるように変更して
>みました。
   提供いただいたシートモジュールとクラスモジュールを
  それぞれそのままコピー・作成し、動かしました。
  ポップアップが表示されました。
  感謝!!します。本当にありがとうございました。

9947 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free