• ベストアンサー

VBA・WSHでのspecialfolders

WSHでの知識をご教授ください。 ・実行場所を選ばずデスクトップにテキストを作成したいと思い SET objpath =SpecialFolders("Desktop")でobjpathに現行ユーザの デスクトップの場所を取得して Set objFS = CreateObject("Scripting.FileSystemObject") objFS.CreateFolder objpath\newfolderでフォルダを作成して set fo = objFS.CreateTextFile("newfolder\sample.txt",true) テキストを作成 という動きをさせたいのですが objpathをechoすると場所が表示されるので 何が足りないのかわからなくて煮詰まってしまいました。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

エクセルVBAの標準モジュールに Sub test() Dim objWShell As Object 'WScript.Shell Dim strDesktopPath As String 'デスクトップの場所 'Windows Script Hostのオブジェクトを作成する Set objWShell = CreateObject("WScript.Shell") 'スペシャルフォルダ(特殊フォルダ)の場所を返す strDesktopPath = objWShell.SpecialFolders("Desktop") '確認メッセージの表示 MsgBox "DesktopのPathは[" & strDesktopPath & "]です" Set objFS = CreateObject("Scripting.FileSystemObject") newfolder = "例テキストF" objFS.CreateFolder strDesktopPath & "\" & newfolder 'でフォルダを作成して Set fo = objFS.CreateTextFile(strDesktopPath & "\" & newfolder & "\sample.txt", True) End Sub と入れて実行する。 デスクトップに「例テキストF」というフォルダが出来て、その中に sample.txtというファイルが出来ました。 ¥の入れ方の問題と、変数とリレラルを””で囲っているのが問題かなと思った。 ーー 参考 http://www.ken3.org/vba/backno/vba114.html

tororo119
質問者

お礼

ご回答ありがとうございます。 詳細な説明内容だったので、BAを付けさせていただきました。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

#こんな感じでできることはできますが。。。 Set objFS = CreateObject("Scripting.FileSystemObject") Set ws = CreateObject("WScript.Shell") objpath = ws.SpecialFolders("Desktop") objFS.CreateFolder objpath & "\newfolder" Set fo = objFS.CreateTextFile(objpath & "\newfolder\sample.txt", True)

tororo119
質問者

お礼

ご回答ありがとうございます。 即時回答のおかげで助かりました。

関連するQ&A

  • VBSでテキストファイルを作成

    こんにちは。 set fso = createobject("Scripting.FileSystemObject") fso.createfolder("倉庫") を実行すると、実行したスクリプトが存在する場所に「倉庫」という名のフォルダが作成されます。 その倉庫というフォルダの中にテキストファイルを作成するにはどうすればよいでしょうか? set fso = createobject("Scripting.FileSystemObject") fso.createfolder("倉庫") set fo = fso.opentextfile(FILENAME) close.fo 相対的にファイルの場所を指定する方法がわかりません。 絶対パスでないとだめなのでしょうか?

  • 【WSH】スクリプトを作るスクリプト

    初めて質問させていただきます。 規定によりフリーソフトがインストールできない為 社内で使用するスクリプトをWSH(vbs)で作成しました。 次の段階として、そのスクリプトをユーザーの入力に合わせて作成するスクリプトを 作成しようとしているのですが、一つ問題があり先に進めなくなってしましました。 目的としては InputBox関数でユーザーが入力したパスをWriteLineでスクリプト内に 入れ込みたいんですが、 例えば下記のようなスクリプトを組み、走らせて作成される 「スクリプトA.vbs」を走らせても、もちろん p としか表示されません。 p = InputBox("フォルダのパスを入力してください。") Set objFS = CreateObject("Scripting.FileSystemObject") Set objTS = objFS.CreateTextFile("スクリプトA.vbs") objTS.WriteLine "MsgBox ""p""" objTS.Close WriteLineの中に変数を代入することは不可能なんでしょうか? それ以外でもいい方法があればご教授いただきたいです。 よろしくお願いします。

  • XCOPY

    こんにちわ クライアント数台(NT workstation)のローカルデータ を、ファイルサーバ(2003)に自動保存(WSH)する処理 を行いたいと思っています。 処理概要は、クライアントのコンピュータ名と同じ ディレクトリをファイルサーバに作成し、 そのディレクトリに、クライアントのデータを保存する 流れで考えています。 XCOPYでやる場合だと、保存先を変数では無理なのでしょうか。 WSHで成功できましたが、権限は引き継がれるのでしょうか? Dim objFS Dim objNetwork Dim f Set objNetwork = WScript.CreateObject("WScript.Network") Set objFS = CreateObject("Scripting.FileSystemObject") Set f = objFS.CreateFolder("C:\ " & objNetwork.ComputerName) 'objFS.CopyFolder "c:\test", "c:\ " & objNetwork.ComputerName xcopy C:\test C:\ & objNetwork.ComputerName /e /v /q /h /k /o /x

  • WSHのCreateTextFileについて

    プログラミングを学び始めて数か月の初心者です。 WSHにて、VBscriptを用いてスクリプトを製作しているのですが、 メソッドの動きが理解できないので質問させていただきます。 【実現したい処理】 ドラッグアンドドロップでスクリプトファイルにテキストファイルをドロップすると、 テキストファイル名に「_admin」を追加したテキストファイルを新規で作成する。 CreateTextFileメソッドを利用する際、 新規作成するファイル名をフルパスで指定すれば作成できます。 または、GetBaseNameメソッドを使用せず、変数にファイル名を直接代入すれば作成できます。 ソースの様に、GetBaseNameメソッドを利用してファイル名を生成すると上手くファイルを作成くれません。 このソースの場合、カレントフォルダに新規テキストファイルを作成することはできないのでしょうか。 宜しくお願いします。 【ソース CreateFile.vbs】 Dim objFSO, Dim strArgument, strFileName, strFileNewName Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") strArgument = WScript.Arguments(0) strFileName = objFSO.GetBaseName(strArgument) strFileNewName = strFileName & "_admin.txt" objFSO.CreateTextFile strFileNewName set objFSO = Nothing 【/ソース】

  • VBA DateLastModifiedプロパ

    DateLastModifiedプロパティは撮影日時と言う意味にもなりますか? https://msdn.microsoft.com/ja-jp/library/cc428100.aspx を見る限りでは撮影日時ではないのですが Sub 撮影日時を取得する() Dim objFol, shellObj, folderObj, myFile Dim objFS As FileSystemObject Set objFS = CreateObject("Scripting.FileSystemObject") Set shellObj = CreateObject("Shell.Application") MyFolderName = "C:\Users4\Desktop\natsumi\test" Set objFol = objFS.GetFolder(MyFolderName) Set folderObj = shellObj.Namespace(MyFolderName) For Each myFile In objFol.Files Debug.Print myFile.Name & "/" & myFile.DateLastModified Next Set objFS = Nothing Set objFS = Nothing Set objFol = Nothing Set shellObj = Nothing Set folderObj = Nothing End Sub を実行すると撮影日時ががDateLastModifiedと一致するのですが これは偶然ですか?

  • csvファイルを読み込む方法について

    aspにてscvファイルを読み込む際、直接ファイル名を指定するとうまくいくのですが、ファイル名を変数で指定しようとすると、「ファイルが見つかりません」というエラーになってしまいます。どのように記述すれば良いでしょうか。お教えください。よろしくお願いいたします。 (例) 'OK Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile(Server.MapPath("aaa.csv"),1) 'NG fname = "aaa.csv" Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile(Server.MapPath(fname),1) また、 Set objText = objFS.OpenTextFile(Server.MapPath("""" & fname & """"),1) としてもダメでした。以上です。

  • コピーするVBS

    ファイルサーバーからファイルをデスクトップにコピーするVBSを下記のように作成しています。 Set objFSO= CreateObject("Scripting.FileSystemObject") objFsoCopyFile("\\server\public\test.mdb","C:\Documents and Settings\user\デスクトップ",true) この中で、「C:\Documents and Settings\user\デスクトップ」はパソコンごとに異なりますので、 それぞれのPCのデスクトップをしてする方法を探しています。 ネットで、デスクトップという類のフォルダの取得として Dim WshShell As Object Set WshShell = CreateObject("WScript.Shell") WshShell.SpecialFolders("Desktop") を絡めれば出来るようなことがありましたが、使い方をどなたか教えてください。

  • WSHで複数のファイルを読み取り専用にしたい

    WSH初心者です。 ワールドカードを使って複数のファイルを読み取り専用にする方法がわかりません。 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile("C:\*.txt") objFile.Attributes = (objFile.Attributes Or 1) これだと「ファイルが見つかりません」というエラーが出ます。 属性設定には、ワイルドカードが使えないのでしょうか?

  • WSHでVBScript使いDBのデータを削除、新規登録する。

    申し訳ありませんが、素人の質問です。 WSHをVBSCriptでDBのレコードを削除、 テキストファイルを呼びだし、 呼び出したデータを変数に格納し、DBにインサートしたいのですが、 DBへの接続の仕方がわかりません。 ASPで作成したものは正常に動作するのですが、 WSHで作成したものは、接続するさいにエラーしてしまいます。 エラー箇所は下記の部分です。 すみませんが、回答お願いします。 テキスト呼び出し箇所 Set fso = Server.CreateObject("Scripting.FileSystemObject") Set fts = fso.OpenTextFile("D:\**\*\*\*\A.dat", 1, False, 0) 接続箇所 Con_s.BeginTrans DELETE箇所 Set Rs = Server.CreateObject("ADODB.Recordset") Cmd_s.CommandText = delSq Rs.Open Cmd_s, , adOpenForwardOnly インサート箇所 Set Rs = Server.CreateObject("ADODB.Recordset") Cmd_s.CommandText = strSql Rs.Open Cmd_s, , adOpenForwardOnly 切断箇所 Con_s.CommitTrans

  • VBSを使ってフォルダを圧縮

    初めましてsazzzzと申します。 恥を承知、お解りになる方に聞いてみようかとこの度投稿した次第です。 どなたか助けてください。宜しくお願いします。VBSめちゃめちゃ初心者なのです。 ☆不特定なファイルが格納されているフォルダを指定フォルダに圧縮 ☆VBSを使い、業務時間外にタスクで管理したい ☆Windows2000(いまだに...)を使用 不作VBSを書かせて頂きます。ファイルでは、動作問題なく出来ましたが、フォルダとなると無理でした。 '---------------フォルダーのコピー-------------------- 'コピーフォルダ名 strFolder= "TEST" '圧縮フォルダ名 strZipFolder= strFolder & ".zip" MsgBox strZipFolder 'コピー元パス strSource="\\Pink\Work\" & strFolder 'コピー先パス strDestinate="\\Pink\Work\BK\" Set objFS = CreateObject("Scripting.FileSystemObject") Set objFB = CreateObject("Scripting.FileSystemObject") If objFS.FolderExists(strSource) = False Then objFB.CreateFolder(strSource) End If objFB.CopyFolder strSource , strDestinate , False '--------------コピー元フォルダの削除----------------------- strPath = strSource Set objFS = CreateObject("Scripting.FileSystemObject") If objFS.FolderExists(strPath) = False Then MsgBox("指定されたフォルダが存在しません。") Else objFB.DeleteFolder strPath End If 'DOSコマンドを実行して、圧縮する  Set ws = WScript.CreateObject("WScript.Shell") strDC="Makecab " & strDestinate & strFolder & " " & strDestinate & strZipFolder ws.Run strDC,0,true set ws=nothing objFS.DeleteFile(strDestinate & strFolder) Set objFS=Nothing Set objFB=Nothing

専門家に質問してみよう