- ベストアンサー
[Active Basic]デスクトップのパスを取得
Active Basicでデスクトップへのファイルパスを取得するための方法を教えていただきたいのですが・・・・ C:\Documents and Settings~っといった感じの絶対パス(?)で取得する方法を知りたいです。 どなたか知っている方、いらっしゃいましたらご教授ください。 お願いします。
- if-so-at
- お礼率51% (91/176)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
レジストリーからの取得になりそうです 何かのイベントで dim lnSts as long dim hMyKey As HKEY, hRoot as HKEY dim ss as String hRoot = HKEY_CURRENT_USER ' レジストリーを開く lnSts = RegOpenKeyEx( hRoot, _ "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", _ 0, KEY_ALL_ACCESS, hMyKey ) if lnSts = ERROR_SUCCESS then ' キーを開くのに成功したら dim pbuf as BytePtr, nLen as Dword dim w as String, lpType as Long ' 読み込むサブキー w = "Desktop" lpType = REG_SZ ' バッファの準備 ss = String$(256," ") pbuf = StrPtr( ss ) nLen = Len(ss) ' サブキーの読み込み lnSts = RegQueryValueEx( hMyKey, StrPtr(w), _ 0, VarPtr( lpType ), pbuf, VarPtr(nLen) ) ' キーハンドルの後始末 RegCloseKey( hMyKey ) ' 読み込んだデータをスタティックテキストに表示 SetDlgItemText( hMainWnd, Static1, ss ) End If といった具合でしょう
関連するQ&A
- デスクトップ上の全ファイル取得
開発環境 WindowsXP,SP2 Visual Studio 2005 VC++ SDK SHGetFolderPath()でデスクトップのパスを取得した後、FindFirstFileによってデスクトップ上の全ファイル及びディレクトリの名前を取得したいと考えております。 SHGetFolderPathで取得したパスは、 C:\Documents and Settings\...\デスクトップ となっており、この文字列をwsprintfで次のように加工しました。 wsprintf(output,"%s\\*.*","C:\Documents and Settings\...\デスクトップ"); このoutputをFindFirstFile,FindNextFile,FindCloseを組み合わせたプログラムでディレクトリ内の全てのファイル及びディレクトリの名前を取得しています。 このプログラムは普通(?)のディレクトリでは有効で、こちらの期待通りの動きをしてくれるのですが、取得したデスクトップのパスを渡すと、デスクトップフォルダ内にはデスクトップという名前のフォルダしかないと出力されます。以下のような感じです。 調査ディレクトリ:C:\Documents and Settings\...\デスクトップ 調査結果 "C:\Documents and Settings\...\デスクトップ"ディレクトリ内のファイル及びディレクトリ:デスクトップ これはWindowsの仕様の動作なのでしょうか。 特殊フォルダであるデスクトップは、FindFirstFileでは調査出来ないのでしょうか? 他に方法はありますか? どうか教えてください。
- ベストアンサー
- C・C++・C#
- DOSコマンドで相対パスの取得の方法がわかりません。
ファイルパスが C:\Documents and Settings\ユーザー名\My Documents\My Music を My Music だけを取り出す方法が見つかりません。 どのように操作したら相対パスを取得することができるのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- デスクトップのパス
自分で設定しておきながらわからなくなってしまったのですが、一般的にデスクトップのパスは C:\Documents and Settings\Administrator\デスクトップ(スペルが間違っているかも)になっているかと思いますが、最初に何度もログインの際に確認画面が出て来るのが面倒なので、ログイン画面の際に確認が出ない設定にしたら、デスクトップのパスのadministratorのところが個人名になってしまいました。 それはそれで特に支障はないしと思っていたのですが、あるマクロを組んでデスクトップを指定してあるので、そのときに人と違うデスクトップのパスだと動きません。そこで、この個人名をadministretorに戻すにはどうしたら良いのか教えてください。
- ベストアンサー
- Windows NT・2000
- 統合マクロでパスの取得方法
お世話になります。 集計ファイルでエリア・商品で集計をとっています。 一つのファイルにまとめたいのでエリアをシート名による串刺し 商品を統合を使って集計していますが 毎回統合ボタンを押すのが大変で マクロを使い下記のコードを使っていますがファイルのパスで固定されているので 人に渡すとファイル名の変更、ユーザーの違いによりエラーになってしまいます。 現在開いているファイルの名前とパスをマクロに取り込み統合させる事は可能でしょうか Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/9/29 ユーザー名 : user ' ' Sheets("一般A").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]××一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]●●一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]■■一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]▲▲一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]++一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]※※一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]%%一般A'!R6C2:R64C9"), _ Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False Sheets("一般B").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般B'!R6C2:R64C9", _ ・ ・ ・ ・ End Sub DIMとかActiveWorkbook.Pathとか組み込みましたが うまく行かないです。 どうぞ助けてください。
- ベストアンサー
- Visual Basic
- ExcelVBAでデスクトップのPATHを取得するには
こんにちわ。ExcelVBAで、ワークシートのA列に入力されているデータをTextファイルに保存するプログラムを作りました。下記のものです。 ================================= Sub Expo_TXT() Dim Rows As Long Dim StrData As String Dim Fs As Object, A As Object Set Fs = CreateObject("Scripting.FileSystemObject") Set A = Fs.CreateTextFile("c:\test.txt", True) For Rows = 1 To 10 StrData = Worksheets("Sheet1").Cells(Rows, 1).Value A.WriteLine StrData Next Rows A.Close End Sub ================================= しかし見てのとおりcドライブのルートにtest.txtという名前で保存するようになっています。 できれば、そのパソコンのデスクトップに保存したいのですが、どうすれば、パソコンのデスクトップのPATHを取得できるでしょうか? それぞれのパソコンのデスクトップは c:\windows\デスクトップという様にWin98マシンもあれば c:\Documents and Settings\Hanako\デスクトップや c:\Documents and Settings\Taro\デスクトップという場合もあります。多分APIとか使うんだろうなと思い、Webの解説ページを読んだりしましたがAPI使ったことが無いのでチンプンカンプンでした。 できれば具体的なコーディング例をご提示いただければ助かります。
- ベストアンサー
- Visual Basic
- フルパスの中にワイルドカードを使いたい
ファイル削除のバッチファイルを作成しているのですが、フルパスの中でワイルドカードを使用したいのですが、可能でしょうか? 例として、 C:\Documents and Settings\user\デスクトップ\abc\test.txt C:\Documents and Settings\user\デスクトップ\edf\test.txt C:\Documents and Settings\user\デスクトップ\gh\test.txt を削除させたいです。 別の場所に同名のテキストファイルがあり、それは消したくないので、「*test.txt」とはしたくないです。 試しに下記のようにワイルドカードを使用してみたところNGでした。 del "C:\Documents and Settings\user\デスクトップ\*\test.txt" よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- デスクトップ上のファイルへのパスを教えてください。
デスクトップ上にあるファイルへのパスはWindows XPとWindows 7の場合は以下のようになっていますが、Windows 8の場合はどのようになるのでしょうか。Windows 7と同様と考えてよろしいでしょうか。 ○Windows XP C:\Documents and Settings\ユーザー名\デスクトップ\ファイル名.拡張子 ○Windows 7 C:\Users\ユーザー名\Desktop\ファイル名.拡張子
- ベストアンサー
- Windows 8
- デスクトップなど特殊フォルダのフルパスを取得したい
VB6を使用しています。 デスクトップやシステムフォルダなどの特殊フォルダのフルパスを取得したいのですが、方法がよくわかりません。 No.260113の方の質問と同様になってしまうのですが、参考URLがすでになくなっているみたいで判りませんでした。 取得方法をご存知の方、ご教授いただきますよう、よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- アプリケーションのあるファイル名を取得
VBプログラミングをしているのですが、 その本体がある場所のファイル名を取得したいのですが、なにかよい方法はあるでしょうか? たとえば 本体.exeまでのフルパスが C:\Documents and Settings\Administrator\My Documents\ファイルA\本体.exe としたら C:\Documents and Settings\Administrator\My Documents\ファイルA までを取得したいのです。 世ろ紙お願いいたします。
- ベストアンサー
- Visual Basic
- 「デスクトップ」を「Desktop」に変える
通常、デスクトップへのフルパスは C:\Documents and Settings\ユーザー名\デスクトップ と、なっていますが、 「デスクトップ」の部分を「Desktop」と英語表記に変えることは出来ないのでしょうか? また、可能であるのなら、変更により何か弊害が発生するのでしょうか?
- ベストアンサー
- Windows XP
お礼
レジストリーを使うのですか・・・ ちょっと怖いですね でも、ありがとうございました