Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4702 / 13646 ツリー ←次へ | 前へ→

【54811】マイドキュメント以外でのファイルの読み書きこみ TEST 08/3/31(月) 11:28 質問[未読]
【54812】Re:マイドキュメント以外でのファイルの読... Jaka 08/3/31(月) 12:37 発言[未読]
【54818】Re:マイドキュメント以外でのファイルの読... VBWASURETA 08/3/31(月) 15:18 発言[未読]
【54901】Re:マイドキュメント以外でのファイルの読... TEST 08/4/3(木) 16:11 お礼[未読]
【54899】Re:マイドキュメント以外でのファイルの読... TEST 08/4/3(木) 16:01 お礼[未読]
【54913】Re:マイドキュメント以外でのファイルの読... VBWASURETA 08/4/3(木) 18:39 発言[未読]
【54938】Re:マイドキュメント以外でのファイルの読... TEST 08/4/4(金) 19:38 お礼[未読]
【54942】Re:マイドキュメント以外でのファイルの読... VBWASURETA 08/4/5(土) 14:14 質問[未読]
【54991】Re:マイドキュメント以外でのファイルの読... TEST 08/4/9(水) 17:51 お礼[未読]
【54994】Re:マイドキュメント以外でのファイルの読... Jaka 08/4/10(木) 9:34 発言[未読]
【54996】Re:マイドキュメント以外でのファイルの読... TEST 08/4/10(木) 12:03 お礼[未読]
【54997】Re:マイドキュメント以外でのファイルの読... Jaka 08/4/10(木) 13:20 発言[未読]
【54998】Re:マイドキュメント以外でのファイルの読... TEST 08/4/10(木) 18:39 お礼[未読]
【54999】Re:マイドキュメント以外でのファイルの読... TEST 08/4/10(木) 18:51 お礼[未読]
【55000】今頃気づいてごめんなさい。 Jaka 08/4/11(金) 9:48 発言[未読]
【55016】Re:今頃気づいてごめんなさい。 TEST 08/4/11(金) 14:28 お礼[未読]
【55025】Re:今頃気づいてごめんなさい。 Jaka 08/4/11(金) 15:21 発言[未読]
【55029】Re:今頃気づいてごめんなさい。 VBWASURETA 08/4/11(金) 16:04 発言[未読]
【55074】Re:今頃気づいてごめんなさい。 TEST 08/4/14(月) 11:06 お礼[未読]
【55073】Re:今頃気づいてごめんなさい。 TEST 08/4/14(月) 11:02 お礼[未読]
【55075】Re:今頃気づいてごめんなさい。 Jaka 08/4/14(月) 13:46 発言[未読]
【55079】Re:動作しました。ありがとうございますm(... TEST 08/4/14(月) 18:27 お礼[未読]
【55078】Re:今頃気づいてごめんなさい。 VBWASURETA 08/4/14(月) 17:19 発言[未読]
【55080】Re:動作しました。ありがとうございました... TEST 08/4/14(月) 18:29 お礼[未読]

【54811】マイドキュメント以外でのファイルの読み...
質問  TEST  - 08/3/31(月) 11:28 -

引用なし
パスワード
   現在、マイドキュメントフォルダー内にTSVファイルを置いてその中で
*.tsvファイルを読み込んで*.xlsファイルに書き出すマクロを使用しております。

このマクロをマイドキュメントフォルダー内以外でも動作させたく思います。
(現在はマイドキュメントフォルダー内でしか動作しません)

例えば、デスクトップ上にTESTの様な名前のフォルダーを作ってその中で
作業したいということです。

現状のVBAは下記の記述です。

Sub Macro1()
Dim myfile As String
  
  Application.ScreenUpdating = False
  
  myfile = Dir(ThisWorkbook.Path & "\*.tsv")
  
  Do Until myfile = vbNullString
  
  Workbooks.OpenText Filename:=myfile _
    , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
    :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
    False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array _
    (1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8 _
    , 2), Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), _
    Array(15, 2), Array(16, 2), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array( _
    21, 2)), TrailingMinusNumbers:=True
      
  ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Left$(myfile, Len(myfile) - 4) & ".xls" _
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
    
    ActiveWorkbook.Close savechanges:=False
    
    myfile = Dir()
  Loop
Application.ScreenUpdating = True

End Sub

以上、宜しくお願いしますm(_ _)m

【54812】Re:マイドキュメント以外でのファイルの...
発言  Jaka  - 08/3/31(月) 12:37 -

引用なし
パスワード
   >このマクロをマイドキュメントフォルダー内以外でも動作させたく思います。
>(現在はマイドキュメントフォルダー内でしか動作しません)
ThisWorkbook.Path
これの意味を理解された方が良いかも。
そうすればやり方次第で、そのままのコードでいけます。

【54818】Re:マイドキュメント以外でのファイルの...
発言  VBWASURETA  - 08/3/31(月) 15:18 -

引用なし
パスワード
   こんにちは。
ヒント2です。

MsgBox ThisWorkbook.Path

と書くと何が表示されるか見てみましょう。

後、Dir関数はDosコマンド時代の人間ならお馴染みですが、

MsgBox Dir("C:\*.*")

と書いてどいうものが表示されるかですね。

【54899】Re:マイドキュメント以外でのファイルの...
お礼  TEST  - 08/4/3(木) 16:01 -

引用なし
パスワード
   ▼Jaka さん:
>>このマクロをマイドキュメントフォルダー内以外でも動作させたく思います。
>>(現在はマイドキュメントフォルダー内でしか動作しません)
>ThisWorkbook.Path
>これの意味を理解された方が良いかも。
>そうすればやり方次第で、そのままのコードでいけます。

アドバイスありがとうございます。TESTです。

ThisWorkbook.Pathでそのファイルのパスが取得できることは
理解しているのですが、何故マイドキュメントの中でしか
正常動作しないのかが理解できてません。

【54901】Re:マイドキュメント以外でのファイルの...
お礼  TEST  - 08/4/3(木) 16:11 -

引用なし
パスワード
   ▼VBWASURETA さん:
>こんにちは。
>ヒント2です。
>
>MsgBox ThisWorkbook.Path
>
>と書くと何が表示されるか見てみましょう。

アドバイスありがとうございます。TESTです。
C:\Documents and Settings\TEST\デスクトップ¥vbatest

とテスクトップ上に作成したvbatestフォルダまでのパス
が表示されました。

OKボタンを押すとそこにあるはずのファイルが無いという
実行時のエラー1004が表示されます。
(vbatestフォルダにファイルは存在してますが・・・。)

>後、Dir関数はDosコマンド時代の人間ならお馴染みですが、
>
>MsgBox Dir("C:\*.*")
>
>と書いてどいうものが表示されるかですね。

AUTOEXEC.BATと表示されたアラートが出てOKを押すと
上記同様のエラー表示がでます。

【54913】Re:マイドキュメント以外でのファイルの...
発言  VBWASURETA  - 08/4/3(木) 18:39 -

引用なし
パスワード
   こんばんは。

ちょっと確認です!
もしかしてOS環境がVistaではないですか?
Vistaの場合セキュリティ保護で書き込みが制限されてます。
なので、書き込みができるのはマイドキなのですが。
そうであればOSの問題です。

【54938】Re:マイドキュメント以外でのファイルの...
お礼  TEST  - 08/4/4(金) 19:38 -

引用なし
パスワード
   ▼VBWASURETA さん:
>こんばんは。
>
>ちょっと確認です!
>もしかしてOS環境がVistaではないですか?
>Vistaの場合セキュリティ保護で書き込みが制限されてます。
>なので、書き込みができるのはマイドキなのですが。
>そうであればOSの問題です。

御連絡ありがとうございます。TESTです。
当方のOS環境はXPプロフェッショナルSP2です。
マイドキュメントにTSVファイルとマクロのファイルが
置いてあればデスクトップ上のフォルダー内からの操作でも
動作したりします。
しかし、マイドキュメントをからにしておくと正常動作しません。

【54942】Re:マイドキュメント以外でのファイルの...
質問  VBWASURETA  - 08/4/5(土) 14:14 -

引用なし
パスワード
   ▼TEST さん:
こんにちは。

1点質問です。
マイドキにある場合もThisWorkbook.Pathと指定されてますか?
因みに今はどうかわかりませんがパスの最後が変わる場合があります。

'c:\test1\というパスだった場合
MsgBox ThisWorkbook.Path

*** 結果 ***
c:\test1

'c:\test2\というパスだった場合

*** 結果 ***
c:\test2\


のように最後が「\」という場合もあります。
ま、この問題であれば開く時点でエラーになりますが。


後考えられるのはXPということはユーザ毎にマイドキがあるのはご存知ですか?
そのパス指定に問題とかあるかも知れません。

【54991】Re:マイドキュメント以外でのファイルの...
お礼  TEST  - 08/4/9(水) 17:51 -

引用なし
パスワード
   ▼VBWASURETA さん:

アドバイスありがとうございます。

>マイドキにある場合もThisWorkbook.Pathと指定されてますか?

先に書いたVBAはマクロとして一式マイドキュメントに
置いてあります。
ですので、ThisWorkbook.Pathと指定していることになると思います。

>後考えられるのはXPということはユーザ毎にマイドキがあるのはご存知ですか?
>そのパス指定に問題とかあるかも知れません。

個人情報上下記になっていますが、

C:\Documents and Settings\TEST\デスクトップ¥vbatest

実際は上記の\TESTの部分がユーザー毎のパスになっております。

【54994】Re:マイドキュメント以外でのファイルの...
発言  Jaka  - 08/4/10(木) 9:34 -

引用なし
パスワード
   今だに原因が良く解りませんが、
どんなエラーのなのか書いてないので推測ですが、
マクロを実行させるのに、ユーザー設定で作ったツールバーのボタン等から実行させるようにしてませんか?

もしそうなら、添付させて無いだろうけど一応、
【57】ユーザー設定で作ったツールバーの添付について 
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=57;id=FAQ

現在起動しているデスクトップのパス
MsgBox CreateObject("WScript.Shell").SpecialFolders("Desktop")

【54996】Re:マイドキュメント以外でのファイルの...
お礼  TEST  - 08/4/10(木) 12:03 -

引用なし
パスワード
   ▼Jaka さん:

アドバイスありがとうございます。

>今だに原因が良く解りませんが、
>どんなエラーのなのか書いてないので推測ですが、

マイドキュメントに読み込み用のTSVファイルを置いて
おかないと、読み込み用のTSVファイルが見つかりません
というエラー表示がでます。


>マクロを実行させるのに、ユーザー設定で作ったツールバーのボタン等から実行させるようにしてませんか?

現状は読み込みファイルはマイドキュメント内のみ、
出力ファイルの.xlsファイルはマクロ自体を実行する.xlsと
同じ階層に出力しています。

つまりは、読み込みのパスがマイドキュメントのみしか
効いていない動きのようです。


>もしそうなら、添付させて無いだろうけど一応、
>【57】ユーザー設定で作ったツールバーの添付について 
>ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=57;id=FAQ
>
>現在起動しているデスクトップのパス
>MsgBox CreateObject("WScript.Shell").SpecialFolders("Desktop")

【54997】Re:マイドキュメント以外でのファイルの...
発言  Jaka  - 08/4/10(木) 13:20 -

引用なし
パスワード
   これを新規ブックに書いてデスクトップに保存してから実行して、結果を知らせてください。
TSVファイルは、デスクトップにおいておいて下さい。
ファイル選択のダイアログが出たら、デスクトップのTSVファイルを選択。

Sub nsnn()
Cells(1, 1).Value = ThisWorkbook.Path
Cells(2, 1).Value = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Cells(3, 1).Value = Application.GetOpenFilename("Excelファイル (*.tsv), *.tsv")
st = Dir(Cells(3, 1).Value)
If st = "" Then
  Cells(4, 1).Value = "無し"
Else
  Cells(4, 1).Value = st
End If
End Sub

【54998】Re:マイドキュメント以外でのファイルの...
お礼  TEST  - 08/4/10(木) 18:39 -

引用なし
パスワード
   ▼Jaka さん:

御連絡ありがとうございます。

デスクトップにvbatestというフォルダーを作成してその中で実行したところ

C:\Documents and Settings\TEST\デスクトップ\vbatest
C:\Documents and Settings\TEST\デスクトップ

と記載されてファイルを開くプロパティが出てきて
デフォルトでファイルの場所がマイドキュメントを指定してきました。

単にデスクトップ上で実行してみた場合も

C:\Documents and Settings\TEST\デスクトップ
C:\Documents and Settings\TEST\デスクトップ

と記載されてファイルを開くプロパティが出てきて
デフォルトでファイルの場所がマイドキュメントを指定してきました。


>これを新規ブックに書いてデスクトップに保存してから実行して、結果を知らせてください。
>TSVファイルは、デスクトップにおいておいて下さい。
>ファイル選択のダイアログが出たら、デスクトップのTSVファイルを選択。
>
>Sub nsnn()
>Cells(1, 1).Value = ThisWorkbook.Path
>Cells(2, 1).Value = CreateObject("WScript.Shell").SpecialFolders("Desktop")
>Cells(3, 1).Value = Application.GetOpenFilename("Excelファイル (*.tsv), *.tsv")
>st = Dir(Cells(3, 1).Value)
>If st = "" Then
>  Cells(4, 1).Value = "無し"
>Else
>  Cells(4, 1).Value = st
>End If
>End Sub

【54999】Re:マイドキュメント以外でのファイルの...
お礼  TEST  - 08/4/10(木) 18:51 -

引用なし
パスワード
   ▼Jaka さん:

補足です。

戴いたスクリプトを下記のように頭に追記して実行してみたら
最初のTSVをデスクトップのフォルダーから開いた後に
目的の動作どおり全て動いて意図した.xlsファイルを
デスクトップのフォルダーに生成しました。

Sub Macro1()
Dim myfile As String
  
  Application.ScreenUpdating = False
  
  Cells(1, 1).Value = ThisWorkbook.Path
Cells(2, 1).Value = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Cells(3, 1).Value = Application.GetOpenFilename("Excelファイル (*.tsv), *.tsv")
st = Dir(Cells(3, 1).Value)
If st = "" Then
  Cells(4, 1).Value = "無し"
Else
  Cells(4, 1).Value = st
End If
  
  myfile = Dir(ThisWorkbook.Path & "\*.tsv")
  'MsgBox ThisWorkbook.Path
  
  Do Until myfile = vbNullString
  
  Workbooks.OpenText Filename:=myfile _
    , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
    :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
    False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array _
    (1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8 _
    , 2), Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), _
    Array(15, 2), Array(16, 2), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array( _
    21, 2)), TrailingMinusNumbers:=True
      
  ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Left$(myfile, Len(myfile) - 4) & ".xls" _
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
    
    ActiveWorkbook.Close savechanges:=False
    
    myfile = Dir()
  Loop
Application.ScreenUpdating = True

End Sub


>これを新規ブックに書いてデスクトップに保存してから実行して、結果を知らせてください。
>TSVファイルは、デスクトップにおいておいて下さい。
>ファイル選択のダイアログが出たら、デスクトップのTSVファイルを選択。
>
>Sub nsnn()
>Cells(1, 1).Value = ThisWorkbook.Path
>Cells(2, 1).Value = CreateObject("WScript.Shell").SpecialFolders("Desktop")
>Cells(3, 1).Value = Application.GetOpenFilename("Excelファイル (*.tsv), *.tsv")
>st = Dir(Cells(3, 1).Value)
>If st = "" Then
>  Cells(4, 1).Value = "無し"
>Else
>  Cells(4, 1).Value = st
>End If
>End Sub

【55000】今頃気づいてごめんなさい。
発言  Jaka  - 08/4/11(金) 9:48 -

引用なし
パスワード
   原因はこれ。

>  myfile = Dir(ThisWorkbook.Path & "\*.tsv")
  このDir関数で取れるのは、ブック名だけです。

>  Do Until myfile = vbNullString
>  Workbooks.OpenText Filename:=myfile
                   ↑
        開く時も、ブック名だけしか指定していないから、
        カレントフォルダしか見ないのです。
        デフォルトのカレントフォルダは、変更してなかったり、
        手動でファイルを開いたり保存していなければ、
        マイドキュメントになります。

私の提示した確認コードを追加したら、意図したとおりに動いたのは、
GetOpenFilenameで、カレントフォルダが動いたからです。

で、こんな風にしてください。
Workbooks.OpenText Filename:=フォルダのパス & myfile

【55016】Re:今頃気づいてごめんなさい。
お礼  TEST  - 08/4/11(金) 14:28 -

引用なし
パスワード
         ▼Jaka さん:

アドバイスありがとうございます。

>で、こんな風にしてください。
>Workbooks.OpenText Filename:=フォルダのパス & myfile

Workbooks.OpenText Filename:="C:\Documents and Settings\TEST\デスクトップ\vbatest\"& myfile

としたらデスクトップの特定フォルダ内(vbatestフォルダー)で動作しました。
ありがとうございます。

ただ、この場合だと他のフォルダー名で作業を行う際や
他のPCで作業する際にVABスクリプトの部分のTESTとvbatest
を都度、修正しなければならないと思うのですが、
この都度、修正をしなくて済むフォルダのパスの書き方は
あるのでしょうか?

色々とすいません、宜しくお願いします。

【55025】Re:今頃気づいてごめんなさい。
発言  Jaka  - 08/4/11(金) 15:21 -

引用なし
パスワード
   >Workbooks.OpenText Filename:="C:\Documents and Settings\TEST\デスクトップ\vbatest\"& myfile

>ただ、この場合だと他のフォルダー名で作業を行う際や
>他のPCで作業する際にVABスクリプトの部分のTESTとvbatest
>を都度、修正しなければならないと思うのですが、
>この都度、修正をしなくて済むフォルダのパスの書き方は
>あるのでしょうか?
???

パス = ThisWorkbook.Path
パス = CreateObject("WScript.Shell").SpecialFolders("Desktop")

などどれか、(使用状況ががわからないけど。)

Filename:=パス & "\" & myfile

ってやればいいです。

【55029】Re:今頃気づいてごめんなさい。
発言  VBWASURETA  - 08/4/11(金) 16:04 -

引用なし
パスワード
   皆さんこんにちは。

パスの最後が固定で「\」有り無しであれば、jakaさんので良いかと思います。
もし固定でなければ

Msgbox iif(Right(パス,1)="\",パス ,パス & "\") & ファイル名

で両方対応できます。
ご参考までに。

【55073】Re:今頃気づいてごめんなさい。
お礼  TEST  - 08/4/14(月) 11:02 -

引用なし
パスワード
   ▼Jaka さん:

アドバイスありがとうございます。

myfile = Dir(ThisWorkbook.Path & "\*.tsv")
  MsgBox ThisWorkbook.Path
  
  Do Until myfile = vbNullString
  
  Workbooks.OpenText Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & myfile

とやってみたのですが、どうも下記バス内にあるファイルが存在するに
も関わらず、そのファイル(test.tsv)が見つかりませんというメッセージが出て
エラーになります。

パスをもう少し詳しく書くと、

C:\Documents and Settings\test.TES\デスクトップ\vbatest

でvbatestフォルダー内にtest.tsv

というファイルとマクロのtest.xlsファイルを置いてあるといった感じ
なのですが・・。


>>Workbooks.OpenText Filename:="C:\Documents and Settings\TEST\デスクトップ\vbatest\"& myfile
>
>>ただ、この場合だと他のフォルダー名で作業を行う際や
>>他のPCで作業する際にVABスクリプトの部分のTESTとvbatest
>>を都度、修正しなければならないと思うのですが、
>>この都度、修正をしなくて済むフォルダのパスの書き方は
>>あるのでしょうか?
>???
>
>パス = ThisWorkbook.Path
>パス = CreateObject("WScript.Shell").SpecialFolders("Desktop")
>
>などどれか、(使用状況ががわからないけど。)
>
>Filename:=パス & "\" & myfile
>
>ってやればいいです。

【55074】Re:今頃気づいてごめんなさい。
お礼  TEST  - 08/4/14(月) 11:06 -

引用なし
パスワード
   ▼VBWASURETA さん:

アドバイスありがとうございます。

先に書いたのですが、修正版も読み込みたいTSVファイルを
読み込めない状況でとまってしまっています・・・。

>皆さんこんにちは。
>
>パスの最後が固定で「\」有り無しであれば、jakaさんので良いかと思います。
>もし固定でなければ
>
>Msgbox iif(Right(パス,1)="\",パス ,パス & "\") & ファイル名
>
>で両方対応できます。
>ご参考までに。

【55075】Re:今頃気づいてごめんなさい。
発言  Jaka  - 08/4/14(月) 13:46 -

引用なし
パスワード
   ▼TEST さん:
>myfile = Dir(ThisWorkbook.Path & "\*.tsv")
>  MsgBox ThisWorkbook.Path
>  
>  Do Until myfile = vbNullString
>  
>  Workbooks.OpenText Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & myfile
>
>とやってみたのですが、どうも下記バス内にあるファイルが存在するに
>も関わらず、そのファイル(test.tsv)が見つかりませんというメッセージが出て
>エラーになります。
>
>パスをもう少し詳しく書くと、
>
>C:\Documents and Settings\test.TES\デスクトップ\vbatest

結論から言いますと、見ている場所が違います。
また、自分で見ていると思っている場所も見当違いの場所です。
>>myfile = Dir(ThisWorkbook.Path & "\*.tsv")
↑ここで、コードが書いてあるブックのディレクトリを見ているのに
なんで、
↓デスクトップを見るのですか?
CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & myfile

こんがらがっているのか解りませんが、もう少し整理してみてください。
パスの意味を理解できないで、パスのコードをあちこち移動させても、
ドつぼにはまるだけです。

【55078】Re:今頃気づいてごめんなさい。
発言  VBWASURETA  - 08/4/14(月) 17:19 -

引用なし
パスワード
   とりあえず、まずMsgBoxをやめて

  Debug.Print ThisWorkbook.Path

  Debug.Print CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & myfile

と書いて
イミディエイトウィンドウから表示されたパスを
エクスプローラのアドレスバーにコピペしてエンターキーを
押すなりしてみたらどうですか?

パスの違いがあるならJakaさんのおっしゃる通りどれがダメなのか
一つ一つ潰して行った方が良いですよ。

【55079】Re:動作しました。ありがとうございます...
お礼  TEST  - 08/4/14(月) 18:27 -

引用なし
パスワード
   ▼Jaka さん:

アドバイスありがとうございます。

Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & myfile _

にしてみたら動作しました。

最初、ThisWorkbook.Pathを使用してみたのですが、書き方が悪かった
らしく上手く行かなくて・・

CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" &

を使ってみたり、御察しのとおり混乱してました。
(どうも私は根っからのパス音痴の人間のようで)

長い道のりでしたが、なんとか動くようになってホッとしています。
この度は本当にありがとうございましたm(_ _)m


>▼TEST さん:
>>myfile = Dir(ThisWorkbook.Path & "\*.tsv")
>>  MsgBox ThisWorkbook.Path
>>  
>>  Do Until myfile = vbNullString
>>  
>>  Workbooks.OpenText Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & myfile
>>
>>とやってみたのですが、どうも下記バス内にあるファイルが存在するに
>>も関わらず、そのファイル(test.tsv)が見つかりませんというメッセージが出て
>>エラーになります。
>>
>>パスをもう少し詳しく書くと、
>>
>>C:\Documents and Settings\test.TES\デスクトップ\vbatest
>
>結論から言いますと、見ている場所が違います。
>また、自分で見ていると思っている場所も見当違いの場所です。
>>>myfile = Dir(ThisWorkbook.Path & "\*.tsv")
>↑ここで、コードが書いてあるブックのディレクトリを見ているのに
>なんで、
>↓デスクトップを見るのですか?
>CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & myfile
>
>こんがらがっているのか解りませんが、もう少し整理してみてください。
>パスの意味を理解できないで、パスのコードをあちこち移動させても、
>ドつぼにはまるだけです。

【55080】Re:動作しました。ありがとうございまし...
お礼  TEST  - 08/4/14(月) 18:29 -

引用なし
パスワード
   ▼VBWASURETA さん:

アドバイスありがとうございます。

パスを見直したら

Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & myfile _

で動作しました。

この度は色々とありがとうございましたm(_ _)m


>とりあえず、まずMsgBoxをやめて
>
>  Debug.Print ThisWorkbook.Path
>
>  Debug.Print CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & myfile
>
>と書いて
>イミディエイトウィンドウから表示されたパスを
>エクスプローラのアドレスバーにコピペしてエンターキーを
>押すなりしてみたらどうですか?
>
>パスの違いがあるならJakaさんのおっしゃる通りどれがダメなのか
>一つ一つ潰して行った方が良いですよ。

4702 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free