• ベストアンサー

エクセル VBA パスの記述方法を教えてください。

Sub フォルダ作成() Dim UserName As String UserName = Environ("USERNAME") MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\売掛金元帳" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\買掛金元帳" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\管理表" End Sub 上記のようなマクロを記述してありますが、 C:ドライブ以外(D:ドライブやZ:ドライブ)で使用する場合が発生しましたので、 どのドライブでも使用出切る記述方法があれば御教示お願い致します。

  • oguno
  • お礼率61% (179/289)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 少し、見直してみました。 今回は、このようなマクロは経験はありません。私は、決算期のフォルダは年に一度しかないので、マクロでは作りません。手動で行います。他人に作ってもらうならいいけれども、ある程度エラーを出さないマクロにするには、面倒で手数が多いかもしれません。 一応、年度決算ですから、現在の年の数でフォルダ名にします。 このようにしてあります。 Format$(DateSerial(Year(Date), M, 1), "yyyy年mm") & "決算" '------------------------------------------- ''Option Explicit Sub MacroTest1()   Dim UserName As String   Dim myDest As String   Dim myDrv As Variant   Dim myFolder As String   Dim myFolder2 As String   Dim objFS As Object   Dim objDrv As Object   Dim flg As Boolean   Const M As Integer = "7" '決算月      flg = False      UserName = VBA.Environ("USERNAME")   myDest = "C:\Documents and Settings\" & UserName & "\My Documents\"   myFolder = "販売管理"      myDrv = Application.InputBox("ドライブ名を入れてください。" & vbCrLf & "99を入れると自フォルダになります。", "ファルダ作成", Type:=2)      If VarType(myDrv) = vbBoolean Or myDrv = "" Then Exit Sub   Set objFS = CreateObject("Scripting.FileSystemObject")   If Not myDrv Like "99" And InStr(1, Left(Application.Path, 3), myDrv, 1) = 0 Then          If InStr(myDrv, ":") = 0 Then myDrv = myDrv & ":"     If InStr(myDrv, "\") > 0 Then myDrv = Replace(myDrv, "\", "")          If objFS.DriveExists(myDrv) = False Then       MsgBox myDrv & " :ドライブがありません。"       Exit Sub     Else       Set objDrv = objFS.GetDrive(myDrv)       If objDrv.IsReady = False Then         MsgBox myDrv & "ドライブが可能ではありません。"         Exit Sub       End If       If objDrv.freespace < 1000 Then         MsgBox myDrv & "ドライブが書き込み可能ではありません。"         Exit Sub       End If       ChDrive myDrv     End If   Else     flg = True   End If      If flg Then     If objFS.FolderExists(myDest & myFolder & "\") = False Then       MkDir myDest & myFolder     End If   Else     myDest = myDrv & "\"     If InStr(1, myDest, "Z", 1) Then 'Zの場合       myDest = myDest & "\5TM\"       If objFS.FolderExists(myDest & "\") = False Then         MkDir myDest       End If     End If     If objFS.FolderExists(myDest & "\" & myFolder & "\") = False Then       MkDir myDest & "\" & myFolder     End If   End If If objFS.FolderExists(myDest & myFolder & Format$(DateSerial(Year(Date), 1, 1), "yyyy年mm") & "決算") Then   MsgBox myDest & myFolder & Format$(DateSerial(Year(Date), M, 1), "yyyy年mm") & "決算" & vbCrLf & "は既に存在するかと思われます。", vbInformation   Exit Sub Else   '既に決算フォルダがある場合は、無視する   On Error Resume Next   MkDir myDest & myFolder & "\" & Format$(DateSerial(Year(Date), M, 1), "yyyy年mm") & "決算" & "\"   On Error GoTo 0   MkDir myDest & myFolder & "\" & Format$(DateSerial(Year(Date), M, 1), "yyyy年mm") & "決算" & "\売掛金元帳"   MkDir myDest & myFolder & "\" & Format$(DateSerial(Year(Date), M, 1), "yyyy年mm") & "決算" & "\買掛金元帳"   MkDir myDest & myFolder & "\" & Format$(DateSerial(Year(Date), M, 1), "yyyy年mm") & "決算" & "\管理表" End If '以下を置かないと、ドライブに、ApplicationのCurDrive が残ることがある。 ChDrive Left(Application.Path, 3) Set objFS = Nothing End Sub

oguno
質問者

補足

Wendy02様 ご無沙汰いたしております。 久方ぶりの質問をさせていただきました。 お目に留めていただき、ありがとうございます。 >私は、まだ書いています。 ご指導いただけることは、私にとっては大変ありがたい事です。 その他の大勢の方々もそう思っていらしゃることと思います。 どうか、今後もご指導いただけますようお願い申し上げます。 ● 私の質問の要領が悪く、枝葉の質問から入ってしまったようで申し訳ございません。 再質問のようになってしまい申し訳ございませんが、宜しくお願い申し上げます。 (1)My Documentsに\販売管理 を保存して、VBAで絶対パス("C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算") で記述した場合、Cドライブでは思い通り作業が出来ます。 (2) そのまま、C:ドライブ以外(例えばD:ドライブやZ:ドライブ)に保存し、作業しますと、エラーが発生します。 (3) VBAの中で、絶対パスを多用しておりますので、修正が大変な作業になります。 (4) どのようなドライブに\販売管理を保存しても、エラーが発生しないように、絶対パス("C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算") で記述した部分を、記述する方法があるのでしょうか? もし、有るならば御教示下さい。 ● 「フォルダ名の記述方法について御教示ください。」と質問(2008/11/30 質問番号:4518725)いたしましたら、 下記のようなご回答、ご指導(回答日時:08/12/04  回答番号:No.4)をいただきました。 >どのパソコンでも使用できるような記述方法があるのでしょうか。 それは、こんな方法です。 Dim myFolder As String Dim UserName As String UserName = Environ("USERNAME") myFolder = "C:\Documents and Settings\" & UserName & "\My Documents\¥販売管理\2009年11月決算\売掛金元帳\" >Environ("USERNAME") これは、単に環境変数を読んでいるだけです。 コマンド・プロンプトで、>Set とすれば、出てきます。 ● この時の ("USERNAME") のように、どのようなケースでも対処出来る記述方法があるのかを、ご教示いただきたいのです。 ☆ 質問者や回答者も自力で答えを見つけようとする人たちが、減ってきた・・・。☆ お叱りを受けるかもしれませんが、宜しくお願い申し上げます。

その他の回答 (11)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.12

こんにちは。 #5のコードは、 >「ドライブ名」を調べましたがわか無いので、数字やアルファベットをを入力したり、試行錯誤がしましたが何を入力すれば良いのか判りませんでした。 ドライブ名というのは、A,C,Z, などの、「C:\.....」のC の部分です。 コードの内容的には、#3さんの考え方を発展したものです。A,C,Z などのドライブ名を入れた後に、それが存在し、なおかつ使える状態かチェックしなければなりません。 でも、実用化するには、その先の部分も必要だと思います。その組み合わせは、それほど難しくはありませんが、あまり、最初の部分でつまずいてしまうと、その先は、難しいかもしれません。

oguno
質問者

お礼

Wendy02様 ありがとうございました。 この質問に関する処理は、とても消化出来そうにもございませんが、色々とご指導いただきました事をふまえ時間をかけて勉強してみます。 取敢えず、締め切らせていただきます。 配慮賜りありがとうございました。 今後とも、宜しくお願い申し上げます。 oguno

回答No.11

MsgBox CreateObject("WScript.Shell").SpecialFolders("MyDocuments") として、ご希望のパスが表示されないのでしょうか?もしそうなら、不思議な環境に思いますが。 まあ、環境変数で「マイドキュメント」を拾うなら Environ("HomeDrive") & "\ & Environ("Path") & "\My Documents" とでもなるのでしょうか。「SystemDrive」とは別だと思います。 いずれにしても、いきなり正解を教えてもらう(鵜呑みにする)より、実際にご自分でいろいろ試された方がいいでしょう。 天才でもない限り、試行錯誤を繰り替えて壁にぶつかりながなら前進した方が身に付きますから。

oguno
質問者

お礼

cistronezk様 ご配慮ありがとうございます。 >いずれにしても、いきなり正解を教えてもらう(鵜呑みにする)より、実際にご自分でいろいろ試された方がいいでしょう。 天才でもない限り、試行錯誤を繰り替えて壁にぶつかりながなら前進した方が身に付きますから。 ● 先ほども、お礼申し上げましたが、試行錯誤しながら、ご指導いただいた事を参考に、頑張って見ます。 また、質問させていただく事になりますが、名前(oguno)を見かけましたら宜しくお願い申し上げます。 oguno

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.10

こんにちは。 最初に、 >☆ 質問者や回答者も自力で答えを見つけようとする人たちが、減ってきた・・・。☆ Google 検索すると、真っ先に、ここのサイトがヒットしますが、その割りに、質問者側が質問だけで、そのままになってしまうことが多いです。 さて、#9様と反応は違いますが、#5の補足の内容は良く分からないです。 何か、誤解されているような気がしています。一度、それぞれの方のコードをチェックしていただくしかないと思います。一応、こちらのコードも完成形になっていますから、そのまま動かしていただければよいはずです。 私のコードが、どのドライブでも、物理的に存在するドライブなら可能なはずで作りましたが、それで、こちらのコードでエラーが出ているというなら、その箇所を示してもらう必要がありますが、書いたコードの全面的なダメ出しされるとなるとさっぱり分かりません。 定数を登録したとして、現実に、そういうパスが見当たらなければ、エラーが出て意味がありませんから、フォルダを作成する前に、事前にチェックしていく必要があって、#5のコードを書いたわけです。 >● この時の ("USERNAME") のように、どのようなケースでも対処出来る記述方法があるのかを、ご教示いただきたいのです。 具体的に、環境変数から取り出すような方法はないと思います。そのために予め環境変数を登録するというような、バッチプログラムのような古い書き方をする必要性もありません。私は、VBAが分からない方でも見ただけで分かるようなユーザー本意のコードは書きません。 今回の場合は、「どのドライブ」という条件では、必ず、その前に、ドライブの存在、次に、フォルダの存在のチェックをしてから、新たなフォルダを作る方法をとりました。 #9様の >「C:\・・・」とハードコードするのはちょっと危険な方法です。 危険ではなく、単にVBA上で、エラーが発生するだけだと思います。 単に、Evniron("SystemDrive") で、システムドライブを取ればよいだけだと思いますが、そこまでは、こちらは考えてはいません。「どのようなドライブにでも」であっても、「どのPCにでも」とは書いていません。 これを組み込みで使っていくので、おそらくは、サブルーチン型などにするのか、いろいろと手を加えなくてはなりませんが、現在の問題が解決しない限りは、二の矢は継げません。

oguno
質問者

お礼

Wendy02様 自分の勉強不足も省みず身分不相応な質問をしてしまい皆様にご迷惑をお掛けし申し訳ございません。 ご容赦ください。 (1) >具体的に、環境変数から取り出すような方法はないと思います。 何かこのような記述方法があるのかと思いご指導をお願いいたしましたが浅はかでした。 一番最初にこのご回答をいただいておればと悔やんでいます・・・・・。 (2) >全面的なダメ出しされるとなるとさっぱり分かりません。 とんでも、ございません(1)の理由に拘ってしまったからです、申し訳ございません。 お腹立ちでしょうがご容赦ください。 (3) >☆ 質問者や回答者も自力で答えを見つけようとする人たちが、減ってきた・・・。☆ プロフィールに書かれておりましたので、今までさんざんご迷惑をお掛けしました私へのご忠告と思っております。 (4) 質問者側が質問だけで、そのままになってしまうことが多いです 意図する所があり、私も締め切らずに残している質問があります。 何時の日か此れを使用する時がくると思っています。 (5) 知識不足 >myDrv = Application.InputBox("ドライブ名を入れてください。" & vbCrLf & "99を入れると自フォルダになります。", "ファルダ作成", Type:=2) >Inputboxへドライブ名を入れてください。 「ドライブ名」を調べましたがわか無いので、数字やアルファベットをを入力したり、試行錯誤がしましたが何を入力すれば良いのか判りませんでした。 最後に、この記述方法をご教示いただければ幸いです。

回答No.9

>4) どのようなドライブに\販売管理を保存しても、エラーが発生しないように、絶対パス("C: \Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算") で記述した部分を、記述する方法があるのでしょうか? どうもお互いに意思疎通がうまくいなないようですね。おっしゃる意味がピンときません。もしかしたら、以下の作業でご希望に叶うでしょうか? (1)Publicのモジュール変数を宣言します 例) Public RootFolder As String (2)マクロの起動時に、設定値シートから「販売管理パス」値を取得し、RootFolderに設定します。 rootFolder = WorkSheets(<アプリ設定値専用シート>).Range(<販売管理のパスを記述したセル>).Value & "\販売管理\0000年00月決算" 以上を既存のマクロに追加します。 (3)VBEにおいて置換をします。 検索する文字列:"C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算 検索後の文字列:RootFolder & "\販売管理\0000年00月決算" & " 対象:カレントプロジェクト として「すべて置換」を実行すれば、「 "C:\Documents and Settings\" & ・・・」の呪縛から開放されると思いますが、如何でしょう? ちなみに、「マイドキュメント」への保存が圧倒的に多いのでしたら、セルに何も記述されていない場合は「マイドキュメント」をデフォルトにします。つまり(2)を以下のようにします。 If WorkSheets(<アプリ設定値専用シート>).Range(<販売管理のパスを記述したセル>).Value = "" Then rootFolder = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") Else rootFolder = WorkSheets(<アプリ設定値専用シート>).Range(<販売管理のパスを記述したセル>).Value & "\販売管理\0000年00月決算" End If #「"C:\Documents and Settings\" & UserName & "\My Documents"」は、「マイドキュメント」のパスです。これは、システムで決められいる特別なフォルダです。上記の方法でそのパスを取得できます。「マイドキュメント」は、Dドライブなどにも設定可能なので、「C:\・・・」とハードコードするのはちょっと危険な方法です。CreateObject("WScript.Shell").SpecialFolders("MyDocuments")などの方法で取得した方が安全です。

oguno
質問者

お礼

cistronezk様 ご回答 No10で次のようなご回答をいただきました。 >具体的に、環境変数から取り出すような方法はないと思います。 ご親切なご配慮あるご指示ご指導をいただきましたが、この件に関しましては、 現在の私の実力では、とても解決出来そうもございませんので取敢えず締め切らせていただくつもりです。 ただ、皆様方のご指導を無にしないよう、今暫く頑張ってみます。 ありがとうございました。 心より、お詫び御礼申し上げます。 oguno

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.8

>まだ、テストをさせていただいておりませんが、御指導いただきましたVBAは、作成した、「\0000年00月決算」の自動保存と理解してよろしいでしょうか。 私が示したVBAの上部を実行すると 1.通常の{ファイルを開く」みたいな窓が開いて 2 ユーザーがフォルダを選択し「開く」ボタンをクリックする 3変数fnameにユーザーが選んだフォルダへのパスを示す 文字列 が代入される。 といいうものです。 通常のフォルダもネットワークじょうのドライブでも、マイドキュメントでも何でも選択できます。 例えばユーザーがマイドキュメントを選択すれば "C:\Docyument and Settings\abc\My Document” (XPでユーザーがabcのとき) という文字列がfnameに代入されます。 この文字列を使ってMkdirなりを使ってフォルダを作るコードを書いたらどうでしょうかといってるのです・ 上記のコードで取得できるのはユーザーが選んだフォルダへのパスを示す ”文字列” だけであることをご理解ください

oguno
質問者

お礼

rivoisu様 ご回答 No10で次のようなご回答をいただきました。 >具体的に、環境変数から取り出すような方法はないと思います。 ご親切なご配慮あるご指示ご指導をいただきましたが、この件に関しましては、 現在の私の実力では、とても解決出来そうもございませんので取敢えず締め切らせていただくつもりです。 ただ、皆様方のご指導を無にしないよう、今暫く頑張ってみます。 ありがとうございました。 心より、お詫び御礼申し上げます。 oguno

回答No.7

>●「\" & UserName &」 のように、プログラム側で他の条件を見て判断 し、「販売管理」の次の階層に「\0000年00月決算」 を作成する事が可能な記述があるのでしょうか 一番気がかりなのはこの点のようですので、参考URLを紹介します。 ・存在しないパスのフォルダを一発で作成する http://officetanaka.net/other/extra/tips07.htm >●「販売管理」を保存する場所は、ユーザが決めます。   こちらの聞き方が悪かったですね、私が確認したいことは、変更頻度でした。 頻繁に保存場所?が変更されるのなら、ダイアログを表示させた方がユーザにとって親切です。 一方、一旦保存場所が決まった後は変更することは滅多にないのでしたら、 シートのどこかに保存しおいて、通常はそこから読み込んだほうがいいと思います。 たまーにある変更時には、そのシートの値を変更するという管理方法です。 後者の場合の例です。 Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" ( _ ByVal hwnd As Long, _ ByVal pszPath As String, _ ByVal psa As Long) As Long Sub フォルダ作成() Dim rootFolder As String, newFolder As String rootFolder=WorkSheets(<アプリ設定値専用シート>).Range(<販売管理のあるフォルダ>).Value & "\販売管理\0000年00月決算" On Error GoTo ERR_MKDIR newFolder = rootFolder & "\売掛金元帳" If Dir(newFolder) = "" Then SHCreateDirectoryEx 0&, newFolder, 0& newFolder = rootFolder & "\買掛金元帳" If Dir(newFolder) = "" Then SHCreateDirectoryEx 0&, newFolder, 0& newFolder = rootFolder & "\管理表" If Dir(newFolder) = "" Then SHCreateDirectoryEx 0&, newFolder, 0& Exit Sub ERR_MKDIR: MsgBox newFolder & "の作成に失敗!", vbCritical End Sub #Declare Function SHCreateDirectoryEx Lib "shell32" Alias ・・・は、標準モジュールの先頭に貼り付けてください。

oguno
質問者

補足

再三にわたりご回答ご配慮賜り感謝いたします。 私の質問の要領が悪く、枝葉の質問から入ってしまったようで申し訳ございません。 再質問のようになってしまい申し訳ございませんが、宜しくお願い申し上げます。 (1)My Documentsに\販売管理 を保存して、VBAで絶対パス("C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算") で記述した場合、Cドライブでは思い通り作業が出来ます。 (2) そのまま、C:ドライブ以外(例えばD:ドライブやZ:ドライブ)に保存し、作業しますと、エラーが発生します。 (3) VBAの中で、絶対パスを多用しておりますので、修正が大変な作業になります。 (4) どのようなドライブに\販売管理を保存しても、エラーが発生しないように、絶対パス("C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算") で記述した部分を、記述する方法があるのでしょうか? もし、有るならば御教示下さい。 ご迷惑をお掛けいたしますが、今一度ご教示の程お願い申し上げます。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.6

作成するフォルダをどこに作るかはユーザーが選ぶということでしたら fname="" With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = FLDname 'デフォルト .AllowMultiSelect = False If .Show = True Then fname = .SelectedItems(1) End If End With これは組み込みダイヤログでexcelで通常の「ファイルを開く] 処理のようにファイルやフォルダを指定できます。 (上記のコードはフォルダ選択) ユーザーがキャンセルしたらfname=””となります 選択されていれば Mkdir=fname & "\販売管理\0000年00月決算" 以下フォルダ作成できると思いますが。

oguno
質問者

補足

ご回答ありがとうございます。 >作成するフォルダをどこに作るかはユーザーが選ぶということでしたら ●「販売管理」を保存する場所は、ユーザが決めます。   但し、作成した、「\0000年00月決算」フォルダーは、再上位フォルダーに自動的(プログラムで)に保存したいと言う事です。 まだ、テストをさせていただいておりませんが、御指導いただきましたVBAは、作成した、「\0000年00月決算」の自動保存と理解してよろしいでしょうか。

回答No.4

まだ状況が飲み込めないのですが、 "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算" Z:\5TM\販売管理\0000年00月決算 D:\販売管理\0000年00月決算 「Sub フォルダ作成()」の中で、3ドライブ全部にフォルダを作成する必要があるのですか? それとも3ドライブのうちのどれか一つだけですか?もしひとつだけなら、それはユーザが決めるのですか?あるいは、プログラム側で他の条件を見て判断しなといけのでしょうか?

oguno
質問者

補足

初心者のためご迷惑をおかけします、再度のご指示ありがとうございます。 MkDir "C:\Documents and Settings\" & UserName & "\MyDocuments \販売管理\0000年00月決算" (1) 上記に記述しました 「\" & UserName &」 は通常固有名詞か Administratorとなっていると思いますが、「\" & UserName &」 と記述する事で、どのような名称でもエラーは発生しないと御指導を受けました。 ドライブ名が複数あったり、「販売管理」を保存する階層が異なっても、「販売管理」の次の階層に「\0000年00月決算」を作成する事が可能な記述が出来ればと考えていますが、可能なのでしょうか? 例えば、Zドライブでも Z:\5TM\販売管理\0000年00月決算 や Z:\販売管理\0000年00月決算など。 >(2) それとも3ドライブのうちのどれか一つだけですか?もしひとつだけなら、それはユーザが決めるのですか?あるいは、プログラム側で他の条件を見て判断しなといけのでしょうか?      ●使用する所、パソコンは一箇所づつです。その状態が複数発生します。 ●「販売管理」を保存する場所は、ユーザが決めます。   ●「\" & UserName &」 のように、プログラム側で他の条件を見て判断 し、「販売管理」の次の階層に「\0000年00月決算」 を作成する事が可能な記述があるのでしょうか      *myPathを使用すれば可能なのかと考えましたが、手がつけられません。 (3) ご指示にも、的確にご返事出来ませんが宜しくお願い申し上げます。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.3

dim tgtdrv as string dim cdrv as string dim ddrv as string dim zdrv as string dim res as string cdrv=MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\買掛金元帳" ddrv="D:" zdrv=Z:\5TM res=inputbox("ドライブは?” select case res case "c" tgtdrv=cdrv case "d" tgtdrv=ddrv case "z" tgedrv=zdrv case else msgbox("ドライブが違います”) end select Mkdir tgtdrv & "販売管理\0000年00月決算\管理表" ではいかがですか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 半年ぶりになりますね。私は、まだ書いています。 >どのドライブでも使用出切る記述方法があれば御教示お願い致します。 としたら、ユーザー選択のダイアログを取り付ける方が早いのではないでしょうか。 '-------------------------------------------  Sub Test1()   Dim Sel_Folder As Object   Dim Sel_Path As String   Const ssfWINDOWS As Long = 36   Set Sel_Folder = CreateObject("Shell.Application"). _     BrowseForFolder(0, "フォルダを選択してください", 0, ssfWINDOWS) 'フォルダ名の取得   If Not Sel_Folder Is Nothing Then     Sel_Path = Sel_Folder.Items.Item.Path     MsgBox Sel_Path   End If   Set Sel_Folder = Nothing  End Sub

関連するQ&A

  • フォルダ名の変更方法を教えてください。VBA

    セルH14に年度が入力してあります。 → (例)  2009 セルK14に月が入力してあります。 → (例)  11 このセルH14の値を yyyy に,セルK14の値を mm に入れたフォルダ名に変更したいのですが可能でしょうか、 御教示御願申し上げます。 Sub フォルダ名の変更() Name "C:\Documents and Settings\aaa\My Documents\販売\0000年00月決算" _ As "C:\Documents and Settings\aaa\My Documents\販売\yyyy年mm月決算"   下記のように ↓ ' As "C:\Documents and Settings\aaa\My Documents\販売\2009年11月決算" End Sub

  • フォルダ名の記述方法について御教示ください。VBA

    いつも御指導ありがとうございます。 皆様に御指導いただきながら、得意先別元帳の項目(前月残・当月入金・売上・残高等)の金額を取得して売掛金管理表を作成しています。 得意先別元帳のフォルダ名を年度(yyyyの部分)としている為に、変更しないと毎年使用できません。 売掛金管理表のセル(L5)に、年度が記載されていますので、それを利用してみましたが上手く出来ません。 変更しないで処理出来るようにするための記述を御教示御願申し上げます。 ●フォルダ構成 C:\Documents and Settings\aaa\My Documents\販売\yyyy年11月決算\売掛金元帳 ー 各得意先ファイル C:\Documents and Settings\aaa\My Documents\販売\yyyy年11月決算\管理表 ー 売掛金管理表と買掛金管理表ファイル Sub GetDatainFolder6() '管理表の作成 Dim i As Long Dim Fname As String Dim ans As Variant DoEvents Const myFolder As String = "C:\Documents and Settings\aaa\My Documents\販売\yyyy年11月決算\売掛金元帳\" Fname = Dir(myFolder & "*.xls") Do Until Len(Fname) = 0 FormPickUP Range("C6").Offset(i), myFolder & Fname, "6月" Range("C6").Offset(i).Resize(, 7).Value = _ Range("C6").Offset(i).Resize(, 7).Value Range("D6").Offset(i).Value = Mid(Fname, 1, InStrRev(Fname, ".") - 1) '拡張子は取る i = i + 1 Fname = Dir() Loop End Sub Function FormPickUP(rng As Range, ByVal myBk As String, ByVal mySh As String) 省略 End Function 宜しく御願いいたします。

  • リンクのVBAを教えてください。

    いつも、御指導ありがとうございます。 売掛金元帳のセル(J3)に数式1で、[得意先登録.xls]得意先登録から社名を表示させています。 ●数式1  '=IF($C$2="","",IF(ISERROR(VLOOKUP($C$2,'C:\Documents and Settings\aaa\My Documents\販売管理 \登録 (台帳)\[得意先登録.xls]得意先登録'!$D$7:$E$65536,2,FALSE)),"未登録です", VLOOKUP($C$2,'C:\Documents and Settings\aaa\My Documents\販売管理 \登録 (台帳)\[得意先登録.xls]得意先登録'!$D$7:$E$65536,2,FALSE))) 売掛金元帳のセル(E2)に数式2で、[自社情報登録.xls]自社情報'!$C$3から自社名を表示させています。 ●数式2  '='C:\Documents and Settings\aaa\My Documents\販売管理\登録 (台帳)\[自社情報登録.xls]自社情報'!$C$3 ●数式1及び数式2をVBAで記述したいのですがど、うしても記述出来ません。 ●まるなげになってしまいますが、数式1及び数式2と、社名変更があった場合は売掛金元帳へ反映させるVBAを教えてください。 宜しく御願いいたします。

  • VBAマクロ、パスがありませんでとまります。

    Excel2003 VBAのコードを作成して、 実行しましたら ”実行時エラー'76' パスが見つかりません。" と表示されて Open pase ...... の行でとまってしまいます。 なにが原因とかんがえられますか? すいませんが、ご回答よろしくおねがいいたしますm(_ _)m Sub Macro1() Dim strarray() As Variant Dim counter As Integer Dim i As Long pase="C:\Documents and Settings\user\My Documents\" myname=Dir("C:\Documents and Settings\user\My Documents\",vbNormal) Do While myname <> "" If (GetAttr("C:\Documents and Settings\user\My Documents\" &_ myname) And vbNormal) = vbNormal Then ReDim Preserve strarry(counter+1) strarray(counter) = myname counter = counter + 1 End If myname = Dir Loop For i = 1 to counter Open pase & strarray(i) For Input As #1 Do Until EOF(1) ・ '処理 ・ ・ Loop Next i

  • アクセスする方法

    telnet でアクセスしようとすると拒否されます。 どうしたらアクセスできるでしょうか? ログインユーザーは管理者権限を持っています。(ビルドイン) myDoc対象ユーザーも管理者権限を持っています。 C:\Documents and Settings\*****>cd My Documents アクセスが拒否されました。 C:\Documents and Settings\*****>cacls "My Documents" C:\Documents and Settings\*****\My Documents アクセスが拒否されました。 C:\Documents and Settings\*****>cacls "My Documents" /t /p administrator:F よろしいですか (Y/N)?y アクセスが拒否されました。 普通は(OI)(CI)(IO)F とか出てきますよね。

  • エクセル VBA バッチが動かない。

    以下のVBAを試行錯誤の末(未熟なもので・・) 作ってみました。 デスクトップ上のフォルダを確認にて、存在する場合はそのままバッチ実行、 存在しない場合はフォルダを作成してバッチ実行。 というものなのですが、フォルダが存在する場合はすんなり行くのですが、 存在しない場合、フォルダを作成した後、バッチ処理がされなくて 困っています。どこが悪いのでしょうか? 是非ご教授お願いいたします。 ちなみにバッチはXCOPYです。 Sub SET_Original() Dim strPATHNAME As String strPATHNAME = "C:\Documents and Settings\ユーザー\デスクトップ\フォルダ" If StrConv(strPATHNAME, vbUpperCase) = "FALSE" Then Exit Sub If Dir(strPATHNAME, vbDirectory) = "" Then MsgBox "フォルダは作成します。", vbExclamation MkDir "C:\Documents and Settings\ユーザー\デスクトップ\フォルダ" Exit Sub End If Dim str As Variant str = Shell("c:\Documents and Settings\ユーザー\デスクトップ\copy.bat") End Sub

  • excel vba

    excel VBA (質問1) B7 セルに,DOC20071201_1231.xlsとはいっているとき下記の動作と同様のことをB7を使って表現するにはどうすればいいか。 Sub bookwo_open() Workbooks.Open Filename:="C:\Documents and Settings\taktta\My Documents\Log zzz\2007 log\2007年報告\2007年12月分\" & "DOC20071201_1231.xls" End Sub (質問2) A1セルに7とはいっているとき、B7セルに入っているファイルをオープンするには、どうすればいいか。 (A1セルにnとはいっているとき、Bnセルに入っているファイルをオープンするには、どうすればいいか。)

  • VBAで統合ができない・・・。

    エクセルのマクロの記録で作ったコードですが、実行すると「開けません」と出ます。 どこがいけないのでしょうか? Sub Macro2() Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\abcd\My Documents\2011\新規[対象2010.12.xls]店別集計'!R3C4:R69C10" _ , _ "'C:\Documents and Settings\abcd\My Documents\2011\新規\[対象2011.01.xls]店別集計'!R3C4:R69C10" _ ), Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:= _ False End Sub

  • 相対パスでも絶対パスでもない参照の記述方法?

    C:\Documents and Settings\user_name\デスクトップ\index.html の<head>内に、 <link rel="stylesheet" href="/css/style.css" type="text/css"> と書かれているのですが、注視すると、 href="css/style.css"  でも href="./css/style.css"  でも href="../css/style.css"  でもなく、 href="/css/style.css"  なんです。これって、何処を指していますか? C:\Documents and Settings\user_name\デスクトップ\index.html に対し、 C:\Documents and Settings\user_name\デスクトップ\css\style.css と置いてもstyle.cssは効きませんでした。 index.htmlをhogeディレクトリに入れて C:\Documents and Settings\user_name\デスクトップ\hoge\index.html C:\Documents and Settings\user_name\デスクトップ\css\style.css としても、style.cssを読み込みませんでした。 何でそんなことを聞くかというと、http://www.nikkansports.com/ のソースがそうなっています。例えば28行目の↓とか。 <script type="text/javascript" src="/js/css-home.js"></script> style.cssを、何処におけばいいのでしょうか?

    • ベストアンサー
    • HTML
  • DOSコマンドで相対パスの取得の方法がわかりません。

    ファイルパスが C:\Documents and Settings\ユーザー名\My Documents\My Music を My Music だけを取り出す方法が見つかりません。 どのように操作したら相対パスを取得することができるのでしょうか?

専門家に質問してみよう