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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/22(日) 20:39:53
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 http://www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。
0666デフォルトの名無しさん2006/12/19(火) 17:33:04
http://61.197.151.26/20061219330980/omote/img200611/2006110718_1015425697.jpg
0667デフォルトの名無しさん2006/12/19(火) 17:33:05
>>665 は、あほ
0668デフォルトの名無しさん2006/12/19(火) 17:33:56
>>667
なぜ?
0669デフォルトの名無しさん2006/12/19(火) 17:40:03
>>665 自分で言うのもなんですが、へっぽこだからです。
コマンドボタン ぽちっと押したら ftpみたいなことがしたい・・・。
0670デフォルトの名無しさん2006/12/19(火) 17:41:59
アフォかどうかは兎も角、665 は典型的という気がする。
0671デフォルトの名無しさん2006/12/19(火) 17:43:48
>>669
それは可能だよ。
ただ、そのボタンのクリックイベントにftp転送のコードを書けばよいだけ。
一度書いてしまえばあとは「コマンドボタン ぽちっと押したら ftp」
0672デフォルトの名無しさん2006/12/19(火) 17:45:21
>>669
だから、コマンドボタン押したときにftp.exeを起動すればいいじゃないか
VBAでもShellExecute使えるでしょうし ftp -s:もあるし
0673デフォルトの名無しさん2006/12/19(火) 17:50:37
指定したフォルダ名が共有フォルダかどうかを調べるには
なにを見ればいいのでしょう。
Folder オブジェクトのAttributes プロパティには何もなさそうですが。
0674デフォルトの名無しさん2006/12/19(火) 17:51:04
「あほ言う奴があほ」って名言思い出したよ!
0675デフォルトの名無しさん2006/12/19(火) 17:58:09
ftpを手軽に扱いたいならWinInet.DLL使えば良いんじゃないか?
ftp.exeはコマンドテキストファイルとか面倒くさい
0676デフォルトの名無しさん2006/12/19(火) 18:13:36
vbaで動くサンプルとかないですかね?
wininet.dll はVBだけですよね?
0677デフォルトの名無しさん2006/12/19(火) 18:20:22
>>676
サンプルはありません
検索しても見つからないでしょう
VBだけですから使えません

満足しましたか?
0678デフォルトの名無しさん2006/12/19(火) 18:29:38
>>674
どこも同じですね
http://pc8.2ch.net/test/read.cgi/tech/1124559962/343
0679デフォルトの名無しさん2006/12/19(火) 18:43:39
すみません、質問です。
VBのプログラムを実行させていたところ、「che」というタイトル名の同じようなウィンドウが開き、エラー停止してしまったのですが、
このような現象はどのようなエラーなのでしょうか?
いくら調べてもこれだけは見つからず…。
「snd」というタイトルで出現する場合もあるようです。
0680デフォルトの名無しさん2006/12/19(火) 18:46:53
>>679
再現できない
もっと詳しく教えれ
06816792006/12/19(火) 18:55:31
私も開発環境下では再現できなくて困ってます。
本社でソフトの開発、工場で実働、という形なのでどの部分でエラーが発生してるか
解析できないのです…。

ちなみにどのように使用しているかというと、測定用のプログラムで測定結果のファイルを作成し、
測定終了後に別の計算用のプログラムが入ってるパソコンへと通信しているようです。
ちなみに、問題があったファイル一式を手動で動作させた場合、問題なく動作しました。
0682酔いちくれ ◆J0rwikii8c 2006/12/19(火) 22:23:52
地方人は案件の度に東京に行くのがしんどい

>>644
非常に申し訳ない。
ForReadingと書いているところを

1

に置き換えてください。
酔うてご迷惑おかけしますた。
06836262006/12/19(火) 22:34:54
>>682
レスありがとうございます。
おぉ〜
動きました。
ありがとうございました^^
0684デフォルトの名無しさん2006/12/19(火) 22:35:34
参照設定させたり、定数宣言させたりではなく
マジックナンバー使わせるあたりが
変にカッコつけず初心者らしくて素敵です。
0685デフォルトの名無しさん2006/12/20(水) 00:10:45
質問です。
VB6.0でShellExecuteを使ってアプリに関連付けされている
ファイルを開きたいのですが、今のところできていません。
ByVal lpszFile As String 
に入る文字列を「ファイル名を指定して実行」でやるとファイルが開ける状態です。

http://support.microsoft.com/kb/170918/ja

↑ではできるとなっていますが、他のサイトでは
exeファイルしかできない、と書いてあるところがあります。
できるとばかり思っていましたが、できないのでしょうか?
06866852006/12/20(水) 00:13:17
下から2行目、間違えました。

「VBではexeファイルしかできない」と書いてあるところがあります。

です。
0687デフォルトの名無しさん2006/12/20(水) 00:15:26
どこだよ
0688デフォルトの名無しさん2006/12/20(水) 00:18:07
ShellExecuteのあとですぐ終了してません?
関連付けの起動は非同期なので、若干待ち合わせしないと。
06896852006/12/20(水) 00:30:42
ありがとうございます。
「すぐ終了」というのはアプリケーションを、ということですか?
0690デフォルトの名無しさん2006/12/20(水) 00:33:04
条件はよく分りませんが、待ちを入れてうまく行けばそれが原因と。
06916852006/12/20(水) 00:41:47
お、開きました。
その待ち合わせが原因かもしれません。
ありがとうございました。これから色々やってみます。
0692デフォルトの名無しさん2006/12/20(水) 09:44:11
質問です。 VB6環境 XPにて
PutIniを使ってiniへ書込みをしているのですが、オブジェクトとキーの変数の
コードを簡単にしたいのですが、わかりません。

PutIni "外来担当表", "ADDText1", Combo1, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"
PutIni "外来担当表", "ADDText2", Combo2, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"
PutIni "外来担当表", "ADDText3", Combo3, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"
PutIni "外来担当表", "ADDText4", Combo4, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"

また、GetIniに関してもわからない
Label1 = GetIni("外来担当表", "ADDText1", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini")
Label2 = GetIni("外来担当表", "ADDText2", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini")
Label3 = GetIni("外来担当表", "ADDText3", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini")
Label4 = GetIni("外来担当表", "ADDText4", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini")

ご教授おねがいします。
0693デフォルトの名無しさん2006/12/20(水) 09:50:46
今日からVB6始めた小学生か。
もう冬休みに入ってるとしたら北海道や東北か?
0694デフォルトの名無しさん2006/12/20(水) 10:03:19
>>693 北海道は25日頃から
 内地のほうがはやいんじゃなかったっけ?

北海道は冬休みは1/18ごろまで
0695デフォルトの名無しさん2006/12/20(水) 10:17:55
>>693-694
おまえらマジで邪魔だから氏んでくれない?
0696酔いちくれ ◆J0rwikii8c 2006/12/20(水) 11:14:33
>>692
PutIni
っていうのは、きっとオマイの中で宣言している、そういう関数なんだろう。
引数がセクション、キー、値、INIへのフルパスの。

セクション、キーは別はそんな風に直書きでもいい気もするけど、嫌なら
「変数」じゃなくて、「定数」に汁。

const INI_PATH As String = _
"\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"

Call PutIni("外来担当表", "ADDText1", Combo1.Text, INI_PATH)
Label1.Caption = GetIni("外来担当表", "ADDText1", "", INI_PATH )

つーか、病院関係者なら金持ちだろうし、ソフト屋に発注して
0697デフォルトの名無しさん2006/12/20(水) 12:11:48
よく見る共通関数だよな、GetIniとPutIniって。
0698デフォルトの名無しさん2006/12/20(水) 16:15:47
>>697
初めて見たが。
普通直接API呼ぶだろ。
0699デフォルトの名無しさん2006/12/20(水) 16:24:30
>>698
それはいかにもVBらしい悪い方法だな
0700デフォルトの名無しさん2006/12/20(水) 18:23:00
お教えください

今更ながら開発用端末をWin2kからWinXPにしたところ
ファイル検索の文字列検索でbasとかfrmがヒットしなくなりました
ソース内に例えば「外来担当表」と入っているプログラムを
探したいとか言うとき、XPではどうすればいいのでしょう?

Win2kだとファイル検索の文字列でヒットしたのに・・・。。・゚・(ノД`)・゚・。
0701デフォルトの名無しさん2006/12/20(水) 18:41:48
>>700
それはWindowsのスレ向けな質問ではなかろか。

検索のウインド
→「設定を変更する(G)」→「ファイルとフォルダの〜…(R)」→「上級者向け(D)〜…」

にして、旧来のアレ風にしてやってみてどーか。
0702デフォルトの名無しさん2006/12/20(水) 19:17:15
Dir() とDir$()の違いはなんですか?
0703デフォルトの名無しさん2006/12/20(水) 19:18:25
>>702
バリアントと文字列の違いわかりますか?
0704酔いちくれ ◆J0rwikii8c 2006/12/20(水) 19:30:20
>>692,700
てめー。回答者にありがとうございますがねーじゃねぇかよ
0705デフォルトの名無しさん2006/12/20(水) 19:30:42
>>703
引数の型が違うということですか?
戻り値の型が違うということですか?
0706デフォルトの名無しさん2006/12/20(水) 19:44:16
>>705
HELPは読めますか?
0707デフォルトの名無しさん2006/12/20(水) 20:08:49
>>692,>>700
「One Stop Multi」
0708デフォルトの名無しさん2006/12/20(水) 20:30:39
VB6やVBAでは組み込み関数に
"VBA.関数名"でアクセスできますが
VBSの場合この"VBA"に相当する
組み込み関数群の親は何ですか?
具体的にはArrayを上のような形で
利用したいのですが
0709デフォルトの名無しさん2006/12/20(水) 23:48:16
>>708
それってVBSでどんないいことがあるの?
0710デフォルトの名無しさん2006/12/20(水) 23:54:45
> ○ 回答者の心得
>  三.回答する上で必須ではない情報をむやみに聞き返さない。
0711デフォルトの名無しさん2006/12/21(木) 10:44:26
>>710
見えない俺ガイル
0712デフォルトの名無しさん2006/12/21(木) 11:56:36
こんなんだからVB6使いはバカにされるんだなぁ・・・orz
0713デフォルトの名無しさん2006/12/21(木) 11:59:13
ふーん、 .NETがあるのにね。
0714デフォルトの名無しさん2006/12/21(木) 11:59:41
>>1
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、 
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。 
0715デフォルトの名無しさん2006/12/21(木) 13:28:29
ミディンコな質問ですまない…
CSVファイルの最終行の改行を削除したいんだがどうすればいいんだろうか?
AAAA
BBBB
CCCC
DDDD
[EOF]
を↓にしたい
AAAA
BBBB
CCCC
DDDD[EOF]
0716デフォルトの名無しさん2006/12/21(木) 13:29:14
出力するときのやり方は知ってるんだが既存ファイルの操作ということで
0717デフォルトの名無しさん2006/12/21(木) 13:41:25
SetEndOfFileでできるかもしれない
出来なければ (読み取り)→(サイズを制限して書き込み) しかない
0718デフォルトの名無しさん2006/12/21(木) 13:52:53
APIかー
意外とめんどいもんですな。
VBらしくさくっといけるもんがあるのかと思ってた俺はさすがミディンコ
バイナリで読んで最後の改行記号ってとこまでは追及できたんだけど削除ができねぇ
VBのテキストファイル操作じゃファイルサイズが変わるようね編集ってできないぽ?

>>717
トンクス!
07197082006/12/21(木) 14:14:43
>>714
OSやWSHのバージョンが違っても
親オブジェクトは一緒だろうと思って
省略してました、すみません
WindowsXP ServicePack1
WSH5.6 ServicePack無し
IEなどではなくwscript.exeでの実行です

やりたいことは"obj.Array"という形で
組み込み関数のArrayを使いたいだけです
試したことはVBA.Me,WSHの指定です
VBAはオブジェクトがありません、Me,WSHは
Arrayをサポートしてませんになり
Arrayの親オブジェクトが解らない状況なので
困ってます

知りたい理由は興味とでも思ってください
どのような環境で使うかが解っていれば
オブジェクトは一意でしょうから
どのように使うかは必要な情報では
無いでしょうし使い道は一つだけじゃないので
0720デフォルトの名無しさん2006/12/21(木) 15:18:01
> どのように使うか
まぁ、代用法でも良いから教えてくれというなら書くべきことだがな。
そうでなければ必要ないが、代用法を押しつけて自己満足したいだけの
自称上級者共は必要としてるかもw
0721デフォルトの名無しさん2006/12/21(木) 15:28:00
>>719
VB6のVBAはモジュールなので、WSHでは直接見れないと思われ
必要な関数をクラスのメソッドとしてラップしたActiveXDLLを作るのが適当だと思う

>>720
そういうチンコが大きい発言はもっと大人の男の子になってから言おうね
0722デフォルトの名無しさん2006/12/21(木) 15:44:50
>>718
ヒントTypeName(Me)
07237222006/12/21(木) 15:46:12
マチガイ>>719
0724デフォルトの名無しさん2006/12/21(木) 17:02:02
doubt!708=710=719=720
そんなことwshスレで聞け、と覗いてみたら
あっちでも、回答振り込め詐欺やってバレて、こっちへ来たか
>>1に回答振り込め詐欺禁止とは書いてないもんな
0725デフォルトの名無しさん2006/12/21(木) 17:14:15
こういうのは放っておこうね。┐(´ー`)┌
0726デフォルトの名無しさん2006/12/21(木) 17:35:56
>>712
莫迦にしてるのはお前だけ。
0727デフォルトの名無しさん2006/12/21(木) 17:43:10
VB使いは全体が平均してバカなんじゃなくて
極端にバカというか痛い奴の割合が多い。
ちょっと上にも変なの湧いてるし。
0728デフォルトの名無しさん2006/12/21(木) 18:19:36
>>702
クイズの正解はひょっとして$の有無?
0729デフォルトの名無しさん2006/12/21(木) 18:20:40
>>724
残念!、>>1-723まで全て俺一人の自演だ
俺様の壮大なシナリオに引っかかったなm9(・∀・)
0730デフォルトの名無しさん2006/12/21(木) 19:08:33
>>721
>VB6のVBAはモジュールなので、WSHでは直接見れないと思われ

>>719が言ってるのはVB6のVBAではなく、VBScriptのArray()のこと

だから、オブジェクトブラウザでMicrosoft VBScript Globalsを参照設定すれば
Library VBScript_Globalが現れて、
Array()がClass GlobalObjのメンバと分る。
ってことじゃないかな
0731デフォルトの名無しさん2006/12/21(木) 19:52:10
OpenTextFileの第4引数で「TristateMixed」ってのが有るけど、「TristateUseDefault」と同じですか?

0732酔いちくれ ◆J0rwikii8c 2006/12/21(木) 20:07:29
参照設定はしないで済むならしないほうがいいんだけどねぇ


よくわからんけど、ASCIIかUnicodeかの違いじゃマイカ??
デフォルトは ASCIIで、ミックスというくらいだから、どっちでも
いいよ? みたいな?

もう、酔うた。
0733デフォルトの名無しさん2006/12/21(木) 20:27:13
>>718
一旦別ファイル名で書き出してから、
元のファイルを削除し、先に書き出しておいたファイルを正しい名前に変えればいい。
07347082006/12/22(金) 14:12:37
>>721
使用したいのはVB6のArrayではなく
VBSのArrayです
0735デフォルトの名無しさん2006/12/22(金) 14:41:04
過去ログにあってもおかしくないと思ったんですが、見つからなかったので
質問です!

VB6のコンボボックスで、「ファイル名を指定して実行」のコンボボックス
みたいに、前方一致で補完できるようには出来ないのでしょうか。

spy++で見ると、クラスが違うので異なるコンポーネントなんだろうとは
分かるのですが。。。
WindowsAPIで作らなければならないでしょか。
0736デフォルトの名無しさん2006/12/22(金) 14:48:52
>>735
自分でコーディングすればおk
0737デフォルトの名無しさん2006/12/22(金) 15:46:46
>>735
ttp://www.google.co.jp/search?complete=1&hl=ja&q=shell+api+%E5%85%A5%E5%8A%9B%E8%A3%9C%E5%AE%8C&lr=
>>736の言うように自分でゴリっとした方が楽&安全
0738デフォルトの名無しさん2006/12/22(金) 18:38:02
CHANGEイベントでDIR関数使って、
見つかったファイルを全部コンボリストにADDして
そのコンボをプルダウンさせるのかな?
07397352006/12/22(金) 20:12:10
レス有難うございます。

なるほど、自分で実装するのですね。
ってか、コンボボックスというより、テキストボックスに
プルダウンの入力補完が付くというイメージの方が近い
んですかね。

やりたい事は、既にコンボボックスに登録されているリスト
の中から、前方一致で合致するものを補完する機能です。
Officeのコンボボックス(RichEdit20W)とか、コンポーネントとして
切り出してくれれば良いのに。。。
0740デフォルトの名無しさん2006/12/22(金) 20:53:29
やり方は見付けたが、これをVBでやるのは無理そうな気がする。
ttp://www.runan.net/program/tips/sdk_17_IAutoComplete.shtml
07417352006/12/22(金) 22:18:57
情報有難う御座います。
何が一番楽か、ちょっと模索してみたいと思います。
0742デフォルトの名無しさん2006/12/23(土) 11:12:37
>>730
708じゃないけど、参照設定でMicrosoft VBScript Globalsが見つからないです。
環境は、WinodwsXP SP2、VB6.0 SP6。
XP用のWinodws Script 5.6もインストールしました。
後学のためにぜひ試してみたいので、どなたか教えてください。
0743デフォルトの名無しさん2006/12/23(土) 14:11:05
>>708
[名前].Array()
0744デフォルトの名無しさん2006/12/23(土) 16:02:20
>>741
一番楽なのは、そういう機能を持ったコントロールを購入する事だな。
0745デフォルトの名無しさん2006/12/23(土) 16:15:46
>>744
その程度のコントロールなら簡単に作れるでしょw
っていうか、VBのコンボって最初から入力補完ついてると思うんだけど。
あれ結構鬱陶しいと思うんだけどね。
0746デフォルトの名無しさん2006/12/23(土) 17:12:03
つくてみた。
Option Explicit
Private WithEvents cmb As ComboBox
Private WithEvents btn As CommandButton
Private Sub cmb_GotFocus()
    SendKeys "%({DOWN})"
End Sub

Private Sub Form_Load()
    Dim i As Long
    Set cmb = Me.Controls.Add("VB.ComboBox", "cmb")
    Set btn = Me.Controls.Add("VB.CommandButton", "btn")
    With cmb
        .Move 0, 0, 3000
        .Visible = True
        For i = 1 To 100
            .AddItem "Item" & Format$(i, "00")
        Next
    End With
    With btn
        .Move 3100, 0, 1500, 1000
        .Caption = "Place Hold"
        .Visible = True
    End With
End Sub
0747デフォルトの名無しさん2006/12/23(土) 20:25:36
>>746
残念だけど、違うと思う。
0748デフォルトの名無しさん2006/12/23(土) 21:06:13
うん、完全に勘違いしてると思う。
0749デフォルトの名無しさん2006/12/24(日) 02:22:00
どっちが>>745?
元ネタはともかく>>745が言うようにコンボボックス使ってみただけだよ
違うコンボボックスなの?
>>735のネタは>>737とか>>740で回答されてるし
0750デフォルトの名無しさん2006/12/24(日) 09:11:25
今日休みで暇なんでVBでもはじめよっかなって思うんですけど、
どれを買ったらいいのやら。
最新版はどれなのでしょうか。
0751デフォルトの名無しさん2006/12/24(日) 09:20:46
最新版しか売ってないだろ
0752デフォルトの名無しさん2006/12/24(日) 09:22:01
VB6.0というのを購入すればよいのでしょうか。
0753デフォルトの名無しさん2006/12/24(日) 09:25:29
VB2005Expressをダウンロードしておけ。
VB6はMSDNサブスクリプションでないともう入手できないぞ。
0754デフォルトの名無しさん2006/12/24(日) 11:02:05
>>753
ありがとうございます。
ダウンロードのページを今開いたところです。
これって無料なんですね?
0755デフォルトの名無しさん2006/12/24(日) 11:20:17
VB6.0でシリアル通信をするプログラムを組んでいるんですが、
そこらに落ちてるシリアル通信サンプルプログラム(MsComm使用の)を使っても
データの採り方というか表示のさせ方?がハイパーターミナルと違います。
ハイパーターミナルと同じような挙動をするサンプルプログラムってありませんか?
0756デフォルトの名無しさん2006/12/24(日) 11:21:12
Visual Basicというもので初心者向きの講座で良いところがあれば教えていただけ
ませんか?
0757デフォルトの名無しさん2006/12/24(日) 11:21:55
ありませんかじゃなくて、自分で作れよ
0758デフォルトの名無しさん2006/12/24(日) 11:49:56
ハイパーターミナルそのまま使えば作る必要もない
07597352006/12/24(日) 12:52:32
色々意見有難う御座います。

>>745 さん
>っていうか、VBのコンボって最初から入力補完ついてると思うんだけど。 
いやー、ついてないような。。。

>>746 さん
I って入力するとItem00 と補完して欲しいのです。
VCのComboBoxやDelphiのTComboBoxは標準でこのような
動作をするようです。

もうちょっと探してみます。
0760デフォルトの名無しさん2006/12/24(日) 15:07:17
VB.NETならついてるんだがな
0761デフォルトの名無しさん2006/12/24(日) 18:01:07
質問です。
ネットワーク上のフォルダにあるexeファイルのバージョンを取得したいので、

GetFileVersionInfosize
GetFileVersionInfo
VerQueryValue

をやっていますが、
GetFileVersionInfosize
の時点で0がかえってきてしまい、取得できません。
同じPC内では取得できました。
ネットワーク上のファイルだとダメ、ということはありますか?
駄目な場合、他の取得方法はありますか?
0762デフォルトの名無しさん2006/12/24(日) 19:37:08
>>761
「ネットワーク上のフォルダにあるexe」をどういう形で参照してるのかも、
どんなコードでバージョンを取得してるのかも分からんのに、回答出来る筈がない。
07637612006/12/24(日) 19:44:41
解決しました。
>762
無理して回答しなくても大丈夫です。
ありがとうございました。
0764デフォルトの名無しさん2006/12/24(日) 21:23:37
>>753
このダウンロードって個人情報丸々入力しなきゃいけないんですね。
勤務先電話番号も入力必須項目になってるけど、なんか不安でダウンロードできないな。
別に問題ないかな?
0765デフォルトの名無しさん2006/12/24(日) 21:24:33
>>764
店で買えば?
■ このスレッドは過去ログ倉庫に格納されています