2016-11-04 3 views
0

は、私は、ファイルからいくつかのプロパティを返すために、このコードを書いた:Object.Namespaceパスエラー

Dim strMTitle As String 
Dim objMshell As Object 
Dim objMfolder As Object 
Dim objMFolderItem As Object 
Dim strMpath As String 
strMpath = "C:\Users\User1\Desktop\Test4\" 

Set objMshell = CreateObject("shell.application") 
Set objMfolder = objMshell.Namespace(strMpath) 
Set objMFolderItem = objMfolder.ParseName("test2.xlsm") 

strMTitle = objMfolder.GetDetailsOf(objMFolderItem, 21) 

Debug.Print strMTitle 

問題は、それが実行時エラー91返し続けるということです - 設定されていないブロック変数でオブジェクト変数を。奇妙なことは、私がこのようなパスで "ハードコード" objMfolderのとき: Set objMfolder = objMshell.Namespace("C:\Users\User1\Desktop\Test4\")コードがperferctを動作させることです。 は、私は私のマクロの複数の場所で、このパスを使用するので、私は本当にstrMpathでの「ストア」、それを好きで、このようにそれを使用します。

Set objMfolder = objMshell.Namespace(strMpath) 

助けてください!

答えて

1

早期バインディングを使用する場合、コードは文字列変数で、次のようにShell32.Shellを使用すると動作しているようです。また、列引数21の.GetDetailsOfは何も返しませんが、0はファイル名を返します。


Option Explicit 
'Set Reference to Microsoft Shell Controls and Automation 

Sub dural() 
Dim strMTitle As String 
Dim objMshell As Shell32.Shell 
Dim objMfolder As Folder 
Dim objMFolderItem As FolderItem 
Dim strMpath As String 
strMpath = "C:\Users\Ron\Desktop\" 

Set objMshell = New Shell32.Shell 
Set objMfolder = objMshell.Namespace(strMpath) 
Set objMFolderItem = objMfolder.ParseName("20161104.csv") 

strMTitle = objMfolder.GetDetailsOf(objMFolderItem, 0) 

Debug.Print strMTitle 
End Sub 

+0

引数21を返す "タイトル" プロパティ。ありがとうRon – Pawel

+0

@Pawelああ、私がテストしていたファイルにコードがあなたのために働いている 'タイトル'喜びを持っていないと思う。 –

関連する問題