[リストへもどる]
一括表示

投稿時間:2002/08/26(Mon) 19:13
投稿者名:SACHI
URL :
タイトル:
テンポラリーファイル取得について
初めて参加します。

VBからEXCELシートを開く際、テンポラリー領域にコピーをして
コピーしたシートを開く・・・という処理をしています。
今までAPI関数(GetTempPath)を使い、WINDOWSのテンポラリー領域
を取得していましたが、WindowsXPではそのAPI関数が正常に働かない事が
発覚しました。
そこで、VB関数にもテンポラリー領域を取得出来る関数があると聞いたのですが
力不足で探すことができません。
どなたか知っていらっしゃる方、ご教授願えませんでしょうか?

投稿時間:2002/08/26(Mon) 20:30
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re: テンポラリーファイル取得について
本当に出来ませんか?
うちでは GetTempPath で出来ますけれど…

環境
VB6SP5
Windows XP Pro
(VisualStudio.netもインストールされてますが…)

テスト用サンプル
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Sub Form_Load()
  Dim ret As Long
  Dim buf As String

  buf = String$(256, vbNullChar)
  ret = GetTempPath(Len(buf), buf)
  Text1.Text = buf
End Sub

投稿時間:2002/08/26(Mon) 21:10
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: テンポラリーファイル取得について
C:\DOCUME~1\YPCS_NO1\LOCALS~1\Temp\

WinXP では上記のテンポラリーファイルになりますね。
ちなみにWshShellオブジェクトを使っても同じでした。

Label1.Caption = Environ$("TEMP")
これでも同じです

C:\WINDOWS\Temp こちらのテンポラリーファイルが取得したいのですね

ごまかしなら、これでもいいかも
Private Sub Command1_Click()
    Dim TempPath As String
    TempPath = Dir$(Environ$("WINDIR") & "\TEMP", vbDirectory)
    If StrComp(TempPath, "TEMP", 1) = 0 Then
        TempPath = Environ$("WINDIR") & "\TEMP"
    Else
        TempPath = ""
    End If
    Text1.Text = TempPath
End Sub

でも初期の目的なら Label1.Caption = Environ$("TEMP") こちらで取得した
フォルダでもいいのでは

投稿時間:2002/08/26(Mon) 21:28
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re^2: テンポラリーファイル取得について
> C:\WINDOWS\Temp こちらのテンポラリーファイルが取得したいのですね

なるほど。そういうことですか。
GetSystemDirectory + "Temp"(文字列)ってのはつらいかな(^^;

でもファイルシステムによってはAdministrator権限がないと
取得しても書き込めないような気がするので
普通のアプリケーションで使うのは疑問ですね。
NT系OSの宿命というべきか…

投稿時間:2002/08/27(Tue) 09:23
投稿者名:SACHI
URL :
タイトル:
Re^3: テンポラリーファイル取得について
素早い対応、ありがとうございます。
大変助かりますっ!!
私自身、XPをまだ使ったことはなく(Windows2000使用)、
客先から言われて修正しなければならなくなりまして・・・
お恥ずかしながら、現象確認はまだ行ってないのです・・・。
どちらにしてもそういう関数がある事がわかって大変助かりました。
とりあえず、「Environ$("TEMP")」で対応しようと思うのですが、
ダイレクトに"TEMP"と書くのは何か問題でもありますか?