#056 Windowsのテンポラリフォルダのパスを取得するには? VBA、API

Accessのテーブルからテキストファイルなどを出力して、ある処理が終わったらそのファイルは不要となるような場合、あくまでもそのファイルは作業用の一時的なファイルなので、よくある "~abcd.tmp" のようなファイル名でWindowsのテンポラリファイル用のフォルダに書き出したいということがあると思います。そのような場合、WindowsAPIの「GetTempPath」関数を使うことによってにWindowsのテンポラリフォルダのパスを取得することができます。

まず標準モジュールに次のコードを記述します。"Declare"の前に"Private"を付けることによってフォームのモジュールにも記述できます。
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
                 (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

サンプルプロシージャ:
Function GetTemporaryPath() As String
  Const MAX_PATH = 260  'フォルダ名の長さの最大値
  Dim strBuffer  As String * MAX_PATH 'フォルダ名を受け取るバッファ
  Dim lngRet As Long

  'API関数を呼び出し
  lngRet = GetTempPath(Len(strBuffer), strBuffer)

  If lngRet > 0 Then
    '正常に取得されたら返り値の後続の Null を取り除いて返します
    '("C:\WINDOWS\TEMP\" などが返る)
    GetTemporaryPath = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
  Else
    '取得できなければ長さゼロの文字列を返します
    GetTemporaryPath = ""
  End If

End Function
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved