| 
          
            □投稿者/ 魔界の仮面弁士 (1158回)-(2017/03/03(Fri) 17:34:43)
              | ■83075 / inTopicNo.6) | Re[5]: Excel読み込み時の月で取得していく方法 |  
 
          
            
              
                |  | ■No83070 (ra さん) に返信 > \\server\shared\記録\2月.xlsx です
 今月のパスを動的生成するために
 Dim fullPath As String = "\\server\shared\記録\" & CStr(Month(Now)) & "月.xlsx"
 あるいは
 Dim fullPath As String = String.Format("\\server\shared\記録\{0:M}月.xlsx", Now)
 としておいたうえで、
 Dim oBook As Excel.Workbook = oBooks.Open(fullPath)
 という感じで書くことができます。
 
 
 > Book = ExcelApp.Workbooks.Open(\\server\shared\記録\2月.xlsx )
 「"」が無いと文法エラーになりますよ…。
 
 > newWorksheet = Book.Worksheets.Add
 > Book.Worksheets(1).Name = Now.Day
 
 「ExcelApp.Workbooks.Open」や「Book.Worksheets.Add」のように、
 「オブジェクト.プロパティ.メソッド」と、COM オブジェクトの
 多段呼び出しが行われていますが、それだとオブジェクト解放漏れの要因となりえるため
 好ましいコードではありません。(これが VBA なら問題無いのですが)
 
 掲示板への投稿の際に端折っているだけなのかもしれませんが、
 一応念のため、正しい手順を紹介しておきます。
 http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1149.aspx
 http://hanatyan.sakura.ne.jp/dotnet/Excel08.htm
 
 
 > FilePath = System.IO.Path.Combine(
 >    Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
 >    "\\server\shared\記録\2月.xlsx)
 「"」が一つ抜け落ちているのはさておき、上記の結合処理は無意味です。
 
 第二引数の先頭が \ で始まっているため、第一引数が無視され、
 FilePath = "\\server\shared\記録\2月.xlsx"
 と同じ意味にしかなりません。
 
 今回の場合、フォルダ名が固定で、ファイル名が変動するだけのようなので、
 Dim FilePath = System.IO.Path.Combine(
 "\\server\shared\記録",
 Today.ToString("M月") & ".xlsx")
 で良いと思います。
 
 
 もし、デスクトップ上の 2月.xlsx ファイルという意味なら、
 FilePath = System.IO.Path.Combine( _
 System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop), _
 "2月.xlsx")
 となりますし、上記の第二引数を、元の UNC パスから切り出して渡すなら
 FilePath = System.IO.Path.Combine( _
 System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop), _
 System.IO.Path.GetFileName("\\server\shared\記録\2月.xlsx"))
 です。
 
 
 > プロセスKill
 これって、Excel の強制終了でしょうか。
 正規の手順で終わらせるようにした方がよいですよ。
 
 |  |