Win XP
VB6 SP5

VB6で呼び出し元の情報を取得する方法について

VB6で
・呼び出し元の関数本体が宣言されているソースのファイル名
・呼び出し元の関数名
を取得する方法はありますでしょうか?

システムログを生成する時に利用しようかと考えています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

#実は、回答ではないので気が引けてますが・・・


#私自身も同じ悩みを持つ、30代会社員です。

私の場合・・・(すべてのログをとることが、あまりなくて、大切そうなとこだけなので・・)
まず、ファイル毎に、Private SrcFileName = "xxxx.bas" を定義して、
ログとり関数呼び出し時に Log(SrcFileName)とやっています。

呼び出しもとの関数名も同様にできますが、面倒なのでやっていません。

おそらくCコンパイラでよくある。__LINE__、 __FILE__ マクロみたいなものを想定されているのではないか思いますが、VBでそのようなものは見当たりません。
#ここに回答を登録することで、いい方法を知ることが出来るんじゃないかと・・・、便乗させていただきます。
    • good
    • 0

VB6で呼び出し方がよくわからないので、別EXEをSHELL起動した場合で回答します。



SHELL起動を行う時に引数を指定あいてあげれば、呼び出されたEXEからコマンドライン関数(Command())により引数を取得できます。

詳しくは、VBのヘルプを見て下さい。

簡単な起動方法例

retVal=Shell(C:\Test.EXE Pata1 Para2..." , 1)

上記 Pata1 Para2...の所に引数を設定する。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q日本円と人民元はレートの交換?はしていないのでしょうか?

いまいち為替の仕組みがよくわかっていませんが
http://www.gaitame.com/market/chart/usd_1.html
を見て思ったのですが
日本と中国では通貨の交換(この表現で合ってるか自信ないです)はしていないのでしょうか?
たまたま外為どっとコムがしていないだけなのでしょうか?

Aベストアンサー

日本円(JPY) から 中国 元(CNY) 為替レート2009 年 05 月 09 日
1 日本円 = 0.0693 中国 元
http://www.zzrate.com/rates/jpy/cny/1/

参考URL:http://www.zzrate.com/rates/jpy/cny/1/

QVB6で開発中…標準モジュール間での関数の呼び出し方は?

Form1.frm内から、標準関数yyy.bas内に記述しているSub yyy()を呼び出したいのですが、コンパイルエラーとなります。
呼び出し方法が間違っているのだと思いますが、お教え下さいませ。

<Form1.frm内>
Private Sub xxxxxx()
 yyy
End Sub

<yyy.bas>
Sub yyy()
 ・・・・
End Sub

Aベストアンサー

標準モジュールかフォームにつけたオブジェクト名がyyyになってませんか?

Q人民元,ドル,円の為替関係の中で 円の損益分岐点は

7月13日現在
通貨種類   人民元   米ドル    日本円
人民元    1      8.277   0.07608
CNY 米ドル 0.1208     1     0.009192
USD 日本円  13.14    108.8     1
と なっていますが
人民元とドルの為替レートは固定されてますよね
円のレートで人民元に換金する時,いくらのレートまでだったら円が得でいくら以上だとドルが得か
計算書式もわからず 円の損益分岐教えてください。

Aベストアンサー

損益はありません。

利益の出る組み合わせがあったとしましょう。
すると、世界中の金融機関で為替レートの変動を監視しているコンピュータが
瞬時にそれを見つけ出し、資金を移動させようとします。相対的に高い通貨の
レートは下がり、安い通貨のレートは上がります。結果として、為替レートに
よる損益は解消されてしまうのです。

もちろん、通時的な変動によって差益を得ようとするのであれば、一応可能です。
安い時に買った通貨を高い時に売れば差益は出ます。ただ、相対的なものですので、
いくら以上なら得と言うことはできません。

QVB6でブラウザのページソースを取得したい。

VB6を使用しています。
ブラウザに表示されたページのHTMLソースを
テキスト形式で保存もしくは、画面上に表示させ、
任意の行の値を取得したいと思っています。

このようなことは、可能でしょうか?

Aベストアンサー

#1>指定した行の値を取得するには、Line Input をループさせるしかないのでしょうか?
1つの文字列になってますから、
Split 関数で、改行毎切り分けると後は、配列で、指定した行を取り出せます。
例:DataArray = Split(DataString, vbCrLf)
場合によっては、改行コードが
LF のみ
CR のみ
CRLF
になっている場合がありますからそういうのを考慮する必要が有る場合は、前もって置換とかしてやるといいでしょう。

Q円・ドル・元の関係について

最近、また人民元切り上げの話題が盛り上がってきましたね。外国為替証拠金取引でも人民元を取り扱っている業者もあるようです。個人でも切り上げで恩恵を受けることができないか考えています。

そこで質問です。

1.ドル/円レート 106.85円
2. 元/円レート  12.91円
3.ドル/元レート 8.2764元

上のレートで、1=2×3という式がおおよそ成り立ちます。

元が通貨バスケット制だか変動相場制だかに移行したら、3の値が小さくなるというのはわかるのですが、2の値はどうなるのでしょうか。元/円も変動相場制になるのでしょうか?この式がどのように変わっていくことが予想されるのか知りたいのです。

Aベストアンサー

1=2x3という式は不変で、いつの場合でも成立します。もし、ここから大きく外れると、無リスクの裁定取引ができるので為替ディーラーたちが取引を開始し、1=2x3に収束するようになります。

変動相場制に移行した場合でも、1=2×3は不変なので、2は3が大きくなるにつれ小さくなります。元が円に対しても強くなるわけです。

人民元がドルに対して強くなるだろうというのは確からしいとしても、それに向かう過程は一筋縄ではいかないのではと考えています。投機筋の大量の人民元買いや香港ドル買いが起こったら中国当局はどうするのでしょうかね。何らかの移行措置を考えないと、危険なことになると考えるはずでしょう。通貨バスケット制の場合は、人民元は切りあがるわけではないので、この方法を選択するのでしょうか。

私は、先行きがあまりにも不透明なので、やはり通貨それ自体に対する投資は控えたいと思っています。

Qフォームを閉じないようにする VB6 SP6

VB6 でプログラムを作成中です。

プログラムを実行して、フォームが立ち上がった所で右上の×を押し、画面を閉じようとします。
そこで以下のコードで、もし×が押されたらvbYesNoメッセージボックスを表示させ、もし「いいえ」が押されたらフォームを閉じないようにし、実行画面を維持したいのです。

しかし、Exit Sub ですとプログラムが終了してしまい、困っています。宜しくお願い致します。

Private Sub Form_Unload(Cancel As Integer) 'フォームを閉じる
Dim last As String
last = MsgBox(" プログラムを終了させますか?", vbYesNo, "終了確認1")

If (last = vbYes) Then
Dim last2 As String
last2 = MsgBox(" 本当にプログラムを終了させますか?", vbYesNo, "終了確認2")
If (last2 = vbNo) Then
Exit Sub
End If
End If

If (last = vbNo) Then
Exit Sub
End If

End Sub

VB6 でプログラムを作成中です。

プログラムを実行して、フォームが立ち上がった所で右上の×を押し、画面を閉じようとします。
そこで以下のコードで、もし×が押されたらvbYesNoメッセージボックスを表示させ、もし「いいえ」が押されたらフォームを閉じないようにし、実行画面を維持したいのです。

しかし、Exit Sub ですとプログラムが終了してしまい、困っています。宜しくお願い致します。

Private Sub Form_Unload(Cancel As Integer) 'フォームを閉じる
Dim last As String
last = Msg...続きを読む

Aベストアンサー

とりあえずは Cancel = True とすれば終了のチャンセルは出来ると思いますがそれでは小回りがききません。

通常は
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
を使用します。

UnloadMode で Form を閉じる原因コードが把握可能です。

Q中国で日本円を人民元に両替

中国で日本円を人民元に両替をしたいと思います。
10万円以下ですが、どういった方法が一番良いレートで両替できるでしょうか?
闇両替はつかいません。

中国の銀行は日本円現金を両替する場合1万円ごとに10元以上の手数料が付くと聞いたのですが本当なのでしょうか?

以前中国でPLUSのついている国際カードで、ATMで日本の普通預金を引き落としいましたが1回の手数料日本円200円かかりますが、この手数料も加算して実際PLUSの換金レートはいかがなものなのでしょうか?とても便利で中国にいるときはよく利用してしまうのですが。。。。

やはりカードを利用するより銀行の窓口で両替した方が良いレートなのでしょうか?

よろしくお願いします。

Aベストアンサー

1万円あたり手数料が10元というのは聞いたことがありませんが、為替レートに対して通貨売りTTSと通貨買いTTBのレートが設定されているという話でしょうか。
実際、外貨から中国元に両替する場合、銀行口座に預金されている外貨から両替する場合と、外貨現金から両替する場合では、適用されるレートが異なります。
http://www.boc.cn/sourcedb/whpj/
は中国銀行の為替レート一覧です。現鈔が現金の場合のレートです。日本円(日元)の現金を中国元に両替する場合のレートは左から2列目のレートが適用されます。日本円の場合は100円を交換した場合に得られる中国元の額になっていますので、1万円を両替するとこの表の数字の100倍の額が手に入ります。(今だとおよそ600中国元です。)
日本の銀行で両替すると1中国元あたり1.5円ほどの手数料に相当するので、現地の銀行で両替するのが一番有利だと思います。

QVB.netである関数を呼んで、その関数内で呼び出し元関数を知る方法。

呼び出し元関数からある関数を呼びます。
その呼ばれた関数で、引数などで渡すのではなく、自然に前の関数の情報を取得できる方法はないでしょうか?
どこかに、自然に保持されているとか?
もし、不可能ならそういう答えもお待ちしてます。
よろしくお願い致します。

あと、もう一つ、普通のシステムでデバッグログなどはどうやって出すのでしょうか?
出す情報などがわかると幸いです。
ログについての詳しいことがのってるサイトでもあれば非常に助かります。

よろしくお願い致します。

Aベストアンサー

自然にというのが意味不明なのですが、普通引数で渡すものですし、その手続きが出来ないのなら、モジュールレベルで変数を宣言して情報?を共有してしまえばいいかなと。

---
dim a as integer

function aaa as integer
 a=0
 bbb()
end function

function bbb as integer
dim b as integer
 b=a
end function

デバッグログを外部ファイルに書き出したいということであるなら参考URLで。
ただ書き出す情報については開発する人が決めることですが・・・。一般的にこういう情報を書き出すなんてありませんよ。どういう情報を確認したいのかなんて開発者にしか分からないことでしょうに。
普通はあるエラーが発生した時に確認したい変数の値とか、環境情報だとか、そういうものを書き出すかと。
特に目的がないなら別に書き出す必要もないでしょう。

参考URL:http://dobon.net/vb/dotnet/programing/tracelisteners.html

自然にというのが意味不明なのですが、普通引数で渡すものですし、その手続きが出来ないのなら、モジュールレベルで変数を宣言して情報?を共有してしまえばいいかなと。

---
dim a as integer

function aaa as integer
 a=0
 bbb()
end function

function bbb as integer
dim b as integer
 b=a
end function

デバッグログを外部ファイルに書き出したいということであるなら参考URLで。
ただ書き出す情報については開発する人が決めることですが・・・。一般的にこういう情報を書き出すな...続きを読む

Q上海空港で円を元に両替し、帰りに上海か成田で元を円に両替しようと思います。

レートが20円/元とすると、10000円は何元の手取りになり①、全く使わず円に戻すと何円になるのでしょうか②?両替できる単位はどれほどでしょうか③。元は何元札を持てば一番便利でしょうか④?注意すべきこと、有利になることなど何でも教えてください⑤.海外は初めてです。

Aベストアンサー

① 国際線出口の両替所では両替1回毎に手数料60元を必要としますから、元買い為替レート20円=1元ならば、(10,000÷20)-60=540元となります。なお両替レート自体が中国銀行公定レートより悪いです。
② 中国内での再両替は6か月内の両替証明書金額の1/2までです。たとえ両替した元を全額使用しなくとも、この制限にかかり全額再両替は出来ません。なお、公式レートでは元売りの為替レートは元買いの為替レートより約0.5%低くなります。これが手数料になります。
③ 両替は通貨である紙幣単位です。円は千円から、元は1元からです。
④ 円から元への両替では100元札が基本です。スーパーやコンビニでは問題なく100元札で買い物できますから、そう気にする必要はありません。ただ、市内バスに頻繁に乗るなら、交通カード無しの場合、中国では無人バスではお釣りが出ませんから、運賃の1元札か硬貨を持つ必要があります。
⑤ 基軸通貨である米ドル・ユーロを除くと、現地両替が原則です。日本では10%以上レートが悪いのが一般的です。もし中国内での両替でしたら、市中の中国銀行での両替レートは公定レートで空港のような手数料無しなので問題ありませんが、場所探しと時間がかかります。

① 国際線出口の両替所では両替1回毎に手数料60元を必要としますから、元買い為替レート20円=1元ならば、(10,000÷20)-60=540元となります。なお両替レート自体が中国銀行公定レートより悪いです。
② 中国内での再両替は6か月内の両替証明書金額の1/2までです。たとえ両替した元を全額使用しなくとも、この制限にかかり全額再両替は出来ません。なお、公式レートでは元売りの為替レートは元買いの為替レートより約0.5%低くなります。これが手数料になります。
③ 両替は通貨である紙幣単位です。円は...続きを読む

QCBool関数について VB6とVB.netの違い

VB6のCBool関数で
#付きの論理文字列? #TRUE#,#FALSE#
を読み込ませるとそれぞれbool値のTrue,Falseに変換してくれます。

.NET(2013)に移行して、互換の関数であるCBoolをそのまま使うとエラーが発生して変換できませんでした。
CBool関数について検索したりして調べたのですが、これらの文字列に対する処理が書かれたものは見つかりませんでした。

#TRUE#,#FALSE#をbool値に変換するには、文字列でそのまま比較して変換してやるしかないのでしょうか?

なぜ、こんなことを質問しているかというと、Write関数(WriteLine関数)でbool値をファイルに出力すると#TRUE# または #FALSE# で出力されるので、それをそのまま読み込みたいのです。
もちろん、例えば数値の1,0に変換して出力しておくなどの方法もありますが、それだと過去のファイルとの互換性がなくなるため、VB6で出力したファイルが使用できなくなります。

VB.NETでもWrite関数(WriteLine関数)で出力すると#TRUE#または#FALSE#と出力されるのでそれをそのまま読み込みたいのですが、VB.NETでは読み込めないというのは片手落ちの気がするのですが。

VB6のCBool関数で
#付きの論理文字列? #TRUE#,#FALSE#
を読み込ませるとそれぞれbool値のTrue,Falseに変換してくれます。

.NET(2013)に移行して、互換の関数であるCBoolをそのまま使うとエラーが発生して変換できませんでした。
CBool関数について検索したりして調べたのですが、これらの文字列に対する処理が書かれたものは見つかりませんでした。

#TRUE#,#FALSE#をbool値に変換するには、文字列でそのまま比較して変換してやるしかないのでしょうか?

なぜ、こんなことを質問しているかというと、W...続きを読む

Aベストアンサー

VB6とVB.NETは似てるけど別物と考えた方がいいです。

#TRUE#を Trueとして読むなら、Input関数が使えます。
https://msdn.microsoft.com/ja-jp/library/tty8298b(v=vs.90).aspx
おそらく、 VB6互換のWriteで書いたものは、同じく互換のInputで読む、というのが想定している使い方なのでしょう。


私なら、#True#も変換できる自家版Cboolを用意します。
#true# と #false#を大文字小文字区別無しに判定させればいいだけなので。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報