リストボックスの値と同名のファイルをさがすには?


おたすけー。。。  2007-02-03 01:11:44  No: 97850

リストボックスにだされた値を選択し、コマンドボタンを押すと、そのリストボックスの選択された値と同じファイル名のファイルを開きたいのですが、何かいい方法はありませんか?


大吉末吉  2007-02-03 01:19:05  No: 97851

> 何かいい方法はありませんか?
「いい方法」って事は、何が問題点(良くしたい点)があるんですよね?

とりあえず、「貴方が実際にやった方法」を提示した上で、
「問題点(良くしたい点)」を提示してください。


そがっち  2007-02-03 02:38:21  No: 97852

ListBoxにファイル名が入っている、って事ですか?
何にせよ、開発環境によって答えが変わってくると思うので、
その辺は書いた方がいいですよ。


そがっち  2007-02-04 00:10:17  No: 97853

うーん動きが無いなぁ……萎縮しちゃった?
「いい方法」と言うより「方法が思いつかない」と言った方がいい状況かもしれないですし、
何はともあれOS、言語(VBのバージョン)と、現在の状況(根本的にわからないのか、
とりあえずやってみたけど うまくいかない or シックリこない、思い通りに動かせない、等)を
書いてみたらどうでしょう?
「一応やってみた」なら、ソースコードのうち、問題となるプロシージャも
貼り付ける方がいいかも。
質問がハッキリしないと答える側も基本的に答えられないので。
(但し、少なくとも私が100%答えるという保証はできませんが)


おたすけー。。。  2007-02-06 23:14:07  No: 97854

vb6.0でまずある多数のファイル名が入っているcsvファイルから欲しいファイル名をリストボックスに出し、リストボックスにでたファイル名を選択して、コマンドボタンを押すと、そのファイルが開けれるプログラムを作りたいのですが。どうすればいいのかわからないので助けてください。

    ' 読み込むCSVファイル名
    strFileName = "D:\files\" & _
                  "katee\" & _
                  "katefile\" & _
                  "kateelist.csv"
   ' ファイルシステムオブジェクトへの参照
    Set objFileSystem = CreateObject("Scripting.FileSystemObject")
    ' ファイルを開く
    Set objFile = objFileSystem.OpenTextFile(strFileName)
    ' ファイルの最後に達するまでループ
    Do Until objFile.AtEndOfStream
           
        strRecBuff = Split(objFile.ReadLine, ",")
        
        For intCounter = 0 To UBound(strRecBuff)
         If strValue = strRecBuff(intCounter) Then
          
         
         
          lstResult.AddItem strRecBuff(1)

         End If
End Sub
Private Sub Command1_Click()
          
ここからどうリストボックスの選択された値と同名のファイルを開くのかまったくわかりません。どうか素人なのでよろしくお願いします。


そがっち  2007-02-07 00:19:55  No: 97855

取得するファイル名の、ファイルの種別が一定で、常に同じアプリケーションで開くのなら、
Shell 関数を調べてみてください。
それで済むのなら、一番手っ取り早いです。
ファイルの種別が不定の場合、ShellExecute APIを使うことになるかと思います。
(拡張子に関連付けられたアプリケーションで開く)
簡単な例を。

<Module1.bas>
Option Explicit

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
         ByVal lpParameters As String, ByVal lpDirectory As String, _
         ByVal nShowCmd As Long) As Long

<Form1.frm - CommandButtonを1つだけ貼り付けてください>
Option Explicit

Private Sub Command1_Click()
    Dim ret As Long
    ret = ShellExecute(Me.hwnd, "open", "C:\boot.ini", "", "", 5)
    If ret < 32 Then
        MsgBox "起動に失敗しました。" & vbCrLf & "エラー値 = " & ret
    End If
End Sub

念のため、boot.iniは下手に編集するとOSが起動しなくなるので、編集しないよう。

たぶんAPIの使い方は慣れていないのではないかと思うんですが、VB6を使い込んでいく上では
必須のスキルとなります。頑張りましょう。
今回のShellExecuteについては、以下の辺りを参照してみてください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpshell/html/_win32_shellexecute.asp
http://www.winapi-database.com/Program/Shell/ShellExecute.html
ネット上で うまく情報を検索するのも、覚えていく上で重要なスキルですので
その辺も慣れていくのがいいと思います。
ちなみに、私もShellExecuteは今まで使う状況が発生しなかったのですが、今回
片手間に調べてみました(汗)


そがっち  2007-02-07 00:27:40  No: 97856

あ、もしも「ListBox中の文字列を参照する方法がわからない」のであれば……
頑張ってヘルプで探してみてください。
ListBoxが持っているプロパティの説明を1つ1つ確認してみてください。
そのぐらいは調べられないと、覚えられませんよ。
その上で、どうしても判らなければ、また質問してもらっても いいとは思いますが……


おたすけー。。。  2007-02-07 19:46:04  No: 97857

ありがとうございます。今からがんばってみます。もしどうしてもわからない時は、また質問させてもらいます。本当にありがとうございました。


おたすけー。。。  2007-02-08 22:46:57  No: 97858

何回もすみません。自分なりにやってみたんですがうごいてくれませんでした。ファイルは開けるようになったのですが、リストボックスの選択された値を変数に置いてその変数でファイルを開こうとすると開けないのですが、どうすればいいのでしょうか??  
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" _
   (ByVal hwnd As Long, _
    ByVal lpVerb As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Const SW_SHOWNORMAL = 1

Private Sub Command1_Click()
  Dim lngReturnCode As Long
  Dim strFileName   As String
  Dim i As String
  
   i = lstResult.Text
   
    ' ファイル名
    strFileName = "D:\files\" & _
                  "katee\" & _
                  "katefile\" & _
                  "i"
                  
    
    lngReturnCode = ShellExecute(Me.hwnd, _
                                 "open", _
                                 strFileName, _
                                 vbNullString, _
                                 App.Path, _
                                 SW_SHOWNORMAL)
End Sub


大吉末吉  2007-02-08 23:14:26  No: 97859

おしい。

strFileName にどういう文字列が入っているか、デバッグで確かめてみてください。
#ブレイクポイントや、ウォッチ式等。

> "i"
では、「『i』と言う文字」の意味になって、「『変数i』の内容」の意味にはなりませんよ。

>     strFileName = "D:\files\" & _
>                   "katee\" & _
>                   "katefile\" & _
>                   i
こうすればどうでしょう?


おたすけー・・・。  2007-02-08 23:28:07  No: 97860

やってみましたがエラー値=2とでてしまいました。どこがまちがっているんでしょうか?本当に何回もすみません・・・。

Private Sub Command1_Click()
  Dim lngReturnCode As Long
  Dim strFileName   As String
  Dim i As String
  
   i = lstResult.Text
   
    ' ファイル名
    strFileName = "D:\files\" & _
                  "katee\" & _
                  "katefile\" & _
                  i
                  
    ' 関連付けられたアプリケーションを開く
    lngReturnCode = ShellExecute(Me.hwnd, _
                                 "open", _
                                 strFileName, _
                                 vbNullString, _
                                 App.Path, _
                                 SW_SHOWNORMAL)
     If lngReturnCode < 32 Then
        MsgBox "起動に失敗しました。" & vbCrLf & "エラー値 = " & lngReturnCode
     End If
                            
                                 
                                 
End Sub


大吉末吉  2007-02-09 00:27:17  No: 97861

先ほども言いましたが・・・
> strFileName にどういう文字列が入っているか、デバッグで確かめてみてください。
> #ブレイクポイントや、ウォッチ式等。
は、やってますか?

実際に、どういう文字列だったのか、提示してください。

また、リストで選択した文字列は、具体的に、なんという文字列でしょうか?
こちらも、提示してください。


おたすけー・・・。  2007-02-09 21:06:32  No: 97862

初めてウォッチ式を使ったので間違っているかもしれませんが、はじめのiにはリストボックスにでた”鈴木みゆき”というファイル名が値に入っているのですが、strFileNameには””だけで何もでてきませんでした。

Watch :   :     i : "鈴木みゆき" : String : frmMain.Command1_Click
Watch :   :     strFileName : "" : String : frmMain.Command1_Click

お願いします・・・。


大吉末吉  2007-02-09 22:00:10  No: 97863

> Watch :   :     i : "鈴木みゆき" : String : frmMain.Command1_Click

"鈴木みゆき"って・・・本当に「ファイル名」だけなんですか?
拡張子(「.txt」とか「.gif」とか)は無いんですか?

根本的に、拡張子が無いと、ファイルは特定できませんよ。
#つまり、開けません。

> strFileNameには””だけで何もでてきませんでした
どのタイミングでウォッチしましたか?
>     strFileName = "D:\files\" & _
>                   "katee\" & _
>                   "katefile\" & _
>                   i
を実行した後(つまり「lngReturnCode = ShellExecute(Me.hwnd, _〜」)まで
プログラムが進まないと、strFileNameには値は入りません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加