[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 06/03 14:56 / Filesize : 85 KB / Number-of Response : 296
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 17:33:37 ]
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

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

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

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

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

※「まず自分で調べる」クセを身につけよう。

236 名前:231 mailto:sage [2007/06/17(日) 12:39:24 ]
>>235
こんな感じ

'---- クラスモジュール CInputOrderValidator ----
Private mInputCount As Integer
Private mValidInputOrder() As eInput
Private mInivalidInputEntered As Boolean
Public Event ValidationFinished(result As eValidationResult)

Public Enum eState
  Initial = 0
  DuringInput = 1
  ValidationFinished = 2
End Enum

Public Enum eInput
  Button1 = 1
  Button2 = 2
  Button3 = 3
End Enum

Public Enum eValidationResult
  Indeterminate = 0
  Invalid = 1
  Valid = 2
End Enum

Private Sub Class_Initialize()
  mValidInputOrder = GetDefaultValidInputOrder()
  Me.Reset
End Sub

237 名前:231 mailto:sage [2007/06/17(日) 12:40:54 ]
Private Function GetDefaultValidInputOrder() As eInput()
  Dim vValids() As Variant
  vValids = Array(eInput.Button1, eInput.Button2, eInput.Button3)
  Dim valids() As eInput
  Dim i As Integer
  Dim lastIdx As Integer
  lastIdx = UBound(vValids)
  ReDim valids(lastIdx)
  For i = 0 To lastIdx
    valids(i) = vValids(i)
  Next
  GetDefaultValidInputOrder = valids
End Function

Public Sub Reset()
  mInputCount = 0
  mInivalidInputEntered = False
End Sub

Public Property Get State() As eState
  If mInputCount = 0 Then
    State = Initial
  ElseIf mInputCount >= Me.ValidInputLength Then
    State = ValidationFinished
  Else
    State = DuringInput
  End If
End Property

238 名前:231 mailto:sage [2007/06/17(日) 12:42:08 ]
Public Property Get ValidInputLength() As Integer
    ValidInputLength = UBound(mValidInputOrder) + 1
End Property

Public Property Get ValidationResult() As eValidationResult
  If Me.State = ValidationFinished Then
    If mInivalidInputEntered Then
      ValidationResult = Invalid
    Else
      ValidationResult = Valid
    End If
  Else
    ValidationResult = Indeterminate
  End If
End Property

Public Sub SetNextInput(nextInput As eInput)
  If Me.State = ValidationFinished Then
    Exit Sub
  End If
  If mValidInputOrder(mInputCount) <> nextInput Then
    mInivalidInputEntered = True
  End If
  mInputCount = mInputCount + 1
  If Me.State = ValidationFinished Then
    RaiseEvent ValidationFinished(Me.ValidationResult)
  End If
End Sub

239 名前:231 mailto:sage [2007/06/17(日) 12:43:38 ]
'---- Form1 ----
Private WithEvents mValidator As CInputOrderValidator

Private Sub Form_Load()
Set mValidator = New CInputOrderValidator
End Sub

Private Sub Command1_Click()
  mValidator.SetNextInput (Button1)
End Sub

Private Sub Command2_Click()
  mValidator.SetNextInput (Button2)
End Sub

Private Sub Command3_Click()
  mValidator.SetNextInput (Button3)
End Sub

Private Sub mValidator_ValidationFinished(result As eValidationResult)
  If result = Valid Then
    MsgBox ("OK !")
  Else
    MsgBox ("NG !")
  End If
  mValidator.Reset
End Sub

240 名前:222 [2007/06/17(日) 14:30:34 ]
ありがとうございます
まだコードを実行してないんですが、これを実行する場合って
Buttonのフォームが必要ですよね?
本を見た感じだと画面左のコマンドやらラベルやらを引っ張ってくる場所から
ボタンも引っ張ってこれるようになってるっぽいんですが、自分のVB6.0には
入ってないっぽいんですよね・・・画面色々いじくって表示させられないか試したりもしたんですが・・・
あとこれを実行して上手く自分の目的の機能を実現するためには、コマンドやボタン
以外にもフォーム上に引っ張ってくるべきアイテムはありますか?

241 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:39:51 ]
>>240
必要な操作は、

(1) プロジェクトにクラスモジュールを追加して、プロパティグリッドで名前を"CInputOrderValidator"
  に変更して>>236以降のコードを貼り付ける。

(2) Form1にコマンドボタンを三つ(Command1、Command2、Command3)貼り付けて
  >>239のコードを貼り付ける。

これだけだよ。

242 名前:デフォルトの名無しさん [2007/06/17(日) 19:04:45 ]
>>235
まさかとは思うが、
DoNextProc
これもコードとしてそのまま書いたのか?

243 名前:デフォルトの名無しさん [2007/06/17(日) 23:04:21 ]
>>242
そのまま書いていました・・・

>>241
実行できましたありがとうございます
この場合だとコマンド1、2、3の順で押された場合はAの処理
他の順で押される5通りの場合はBの処理が行われるといった感じになっていて
これを全てバラバラに考えて(例えば、2、1,3の順で押されたらCの処理)
といったようにしたいと思ってクラスモジュール内でこの機能を実現するために
関係してきそうな部分を探して考えてみたんですがいまいちどこをいじればいいかが分かりません・・・
何度も申し訳ありませんが、これに関してアドバイスいただけると助かります
よろしくお願いします

244 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 09:09:47 ]
>>243
一連の流れを眺めてみたけどさ、もっと本質を理解したほうが良いと思うよ
VB6以前なら強力なデバッグ実行機能もあるんだしさ

・暗記すべき部分はきっちり暗記汁(VBの予約語等
・エラーが出たら、メッセージ良く嫁
・デバッグ実行でどんな処理がどこで行われているか調べるべし
・コードの全体をイメージ出来るまでひたすら読んだり書いたりデバッグ実行したり汁
・つーか、ちっとは自分で考えろw



245 名前:デフォルトの名無しさん [2007/06/18(月) 17:16:16 ]
>>243
Select Caseも知らんのか。

あと>>242で言ってるのは要約すると、
サンプルとして挙げられたソースに記述してあるコメントくらい普通に理解しろってことなんだが…

分かるか?

246 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 19:56:33 ]
ここ1,2週間で聞いてきてるやつは全部同一人物っぽいな・・・

247 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 19:59:25 ]
終わった言語をいまさらスタートする奴なんてそんなにいないしな

248 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:03:55 ]
勝手に終わってろカオス

249 名前:デブオ [2007/06/19(火) 16:58:10 ]
すみません。VB(6.0)で指定されたURLにファイルをPOSTする。
又、指定されたURLからファイルをダウンロードすことってできますか?
できるとすればどのようにすればいいのでしょうか?
どなたか教えてください。

250 名前:デフォルトの名無しさん [2007/06/19(火) 17:00:28 ]
>>249
WEBBROWSERコントロールでも使ってろよw

251 名前:デブオ [2007/06/19(火) 17:16:19 ]
WEBBROWSERコントロールというのは標準で入っていないようなのですが?
MSWebDVDコントロールのことでしょうか?

252 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 17:24:11 ]
マジレスすると
メニュー>プロジェクト>コンポーネント>コントロールで
該当するやつのチェック外せばいいよ
どのコントロールかぐらいは自分で調べろ

253 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 17:33:11 ]
×チェック外せば
○チェック入れれば

254 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 19:06:09 ]
VB6のWebBrowserコントロールは
ビスタでも問題なく使えますか?



255 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 21:20:25 ]
使えるかどうか自分で試して
それをここに報告すれば良いのでは

256 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 00:49:42 ]
VBって遅いよな

257 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 01:37:24 ]
Cって速いよな
でもC++って劇遅だよな

258 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 02:09:20 ]
>>256-257
つまんねえ釣りはVIPでやれ

259 名前:デフォルトの名無しさん [2007/06/20(水) 15:30:14 ]
FlexGridの行選択についての質問です

FormLoadに
flexGrid.SelectionMode = flexSelectionByRow
をいれることにより行選択は可能になりますが、

範囲指定を不可能にする方法はありますか?

また選択している行の位置を求める方法はどうするのでしょうか?

260 名前:デフォルトの名無しさん [2007/06/20(水) 23:19:49 ]
レジストリのキー値(ツリーの枝の部分)の取得方法をご教授ください。

例)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-19
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20

のS-1-5-18、S-1-5-19、S-1-5-20を検索して取得したい。


以上宜しくお願い致します。


261 名前:デフォルトの名無しさん [2007/06/21(木) 09:26:00 ]
>>259
範囲選択を不可能にする方法はある

行に値を調べる方法は
Rowプロパ


262 名前:261 [2007/06/21(木) 09:26:52 ]
誤植

行の位置を調べる方法は
Rowプロパティのヘルプを見てみないか?



263 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 14:41:36 ]
まずアプリケーションウィザードを使って適当なプロジェクトを作る。
そのときバージョン情報ダイアログを組み込むように指定する。
そのフォームの「システム情報」ボタンがレジストリにアクセスしてるから
そこをパクる。
簡単な取得だけならこれで済むと思います。
このコードは、レジストリに読み書き権限でアクセスするので、guestとか制限ユーザーだと
エラーになるかもしれません。APIビューアからKEY_READを探してきて、
読み取り専用権限に直しておいてください。


264 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 15:36:44 ]
>>263>>261です。悪かったな。




265 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 15:39:02 ]
すいません>>263>>260へのレスです。たびたびごめんなさい。

266 名前:デフォルトの名無しさん [2007/06/21(木) 16:29:07 ]
イ〜ンダヨ〜

267 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 16:50:01 ]
ブル〜ダヨ〜

268 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 08:29:21 ]
Visual Basic 5.0でActiveXコントロールを作成し、セットアップウィザードを利用して
インターネットで配布するファイルを生成しましたが、
サーバに配置してアクセスしてもインストールが開始されず、
左上に×マークがでるだけの状態です。
どうすれば正常にインストールされるようになるのでしょうか?
なお、配布ファイルには署名をしており、ブラウザはIE6で、
ActiveX関係の設定は有効にしています。

269 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:30:11 ]
コンポーネントShockwave Flashで外部から読み込んだSWFファイルの右クリックメニューを完全に消す方法を教えて下さい

270 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 10:36:03 ]
>>268
ディストリビューションウィザードのこと?
サーバ上に配置したファイル名を全て挙げてみ?
それとVB関係無いがファイルのアクセス権限はどうなってる?

>>269
なにそのVBのVの字も出てこない素敵Questionはwwww
Flashについてはよく知らないが、ひょっとしてJavaScriptの話じゃね?
スレチにも程があるよ?

271 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 14:17:00 ]
上から質問に答えると
・6.0でディストリビューションウィザードといわれるものが5.0でのセットアップウィザードのようです。
・CABとHTMファイルです。
・読み、書き、実行権限を全員にすべて与えている状態です。

272 名前:デフォルトの名無しさん [2007/06/25(月) 15:05:43 ]
>>271
CABは圧縮ファイルであって、インストーラではないのだが。

273 名前:デフォルトの名無しさん [2007/06/25(月) 15:08:21 ]
>>271
ウィザードで作られるファイルは3つあるはず。
CABしかあげてないから駄目なんじゃね?
Setup.exeともう一つなんかあったような

274 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:15:51 ]
>>273
SETUP.LST



275 名前:268 mailto:sage [2007/06/25(月) 17:32:31 ]
セットアップウィザードで作成されたファイルは
CAB・HTMファイルと、SUPPORTフォルダ(中にOCX・DDF・INFファイル)でした。
Setup.exeやSETUP.LSTといったファイルは見つけることができませんでした。


276 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 05:31:24 ]
VBはよく知らないC使いなのですが、
VBで作られたEXEファイルは完全な機械語のファイルなのでしょうか?
それとも中間言語が入っているのでしょうか?

277 名前:デフォルトの名無しさん [2007/06/26(火) 08:05:21 ]
>>276
Pコードのオプションつければ中間もつくれる

278 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:33:00 ]
>>276
コンパイルするとC2.EXE と LINK.EXEが裏で動いている。

279 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:02:51 ]
みな様お世話様です。
VBScript(WSH)をかじり始めたものです。

作成したCVSファイルに1行追加したいのです。

Set objText = objFile.OpenAsTextStream(8,0)
objText.WriteLine("搬入年月日,Xコード,工場コード,得意先コード〜他")

(8,0)で8が追加モードとのことですが挿入ってのはないんでしょうか?
最終行ではなく一行目にWritelineの内容を挿入したいのです。

何かヒントいただければ幸いです。

280 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:03:16 ]
VB6なんですが、
WebBrowserを利用してどこかのサイトを読み込ませて、読み込み完了まで待機するという処理で、
実行エラー -2(fffffffe) オートメーションエラーが発生してしまいます。
以下、例
WebBrowser2.Navigate "www.yahoo.co.jp/"
DoEvents
Do While WebBrowser2.Busy = True
⇒ DoEvents 'ここで発生
Loop
Do While WebBrowser2.Document.ReadyState <> "complete"
DoEvents
Loop

処理自体がいけないのでしょうか?
DoEventsの使用方法がおかしいのでしょうか?

281 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:30:18 ]
>>279
案1
 既存のファイルを全部読む
 先頭に連結して保存
案2
 バッチ

282 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:11:48 ]
>>266-267
どうでもいいけどあのCMの曲って全員集合のアレンジなんだよね。

283 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:13:28 ]
あと>>279につっこませてくれ。それを言うならCSVです、と。

284 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:18:50 ]
>>276
>>277
メニューのプロジェクト→プロジェクトのプロパティ
「コンパイル」タブの話です。




285 名前:279 mailto:sage [2007/06/27(水) 11:21:18 ]
>>281
どうもです。
案1の場合、既存のCSVをInputにして1行ごとにOut。。
その時にヘッダー、、項目行と結合って事でしょうか?


>>283
( ̄□ ̄;)!! あっ

286 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 12:14:14 ]
VBScriptでCVS作ったらまさに神だな・・・
いつ落ちるか怖くて使いたくないがw

287 名前:デフォルトの名無しさん [2007/06/27(水) 13:15:23 ]
>>285
横レスだが
別にStreamだし一気に読みこんでそこにくっつけるんでいいんじゃないの?


288 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 13:55:51 ]
他のアプリケーションでオープン中のファイルを直接編集・更新かける方法は
御座いませんでしょうか?


289 名前:279 mailto:sage [2007/06/27(水) 14:27:03 ]
>>287
objRead.AtendOfStream 〜 こういうやつ?
InsertLine なんてもあったとは知らなかった、、、
なんとなくどうすればいいか見えてきた気がします。

みんなヒントサンクスです。もうちょい頭ひねってみます




でも。。。(´・ω・`)突っ込みあってから元気でないよー

290 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 14:42:16 ]
>>288
「他のアプリケーション」はオープンしてるファイルを
横から書き換えられて誤動作しないの?

291 名前:279 mailto:sage [2007/06/27(水) 15:18:43 ]
Set objRead = objFso.OpenTextFile(読込CSVの保存パス , ForReading)
objRead.ReadAll
intLine = objRead.Line

まずこんなんやってみました。
ここから行数わりだして、その値をとりあえず「x」として
その「x」が1行目をさす所に"InsertLine〜"を考えています。

たぶんいろんなやり方あるんだろうけど、ここからやっていきます。
また詰まったら指導お願いすると思うのでよろしくです。

292 名前:デフォルトの名無しさん [2007/06/27(水) 15:29:17 ]
>>279
のような行動が当たり前なんだろうけど、このスレではものすごい優秀な行動に見えて困るw

293 名前:デフォルトの名無しさん [2007/06/27(水) 23:01:08 ]
tempというエクセルファイル(マクロを実行するファイル)と同じ階層に
財務****.xls(*は日付)というファイルが複数あって、
財務ファイルのセルA1とA10の値をtempにリスト化させるにはどうしたらいいのでしょう?
財務ファイルを一つずつ開けてたらきりがないので一気に処理できたらと思うのですが・・・。
できれば、
財務ファイル名、A1、A10
が横に並んでて、縦にファイル全ての値がリスト化できるようにしたいのですが、どなたかご存じないですか?

294 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:56:51 ]
・フォルダ内の全てのファイル名を順に得るようなコードを書いてみる
・任意のエクセルファイルを開いてA1〜A10を読むコードを書いてみる
・二つをくっつける。ファイル名が自身と同じなら読まない。開くたびに一行ずらす。

って、VBAはスレ違いじゃなかったっけか。



295 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 04:42:41 ]
> ここから行数わりだして、その値をとりあえず「x」として
> その「x」が1行目をさす所に"InsertLine〜"を考えています。
何言ってるかわからんのだけど誰かわかるの居る?
>>279の目的で行数調べる必要どこにあるんだ?

>>292







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<85KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef