■83075 / inTopicNo.6) |
Re[5]: Excel読み込み時の月で取得していく方法 |
□投稿者/ 魔界の仮面弁士 (1158回)-(2017/03/03(Fri) 17:34:43)
|
■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 の強制終了でしょうか。 正規の手順で終わらせるようにした方がよいですよ。
|
|