トップページ⇒tech
1001コメント301KB

VBプログラマ質問スレ(6.0以前) Part46

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/03(金) 22:58:33
VisuarlStudio
0022デフォルトの名無しさん2006/02/04(土) 05:53:19
>>21
つ Spy++
0023デフォルトの名無しさん2006/02/04(土) 05:56:23
>>16
vistaでvb6のアプリは動くのかい?

cとかjavaも画面がないやつなら書いたことあるけど、
画面があるアプリつくるのにvb6からシフトするならどの言語がお勧め?
0024デフォルトの名無しさん2006/02/04(土) 06:35:20
田中彰の応援歌を考えた。

行くぞ彰ホームラン!センターオーバーホームラン!
弾丸ライナーだ!飛ばせ!運べ!彰!

俺が考えた歌詞ですよ!
弾丸ライナーだ!の後に「ヘイ!」とか「おい!」って掛け声を入れてスタンドでジャンプするの
とかいれると面白いかもしれない。
0025デフォルトの名無しさん2006/02/04(土) 06:47:54
>>11
これはボケ・・・なのか?

>>23
言語の問題じゃないでしょそれは。
0026デフォルトの名無しさん2006/02/04(土) 07:13:40
VB6SP6のDateAdd関数なんだけど

Dim a As Date
Dim b As Date

a = CDate("18:30:00")
b = CDate("18:15:00")

b = CDate(DateAdd("n", 15, b))

If a = b Then
Call MsgBox("OK")
Else
Call MsgBox("NG")
End If

上のを動かすとOKにならないんだけど、うちの環境だけなのかな?
OS:WinXPSP2
0027デフォルトの名無しさん2006/02/04(土) 07:40:56
>>26
VB6はXPでは動作保証されてないよ。
で、日付の比較は DateDiff。
0028デフォルトの名無しさん2006/02/04(土) 09:00:51
2kでも同じ現象が起こるがdatediff使えばいいだけだな
0029262006/02/04(土) 09:18:58
b = CDate("18:30:00")

にするとOKになるんで今までDateDiff関数なんか使ったことないです。
DateAdd関数使うとミリ秒の誤差が発生するってことですよね?
0030デフォルトの名無しさん2006/02/04(土) 09:40:59
>>29
全然違うが。
0031デフォルトの名無しさん2006/02/04(土) 09:51:41
この件とは関係ないけど、CDate("18:30:00")じゃなく#18:30:00#にしようぜ。
0032デフォルトの名無しさん2006/02/04(土) 14:00:30
>>27
それほんと?

>>29
確かに同じ日付(時刻)どうしを引き算すると値があることがあるわけだけど、
そういう引き算に何か意味があるのかといえば、無いのではないかと思われる。
やはり日付操作はそれ専用の関数を使わないといけないということだけなのでしょう。
0033322006/02/04(土) 14:08:27
- 演算子のマニュアルに
2 つの日付型の式を含む除算は倍精度浮動小数点数型が返ってくるとある。
日付型が返ってくるわけではないのでおよそ意味不明なことになるけど
不具合でもなくて仕様どおりですね。
因みに、日付型とその他のデータ型を含む除算は日付型を返すと言っている。
0034322006/02/04(土) 14:11:40
えー
>>32と>>33につき
全く流れに沿ってない発言でした。
撤回します。orz
0035デフォルトの名無しさん2006/02/04(土) 14:34:51
>>26
VBの日付型は1分を1/1440の小数であらわすので微妙な誤差が出る。

それからDateAddの日本語版のマニュアルの記述に誤りがある。本当は次のとおり
Returns a Variant of subtype Date.
そなもんで b = CDate(CStr(DateAdd("n", 15, b))) と書けばOKが戻るはず。

0036デフォルトの名無しさん2006/02/04(土) 15:00:29
ややこしいな
0037デフォルトの名無しさん2006/02/04(土) 15:08:42
>>32
普通に考えて、開発環境より後に世に出たOS上で、その開発環境がまともに動く訳がない。
ttp://www5.airnet.ne.jp/init/vb/level1/level1001.html
こんなサイトもある。

で、日付型に「=」を使う事自体がそもそも間違い。VBだしエラーにはならないけど、結果は不定。
日付型専用の DateDiff がわざわざちゃんと用意されてるんだから。
0038デフォルトの名無しさん2006/02/04(土) 15:09:05
MyDateクラスでも自給してれば
0039デフォルトの名無しさん2006/02/04(土) 15:09:34
>>36
DateDiff 使えばいいだけの話なので、ややこしくも何ともない。
0040デフォルトの名無しさん2006/02/04(土) 15:22:25
WinXPのコマンドインタプリタなんだが
tabで補完してくれる分には嬉しいけど、複数の候補が有る場合に一番使わないのに確定しちゃうのはちょっとなぁ・・・
0041デフォルトの名無しさん2006/02/04(土) 15:22:29
内部がDoubleで表現されてるのを知らないと陥りやすい罠だよね
0042デフォルトの名無しさん2006/02/04(土) 15:41:26
日付の引き算の問題はOSのバージョンや環境とは関係なく最初からある。
上の例だと1.11E-16だけ誤差があるようで、DateDiff使うのがやっぱり無難でしょう。
Date型の内部表現やDoubleとの互換性はマニュアルにも明記してあるんだから、
それを意識して使うなら問題はない。
0043デフォルトの名無しさん2006/02/04(土) 16:22:45
>>42
いや「無難」じゃなく、それしか方法はなく、それだけが正しいのだが。
0044haha2006/02/04(土) 16:33:36
VB6で画像ファイルをPictureBoxにドラッグして表示させたいのです。
OLEDragDrop イベントを使うらしいのですがなんだかよくわかりません。
まずファイルのパスを取得して、ロードで読み込みをするんでしょうか?
でもドロップファイルのパスの取得のやり方もわかりませんし…。
どのようにして実現させるのでしょうか? どなたか教えてください。
0045デフォルトの名無しさん2006/02/04(土) 16:35:32
>>44
とりあえずOLEDropModeを自動に設定
OLEDragDrop()イベントで引数DataのFilesコレクションの中身を列挙するForEach文を書く
で、ファイルをD&D

かもしれない
0046デフォルトの名無しさん2006/02/04(土) 17:03:16
WinInetを使ってサーバーにデータをPostさせるにどうすればいいでしょうか?
0047デフォルトの名無しさん2006/02/04(土) 17:15:52
>>46
つMSDNヘルプ
0048デフォルトの名無しさん2006/02/04(土) 17:23:15
>>47
ありがとう
ぐぐってみます
0049デフォルトの名無しさん2006/02/04(土) 17:24:58
Bitbltって画像読込させたら速いの?
0050デフォルトの名無しさん2006/02/04(土) 17:27:53
>>49
BitBltはDCからDCにビットマップを転写するAPI
画像読み込む云々は全く関係ない・・
0051デフォルトの名無しさん2006/02/04(土) 17:55:40
>>50
ありがとう

でもこのサイトにはスピードがあるって書いてあるよ
ttp://www005.upp.so-net.ne.jp/h-masuda/vb6/vb6api/vb6api04.html
API自体が速いってこと?
0052デフォルトの名無しさん2006/02/04(土) 18:03:29
Set f1 = fk.GetFolder("c:")
For Each bj In f1.Files
こうすると、「Function または変数が必要です」となります。どうしてですか?
0053デフォルトの名無しさん2006/02/04(土) 18:05:10
>>51
PaintPicture()メソッドはVBの内部と癒着しまくって動いているから(描写以外にも何かしてるはず)
基本的に低速
BitBltはその辺GDI直だから結構早い
それでも遅いときはDIB系のAPIつかう
まだ早くしたいときはDirectXか?
0054デフォルトの名無しさん2006/02/04(土) 18:06:12
あと>>51のサイトでScaleMode=vbPixelにしろって書いてないけど、
多分しないとマトモに動かないから
0055デフォルトの名無しさん2006/02/04(土) 18:06:54
>>52
とりあえず msgbox Typeof(fk.getfolder("c:")) の値を見せなさい。
0056デフォルトの名無しさん2006/02/04(土) 18:07:42
>>55、TypeNameな
0057デフォルトの名無しさん2006/02/04(土) 18:08:09
("c:")
 ↑これなんてキャラ?
0058デフォルトの名無しさん2006/02/04(土) 18:09:03
>>53-54
わかった
どうも親切にありがとう
0059デフォルトの名無しさん2006/02/04(土) 18:19:06
>>55>>56
ループの中でFolderでした。bjはファイルにならないのかな?
0060デフォルトの名無しさん2006/02/04(土) 18:24:25
>>59
じゃこれだ:
http://www.interq.or.jp/student/exeal/dss/ref/wsh/scripting/folder.html
0061デフォルトの名無しさん2006/02/04(土) 18:25:41
>>52
f1 と fk とbj の宣言部分は?
0062デフォルトの名無しさん2006/02/04(土) 18:27:47
>>59
とりあえずさ、例外を再現できるコード(vbsファイルにコピペすれば大体動くような)を提示してくんない?
なぞなぞやってるわけじゃないんだから
0063592006/02/04(土) 18:36:45
コメントにしていたSUBとかEND SUBを除いたら出来るようになりました。ごめんなさい
0064262006/02/04(土) 18:45:12
>35>42
納得出来ました、ありがとう。

>37
専用関数使えば良いだけなんだろうけど
文字列の比較もStrComp関数で…とか屁理屈考えちゃいました。
0065デフォルトの名無しさん2006/02/04(土) 18:47:18
>>64
あと、文字列→日付にCDate()使ってるみたいだけど
あれはWindowsの設定によって解釈変わっちゃう可能性あるから、
DateSerial()+TimeSerial()で作った方が安全だと思うぞ
0066デフォルトの名無しさん2006/02/04(土) 18:49:45
エクセルVBAの話をしてはだめですか?
0067デフォルトの名無しさん2006/02/04(土) 18:50:32
>>66
VB6と被ってる関数/クラスならいいんでね?
俺は
0068デフォルトの名無しさん2006/02/04(土) 18:54:39
>>63
何がどう駄目でどの様に解決したのか全然分からん。
0069デフォルトの名無しさん2006/02/04(土) 18:56:42
>>66
ttp://ttsearch.net/s.cgi?k=Excel+VBA&o=r
0070デフォルトの名無しさん2006/02/04(土) 19:00:32
>>67
Sub UHA()
S = "Select qq.* From kimo.txt qq"
c = "ODBC;DSN=Text Files;DefaultDir=C:\www"
With Sheets(2).QueryTables.Add(Connection:=c, Destination:=Range("a1"), Sql:=S)
.Refresh
End With
End Sub
のあと、シート2のソートが正常に動作してくれません
0071デフォルトの名無しさん2006/02/04(土) 19:04:38
>>51のサイト見てたんだけど
非表示のPictureBoxに絵を読み込んで他に転写する方法っていかにもVBっぽいよな
0072デフォルトの名無しさん2006/02/04(土) 19:04:56
(ノ∀`)アチャー
0073デフォルトの名無しさん2006/02/04(土) 19:12:45
>>70
突っ込むのはビューだからかもなー
よく分からん
orderbyでソートしたら?

>>71
たすかに
CreateCompatibleDC/Bitmap使ってとかは面倒なんだろ
0074デフォルトの名無しさん2006/02/04(土) 19:25:35
> 突っ込むのはビューだからかもなー

解説をお願いします。突っ込む ビュー のあたりが初耳です
0075デフォルトの名無しさん2006/02/04(土) 22:32:12
>VBAは、Officeアプリの操作以外ならばこのスレで質問しても大丈夫です。
との事なんで質問させていただきます。

Excel2002 + MySQL
VBAからテーブルのバックアップを取ろうと思って以下の処理を書いて
見たんですが、バックアップファイルが出来ません。
Dim shell_str As String
Dim ret

shell_str = "mysqldump database table1 -u root -phogehoge > D:/Data/SQL/table1.sql"
ret = Shell(shell_str, vbMinimizedNoFocus)

これをバッチファイル(例えばbkup.bat)にして

ret = shell("c:\temp\bkup.bat",vbMinimizedNoFocus)

で正常に走る事は確認しているんですけど、出来たらちょこまかしたバッチ
ファイルは作らずにVBA上からやりたいと思っています。どういう風にすれば
よろしいんでしょうか。

0076デフォルトの名無しさん2006/02/04(土) 22:53:32
>>75
shell _str = "cmd /c""mysqldump database table1 -u root -phogehoge > D:/Data/SQL/table1.sql"""
0077デフォルトの名無しさん2006/02/04(土) 23:03:33
>>76
おおお〜!即レス有難うございますm(__)m。
なるほど、そういう風に書くんですね!
実行してみたら出来ました。有難うです。
0078デフォルトの名無しさん2006/02/04(土) 23:21:09
post methodを使うサンプルコード探しています
どなたかご親切な方いましたら
post methodの使い方をご教授願います。

ブラウザーを介さず直接サーバーに情報を送信したいのです。
0079デフォルトの名無しさん2006/02/04(土) 23:22:42
>>78
ほらよノシ[RFC]
http://www.ietf.org/rfc/rfc2616.txt
0080デフォルトの名無しさん2006/02/04(土) 23:27:20
>>79
レスありがとう
大変参考になりましたといいたいところですが
敷居が高すぎますorz
出来ましたら、易しめなのを希望します。
0081デフォルトの名無しさん2006/02/04(土) 23:29:12
>>79
オマエ鬼だな...

>>78
ご教授って書かなかったら教えたのにな

ヒント:X○○H○○○R○○○e○○
0082デフォルトの名無しさん2006/02/04(土) 23:30:58
XMLHTTP(ry
0083デフォルトの名無しさん2006/02/04(土) 23:31:30
俺ならWinSockから実装するよ

telnet o www.google.co.jp 80
POST (ry
0084デフォルトの名無しさん2006/02/04(土) 23:33:25
>>83
WinSockだとSSLがじゃましないか?
0085802006/02/04(土) 23:45:11
>>81-82
サンクス昔調べたサイトのこと思い出せた。
XMLHTTPRequest
http://x7net.com/~access/AcTipsVbaXMLHTTP.html

>>ご教授って書かなかったら教えたのにな

もう少しpost methodの使い方について教えて下さい?

>>83
レスありがとう
>>84が言うとおり処理が複雑そうになるのは気のせいですか?
0086832006/02/04(土) 23:48:21
ん?
WinSockだと何か弊害が…?
とりあえずセキュアなサイトは訪れるのが面倒になるが
0087802006/02/05(日) 00:00:12
>>86
いいえそんなことはないと思うのですが
別な掲示板でWinInetのほうが初心者は使いやすいと読んだことがあります。
0088デフォルトの名無しさん2006/02/05(日) 00:01:27
じゃあそっちの掲示板で聞けよ
0089デフォルトの名無しさん2006/02/05(日) 00:04:40
まったり行こうぜ
0090デフォルトの名無しさん2006/02/05(日) 00:09:33
初心者はInetコントロールでも画面に貼って使っておけ
0091デフォルトの名無しさん2006/02/05(日) 00:10:37
>>90
そんなことせんでもUserControlのAsyncReadメソッドで
0092デフォルトの名無しさん2006/02/05(日) 00:15:09
AsyncReadはmethod指定できなくね?
0093デフォルトの名無しさん2006/02/05(日) 00:17:57
しかしInetはバグが酷すぎる
0094デフォルトの名無しさん2006/02/05(日) 00:24:20
>>78
つMSDNヘルプ
0095デフォルトの名無しさん2006/02/05(日) 01:28:14
AsyncReadって、どうしてユーザーコントロールじゃなきゃいけないんだろ。フォームでええやん。
0096デフォルトの名無しさん2006/02/05(日) 01:49:35
>>37
なんだ根拠なしに言ったのか。
sp6のサポートOSにちゃんとXPも載ってるじゃねえか。
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=a8494edb-2e89-4676-a16a-5c5477cb9713&DisplayLang=ja

ところでVB6からVB2005への移行を検討するスレってどこかにない?
0097デフォルトの名無しさん2006/02/05(日) 01:53:25
>>96
おまいは実行環境と開発環境の区別もないのか・・・
0098デフォルトの名無しさん2006/02/05(日) 01:54:28
>>65
非常に懐かしいが経験ある。
0099デフォルトの名無しさん2006/02/05(日) 01:55:34
>>97
ランタイムじゃないよ。97が間違えてるのでは?
0100デフォルトの名無しさん2006/02/05(日) 01:56:20
>>97は真性キチ
0101デフォルトの名無しさん2006/02/05(日) 01:57:15
>>98
経験?
0102デフォルトの名無しさん2006/02/05(日) 02:01:25
>>101
DBから文字列で格納された日付をひろって、
cdateで日付に変換していたらで一部PCでだけ不具合が出たなーという
苦い経験
0103デフォルトの名無しさん2006/02/05(日) 02:03:01
>>102
ぁあなるほど・・・そういえば時々掲示板に上がってくるなぁ、そういうの
0104デフォルトの名無しさん2006/02/05(日) 02:39:23
>>85
http://www.tt.rim.or.jp/~rudyard/torii009.html
0105デフォルトの名無しさん2006/02/05(日) 05:06:52
ハハハ、IHTMLElementRender::DrawToDC()使おうと思ったらVBに怒られたぜ・・・ショボンヌ
0106デフォルトの名無しさん2006/02/05(日) 10:00:41
す、すんまそん。VB4からのウラシマユーザーです。
VB2005弄ってみました。
で、いきなり躓きました。

コントロール(チェックボックスとか)を配列にするにはどーしたらエエんでしょう?
以前は、コピペで勝手に配列型にしてくれてたんですが。

0107デフォルトの名無しさん2006/02/05(日) 10:16:09
AsyncRead と Inet で GetChunk するんじゃどっちがはやいですか?
0108デフォルトの名無しさん2006/02/05(日) 11:06:50
>>106
スレタイを二百回読んでごらん
0109デフォルトの名無しさん2006/02/05(日) 11:35:43
IEなどのブラウザーを通さずに
サーバから直接、特定のサイトにユーザー名、パスワードを送信して
ログインしたいのですが
まずはじめに何から取り掛かれば良いでしょうか?
エクセルのVBAで解決したいと考えています
おねがいします。
0110デフォルトの名無しさん2006/02/05(日) 11:38:04
>>109
質問があいまいです
0111デフォルトの名無しさん2006/02/05(日) 11:43:33
>>109
とりあえず校庭十周
0112デフォルトの名無しさん2006/02/05(日) 11:45:39
>>111
40過ぎのおっさんだったらカワイソウだぞw
0113デフォルトの名無しさん2006/02/05(日) 11:47:14
基礎体力は大事だな、確かに
0114デフォルトの名無しさん2006/02/05(日) 11:49:42
>>109
素人なら
WinInetでも使っとけw
0115デフォルトの名無しさん2006/02/05(日) 12:48:52
VB6の低脳化はついにここまで進行したのか
0116デフォルトの名無しさん2006/02/05(日) 12:49:07
>>109
とりあえず何のプロトコルかわからんからそっから調べて来い
01171092006/02/05(日) 14:05:05
>>116
素人はWinInetを使えとありますので
本を見ながらユーザーフォームに追加してみました
下記の
name="koza1"
name="koza2"
name="passwd"
にデータを送信したいです。
GETでデータを取得すると文字化けしたので
WEB上のソースを貼り付けました。

https://trade.kabu.livedoor.com/Login/0/imode/login_h
ライブドア証券携帯サイト

<!--画面専用のソースの挿入-->
<FORM action="/IMode/00000000/imode/login_e" method="POST">
<P> 部店コード <BR>
<INPUT type="text" name="koza1" maxlength="3" size="3" istyle="4" value="">
<BR>
口座番号 <BR>
<INPUT type="text" name="koza2" maxlength="7" size="6" istyle="4" value="">
<BR>
パスワード <BR>
<INPUT type="PASSWORD" name="passwd" maxlength="10" size="10" istyle="4" value="">
<BR>
<center>
<INPUT TYPE="submit" VALUE="ログイン" accesskey="1">
</center>
</FORM>
01181092006/02/05(日) 14:07:09
>>110-111
すいません
初めてのことで何を聞けばいいかさえ解らない状態です
0119デフォルトの名無しさん2006/02/05(日) 14:14:08
>>96
未だにMSの「サポートしてます」を信じる奴が居るとは・・・
実際に数々の不具合が出てる訳だが。
まぁ別にやりたいならインストール&開発&配布すればいいよ。
>>107
速さはハードウェアで解決する時代。
>>109
TCP/IPの勉強。
0120デフォルトの名無しさん2006/02/05(日) 14:18:20
VBってランタイムが要る時点でだめぽだよね
0121デフォルトの名無しさん2006/02/05(日) 14:20:48
>>120
今の時代、全て突っ込んだアプリケーションはそうそうない
■ このスレッドは過去ログ倉庫に格納されています