[リストへもどる]
一括表示

投稿時間:2003/10/29(Wed) 23:16
投稿者名:館山照夫
URL :
タイトル:
既存のExcelファイルにアクセスするには
1.VBを使い既存Excelファイルにアクセスしたい

2.動作環境  OS:windowsXP使用

3.現在の状況 管理項目 20項目のフォルダを作成し、各管理項目のフォルダーの中に、excelのユーザ毎のデータファイル       50社分を作成、excelで一覧表ファイルを作成し、そのシートに各管理項目とユーザ毎のマトリクスを作り、       各管理項目毎のユーザファイルにリンクを張ってデータ投入しております。
       リンクの数がものすごく多く、しかも処理動作が遅くスタックすることが多々あります。

4.VBを使って効率よく既設のExcelファイルにアクセスし、データ登録したい。

5.今回サンプル内容等参考にして作成した内容です。

Private Sub Command1_Click()
     On Error Resume Next
     Dim xlApp    As Excel.Application
     Dim xlBook   As Excel.Workbook
     Dim xlSheet As Excel.Worksheet
      Set xlApp =  CreateObject("Excel.Application")
      Set xlBook = xlApp.Workbooks.Open(Dir1.Path & "\" & File1)  'オープンするファイル名
     Set xlSheet = xlBook.Worksheets(1)
      xlApp.Visible = True    'Excelを表示  
     If Right(File1.Path, 1) = "\" Then
      Image1.Picture = LoadPicture(File1.Path & File1.FileName)
    Else
       Image1.Picture = LoadPicture(File1.Path & "\" & File1.FileName)
  End If  
End Sub

Private Sub Command2_Click()
       End         ’プログラムを終了
End Sub

Private Sub Dir1_Change()
      File1.Path = Dir1.Path  ‘dir1のフォルダを変更したときfile1へ反映させる  
End Sub

Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive  ‘Drive1での参照ドライブを変更したときDir1へ反映させる  
End Sub

Private Sub File1_Click()
      Image1.Stretch = True
      Dim file As String
      Dim myshape As Shape
        
End Sub

6.問題点 これでは、余計な「ドライブ」や「デレクトリ」を表示させております。
     選択に時間もかかります
     ・LIST Boxには、選択したい管理項目のみ表示
     ・FileListBoxには、選択した管理項目内のexcelファイルを全て表示させ
     ・選択したファイルを表示してデータメンテするには、どのように変更すればよろしいでしょうか。
     

投稿時間:2003/10/30(Thu) 00:47
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 既存のExcelファイルにアクセスするには
>       Image1.Picture = LoadPicture(File1.Path & File1.FileName)

        この部分は省略されているのなら問題ないのですが
     でなければ、ここのExcel&Word関係をよく読んで下さい。

> Private Sub Command2_Click()
>        End         ’プログラムを終了
> End Sub
 上記のようなEndを使った終了はしない方がいいですよ

> 6.問題点 これでは、余計な「ドライブ」や「デレクトリ」を表示させております。
ここの逆引きヘルプの ファイルシステムコントロール(ドライブ・リスト・他)の連動 を
見て下さい。

投稿時間:2003/10/30(Thu) 08:59
投稿者名:館山照夫
URL :
タイトル:
Re^2: 既存のExcelファイルにアクセスするには
早速のご指導ありがとうございます。
逆引きヘルプを参照させて頂き、修正したいと思います。

投稿時間:2003/11/03(Mon) 04:25
投稿者名:館山照夫
URL :
タイトル:
Re^3: 既存のExcelファイルにアクセスするには
> > >       Image1.Picture = LoadPicture(File1.Path & File1.FileName)
> >
> >         この部分は省略されているのなら問題ないのですが
> >      でなければ、ここのExcel&Word関係をよく読んで下さい。
> >
> > > Private Sub Command2_Click()
> > >        End         ’プログラムを終了
> > > End Sub
> >  上記のようなEndを使った終了はしない方がいいですよ
> >



> > > 6.問題点 これでは、余計な「ドライブ」や「デレクトリ」を表示させております。
> > ここの逆引きヘルプの ファイルシステムコントロール(ドライブ・リスト・他)の連動 を
> > 見て下さい。
>
> 早速のご指導ありがとうございます。
> 逆引きヘルプを参照させて頂き、修正したいと思います。

1・逆引きヘルプを参考に、構成を作りかえてみましたが
 代表のフォルダー内のサブフィオルダーの表示及びサブフォルダー内の
 Excelファイルは表示できたのですが、選択したファイルを開こうとすると
 何もも表示しません。
 エラー表示もしません。どこの部分がおかしいのでしょうか?

2・ File list boxのデフォルト表示を空白に設定はできないのでしょうか?


Private Sub Command1_Click()
    
    Dim Fso As New FileSystemObject
    With List1
        .Clear
        .Visible = False
    End With
    Call sFolderSearch(Fso.GetFolder("C:\WINDOWS\デスクトップ\顧客管理"))
    List1.Visible = True
End Sub

Private Sub sFolderSearch(ByRef myFolder As Folder)

    Dim mySubFolder As Folder
    With myFolder
        If .SubFolders.Count > 0 Then
            For Each mySubFolder In .SubFolders
                 List1.AddItem mySubFolder
                 Call sFolderSearch(mySubFolder)
            Next
        End If
    End With

End Sub

Private Sub Command2_Click()
    
     If MsgBox("終了しますか?", vbQuestion + vbYesNo, "終了") = vbNo Then
    
       text2.SetFocus
      
    Else
    
       End
      
   End If

End Sub


Private Sub Command3_Click()
   On Error Resume Next
    
    Dim xlApp    As Excel.Application
    
    Dim xlBook   As Excel.Workbook
  
    Dim xlSheet As Excel.Worksheet
    
    Set xlApp = CreateObject("Excel.Application")
    
    Set xlBook = xlApp.Workbooks.Open(List1 & "\" & File1.Path)     'オープンするファイル名
    
    Set xlSheet = xlBook.Worksheets(1)
    
    xlApp.Visible = True    'Excelを表示

    
    If Right(File1.Path, 1) = "\" Then
    
      Image1.Picture = LoadPicture(File1.Path & File1.FileName)
      
     Else
    
      Image1.Picture = LoadPicture(File1.Path & "\" & File1.FileName)
      
    End If

End Sub

Private Sub File1_Click()
    
    Image1.Stretch = True
    
    Dim file As String
    
    Dim myshape As Shape
    
End Sub

Private Sub List1_Click()
    
  File1.Path = List1  
    
End Sub

投稿時間:2003/11/03(Mon) 11:08
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: 既存のExcelファイルにアクセスするには
今までのコードは破棄して、下記のコードをペーストして下さい。
それで動作を確認後に変更するなり、削除するなりして下さい。
(前回の回答で指摘している部分が改善されていないので)

Option Explicit
Private Sub Command1_Click()
    Dim Fso As New FileSystemObject
    With List1
        .Clear
        .Visible = False
    End With
    Call sFolderSearch(Fso.GetFolder("C:\WINDOWS\デスクトップ\顧客管理"))
    '自フォルダーを含める場合
    List1.AddItem "C:\Documents and Settings\YPCS_NO1\My Documents"
    List1.Visible = True
End Sub
Private Sub sFolderSearch(ByRef myFolder As Folder)
    Dim mySubFolder As Folder
    With myFolder
        If .SubFolders.Count > 0 Then
            For Each mySubFolder In .SubFolders
                 List1.AddItem mySubFolder
                 Call sFolderSearch(mySubFolder)
            Next
        End If
    End With
End Sub
Private Sub Command2_Click()
    If MsgBox("終了しますか?", vbQuestion + vbYesNo, "終了") = vbNo Then
        text2.SetFocus
    Else
        Unload Me
    End If
End Sub
Private Sub Command3_Click()
'思い通りの操作ができるまで下記のエラー処理は実行しない事
'    On Error Resume Next
    Dim xlApp      As Excel.Application
    Dim xlBook     As Excel.Workbook
    Dim xlSheet    As Excel.Worksheet
    Dim xlFileName As String
    xlFileName = List1 & "\" & File1.FileName
    'ファイルが見つからない場合
    If Len(Dir$(xlFileName)) = 0 Then Exit Sub
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open(xlFileName)
    Set xlSheet = xlBook.Worksheets(1)

    xlApp.Visible = True
  
   '終了処理
   ' xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub
Private Sub Form_Load()
    '存在しない拡張子を指定
    File1.Pattern = "abcde"
End Sub
Private Sub List1_Click()
    '表示したいファイルの拡張子を指定
    File1.Pattern = "*.XLS;*.CSV"
    File1.Path = List1
End Sub

投稿時間:2003/11/03(Mon) 13:13
投稿者名:館山照夫
URL :
タイトル:
Re^5: 既存のExcelファイルにアクセスするには
ご指導ありがとうございます。
早速、ご教授いただいたコードで作りなおしてみたいと思います。

投稿時間:2003/11/06(Thu) 08:44
投稿者名:館山照夫
URL :
タイトル:
Re^3: 既存のExcelファイルにアクセスするには
> > >       Image1.Picture = LoadPicture(File1.Path & File1.FileName)
> >
> >         この部分は省略されているのなら問題ないのですが
> >      でなければ、ここのExcel&Word関係をよく読んで下さい。
> >
> > > Private Sub Command2_Click()
> > >        End         ’プログラムを終了
> > > End Sub
> >  上記のようなEndを使った終了はしない方がいいですよ
> >
> > > 6.問題点 これでは、余計な「ドライブ」や「デレクトリ」を表示させております。
> > ここの逆引きヘルプの ファイルシステムコントロール(ドライブ・リスト・他)の連動 を
> > 見て下さい。
>
> 早速のご指導ありがとうございます。
> 逆引きヘルプを参照させて頂き、修正したいと思います。

先生方のご指導により、何とかExcelファイルにアクセスできるように
なりました。
試に、今回の作成した(殆ど先生方に作成して頂いたも同じくらい)
VBから、ネットワークのサーバーの顧客データにアクセスしてみましたが
アクセスでき、Excelファイルをメンテできました。
有難うございました。