|
こんにちは。かみちゃん です。
まとめて、こちらにコメントさせていただきます。
>>> 他のbookの場合開いていないとそのbookのデータは読み込めないのですか。
>>
>>基本的には、読めないと考えてください。
>>GetObject関数などで、できないことはないのですが、裏技みたいなことはで
>>きるのですが、まずは基本をしっかり知っていただくことが必要ではないかと
>>思います。
>>なお、画面遷移を制御することにより、開いているのを見せないようにするこ
>>とは可能です。
>↑これいいですね 教授ください。見えないということは
>閉じるときどうするんでしょ・・・
画面遷移を制御することにより、開いているのを見えないようにするだけです
ので、実際には、開いています。
開いているので閉じることもできます。
以下のコードを試してみてください。
Sub Sample3()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim strFileName As String
Set WB1 = ThisWorkbook
strFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
If strFileName <> "False" Then
'画面遷移を抑止する
Application.ScreenUpdating = False
Set WB2 = Workbooks.Open(strFileName)
WB1.Activate
'画面遷移を再開する
Application.ScreenUpdating = True
End If
MsgBox "現在開いているファイルは" & vbCrLf & _
WB1.FullName & vbCrLf & _
WB2.FullName
WB2.Close '指定したファイルを閉じる
End Sub
>ただ違うのはかみちゃんさんの言うListBox1に読込をしているところだけです
>ListBox1にテキスト.txtを読まない場合はコードがかわるのですか。
私の言うListBox1とは何でしょうか?
私は、ずっとListBox1を使う必要はないと申し上げてきています。
テキスト.txt全体を反映させるListBox1の存在の必要性もわかりませんし、
TestBox1に入力した検索値を条件として部分一致した値を反映させた、
ListBox2については、複数選択することはないということですので、
ComboBoxをお勧めしています。
そして、ComboBoxに値をAddする方法は、[46086]で提示しています。
これをテキスト.txtから条件の部分一致を反映させるのであれば、
If strREC Like "*" & Me.TextBox1.Value & "*" Then
Me.ComboBox1.AddItem strREC
End If
でできます。
全角・半角、大文字・小文字を統一させるなら、このIf文で
StrConv関数で変換させて比較すればいいのです。
>わかりました今回は元データの半角カタカナを全角に変更して
>利用することのします。
その必要はないのですが・・・
統一処理をするプログラム(StrConv関数で変換して比較する方法)を理解
すればいいと思います。
それがわからないなら、全角・半角、大文字・小文字を区別して検索条件を
指定するか、元データを修正するしかありません。
元データを修正することは、私も好ましくないと考えていますから、条件
指定を区別したらいかがですか?とコメントさせていただきました。
>ダイアログは開いたのですが既にbookが開いている状態では
>開く必要ありませんので
ファイルを開くときにすでに開いているブックをチェックして、開いていない
場合のみ、開く方法は、以下のような感じでできます。
Sub Sample4()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim strFileName As String
Set WB1 = ThisWorkbook
strFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
If strFileName <> "False" Then
Application.ScreenUpdating = False
'すでに開いているかどうかをチェックする
If Not ChkWorkbook(Mid(strFileName, InStrRev(strFileName, "\") + 1)) Then
MsgBox strFileName & vbCrLf & "を開きます"
Set WB2 = Workbooks.Open(strFileName)
Else
Set WB2 = Workbooks(Mid(strFileName, InStrRev(strFileName, "\") + 1))
End If
WB1.Activate
Application.ScreenUpdating = True
End If
MsgBox "現在開いているファイルは" & vbCrLf & _
WB1.FullName & vbCrLf & _
WB2.FullName
End Sub
Function ChkWorkbook(strWorkbookName As String) As Boolean
Dim wb As Workbook
ChkWorkbook = False
For Each wb In Workbooks
If wb.Name = strWorkbookName Then
ChkWorkbook = True
Exit For
End If
Next
End Function
|
|