[[20080626104422]] 『ネットワーク他のパソコンのファイルを開く』(まき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ネットワーク他のパソコンのファイルを開く』(まき)
Ver.:2003 OS:XP

今ネットワーク上に有るPCの保存フォルダーを開くマクロを作っており、記事番号

[[20050928163654]]を参考に下記の通り作成致しました。

Private Sub CommandButton4_Click()

   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set WShShell = CreateObject("WScript.Shell")
   FldPat = FSO.GetFolder("\\山田太郎\my documents\○○○○原簿").ShortPath
   WShShell.Run FldPat, 1, False
   Set FSO = Nothing
   Set WShShell = Nothing
End Sub

としたところ、”WShShell.Run FldPat, 1, False”が黄色になり前に進みません。

そこでネットワークフォルダーの、”FldPat”にマウスを合わせた所、

”FldPat="\\?QOP\my documents\○○~1"

となっていました。ネットワークPCの名前が漢字である事がいけないのでしょうか?

但し、他のコマンドで同フォルダーにある特定ファイルは開けます。

申し訳ございませんが、不具合点が分かりましたら、ご指導お願い致します。

以上よろしくお願い致します。


 回答のレベルではありません。
 野次馬根性だけで、お尋ねします。(全く知識はありません)m(__)m

 なぜ、ShortPathを取得するのでしょうか?
 単純に↓では、お話にならない「話」ですか?

 Private Sub CommandButton4_Click() 
    Set WShShell = CreateObject("WScript.Shell")
    FldPat = "\\山田太郎\my documents\○○○○原簿"
    WShShell.Run FldPat, 1, False
    Set WShShell = Nothing
 End Sub

 (半平太)

 半平太 様

 こんにちは、まきです。
 ご連絡頂きました通り書き直した所、”WShShell.Run FldPat, 1, False”で次の通り実行エラーとなりました。
 (HELPで調べたけれども、全然意味が分かりませんでした。また、”FldPat”にマウスを合わせた所、
 ちゃんと指定したネットワークフォルダー名が出ています。)

 '-2147024843(80070035)'):'RUN'メソッドは失敗しました。'IWshSell3'オブジェクト

 正直何がなんだか全然分かりません。ちなみに下記の記述だと、自分のフォルダー部は開く事が出来ます。(他のwebで見かけた物)

    Dim vntFileName As Variant
    vntFileName = _
        Application.GetOpenFilename( _
             FileFilter:="エクセルファイル(*.xls),*.xls" & _
                         ",CSVファイル(*.csv),*.csv" _
          , FilterIndex:=1 _
           , Title:="開けゴマ" _
           , MultiSelect:=False _
            )

 以上よろしくお願い致します。


 他人事だと思っていたらリンク先って、自分。
 これでも良いんじゃないですか?
 こっちの環境では、こんな感じでも動きます。(つながってれば)
 BJ

 Sub フォルダを開く()
   Dim OpFldPath As String, WshShell As Object
   Set WshShell = CreateObject("WScript.Shell")

   OpFldPath = "\\ABCD_Sv\d\myfolda"

   'WshShell.Run OpFldPath, 3, False '全画面で開く
   'WshShell.Run OpFldPath, 2, False '開いて縮小
   WshShell.Run OpFldPath, 1, False '普通に開く
                                    'Trueにするとエラー
   Set WshShell = Nothing
 End Sub

 ShortPathは、パスが長くなった時の \\ABCD\D\xxx~xxx を取得するため。

 追伸17:30
 >ネットワークPCの名前が漢字である事がいけないのでしょうか?
 の可能性が無いともいえません。
 漢字にしたことがないので。

 更に追加、
 >\\山田太郎\my documents\○○○○原簿
 ドライブ名は?


 開く前に、カレントディレクトリを移動させては、どうでしょうか。

 WshShell.CurrentDirectory = "\\山田太郎"

 原因は良く分かってませんし、意味も分からないですが
 カレントディレクトリは動くもののようです・・・?

 ですから、開く前に、強制的に移動させてみたら上手くいくかもしれません。
 どうでしょうか・・・。ダメもとでお試しください。

 (makirin)


makirinさん

まきです。

次の通り記述しました。

 Private Sub CommandButton4_Click() 
   Dim OpFldPath As String, WshShell As Object
   Set WshShell = CreateObject("WScript.Shell")
 WshShell.CurrentDirectory = "\\山田太郎"
   OpFldPath = "\\\山田太郎\my documents\○○○○原簿"
   'WshShell.Run OpFldPath, 3, False '全画面で開く
   'WshShell.Run OpFldPath, 2, False '開いて縮小
   WshShell.Run OpFldPath, 1, False '普通に開く
                                   'Trueにするとエラー
   Set WshShell = Nothing
 End Sub

すると、 '-2147024773(8007007b)':'CurrentDirectory'メソッドは失敗しました。'IWshSell3'オブジェクト

でエラーになりました。-2147024843(80070035)のエラーは、存在しないフォルダを指定するとエラーで

発生と見つけましたので、やはりネットワークパスに問題が有るのでしょうか?でも、直接ファイルを

開くVBAでは、同じフォルダーにあるファイルが開けるので??です。指定したフォルダーを開きたいだ

けなのですが。。。

またドライブはCなのですが、特にC¥を付けなくてもアクセスで同じPCのフォルダー違いは開けま

すので、何か有るのだと思うのですが。。。

以上よろしくお願い致します。


BJさん

まきです。

私も冒頭で申し上げましたが、漢字名とエクセルVBAの関係が良くないのでしょうか?

先ほども申し上げましたが、既にアクセスでも同PCをサーバー代わりに使っており、

PC名の変更が出来ません。明日に他のPCを使い(英文名なので)、確認を取ってみま

す。

以上よろしくお願い致します。


 開きたいファイルのディレクトリへ、も移動できないのかどうか
 試してみては?ダメかもしれませんが、何かの手がかりになるかも?

 WshShell.CurrentDirectory = "\\山田太郎\my documents"

 こんな事ぐらいしか言えなくてスイマセン。
 (makirin)


 >またドライブはCなのですが、特にC¥を付けなくてもアクセスで同じPCのフォルダー違いは開けま・・。
 アクセスのことは知りません。
 きちっとしたパスで試してください。
 BJ

こんにちは、まきです。

今朝から色々検証を行ってみました。昨日までXP HOME → XP HOME(PC日本語名)でしたので、

XP Pro → XP HOME(PC英文名)で行ってみましたが、昨日同様のエラーが生じました。

Workbooks.Open Filename:="\\山田太郎\my documents\○○○○原簿\○○.xls"だとどのPCからも開ける

ので、フォルダーを開くのに何か悪さをしているのでしょう??みなさんにも色々ご指導頂いて解決に至

りませんでしたので(私の技量不足)、エクスプローラーで開ける様に下記の通り書き直しました。

Shell "Explorer.exe \\山田太郎\my documents\○○○○原簿", 1
ActiveWindow.Close

上記の方法でも結果的には同じ事なので、納得は出来ないのですけど、本記述で運用する様に致します。

BJ様、makirin様、半平太様、 有り難うございました。


 原因がわかりません。
 こっちの環境では、
 こんな感じでも動きました。
 ネットウォークの事は良く解りません。
 すみませんでした。

 Sub testaaa()
    Set WShShell = CreateObject("WScript.Shell")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'FldPat = FSO.GetFolder("\\山田太郎\my documents\○○○○原簿").ShortPath
    FldPat = FSO.GetFolder("\\kikiki\shash\testaaaaaaaaa\testbbbbb").ShortPath
    WShShell.Run FldPat, 1, False
    Set WShShell = Nothing
    Set FSO = Nothing
 End Sub

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.