- ベストアンサー
フォルダ名の記述方法について御教示ください。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 宜しく御願いいたします。
- みんなの回答 (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 とすれば、出てきます。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 基本的なことですが、 >Const myFolder As String = _ > "C:\Documents and Settings\aaa\My Documents\" & Cells(12, 5).Value & "年11月決算\売掛金元帳\" こんなことは出来ないと思います。myFolder は、定数ですから、変数を代入することは出来ません。 -------------------------------- Dim myFolder As String Dim iNen As Variant '<-特に、Variant の必要はないけれども・・・ Dim iMon As Variant iNen = Worksheets("売掛金管理表").Range("L5").Value 'それとも、E12 か分かりませんが。'Format$(iNen,"0000") iMon = 11 'Format$(11,"00") myFolder = "C:\Documents and Settings\aaa\My Documents\販売\" & iNen & "年" & iMon & "月決算\売掛金元帳\" ---------------------- ただし、 iNen =Worksheets(売掛金管理表).Range("L5").Value この内容は、正確には明らかにされていませんから、Format 関数が必要かは、ご自身で加工してください。
- xls88
- ベストアンサー率56% (669/1189)
変数化するのは年度数だけですね。 Const myFolder As String = _ "C:\Documents and Settings\aaa\My Documents\" & Cells(12, 5).Value & "年11月決算\売掛金元帳\" でどうでしょうか。
お礼
xls88様 .”コンパイルエラー定数式が必要です”とのエラーメッセージが表示され、Valueが選択されました。 知識の無さ故の拙い質問の為御迷惑を御掛け致しました。 また、御丁寧に御指導いただきました事、感謝申し上げます。 今後とも、宜しく御願いいたします。
- xls88
- ベストアンサー率56% (669/1189)
>売掛金管理表のセル(L5)に、年度が記載されていますので、 >それを利用してみましたが上手く出来ません。 その失敗したコードを掲載することはできないでしょうか。
補足
xls88様 早速ご覧いただき御指示ありがとうございます。 Const myFolder As String = "C:\Documents and Settings\aaa\My Documents\Cells(12, 5) & "年" & "11月決算"\売掛金元帳\" 上記のように記載しましても、すぐ下記のように変ります。 Const myFolder As String = "C:\Documents and Settings\aaa\My Documents\& Cells(12, 5) & "年" & "5月決算"\ 売掛金元帳 \ "" "・\ ・ 売掛金元帳・ \ ・"" の ・の部分にスペースが入り、”が2個になっています。 F8で実行しますと、\ 売掛金元帳 \の 売掛金元帳 に変数が定義されていないと表示されます。 御指示がございましたので、この記述方法でも可能性が有るのかと思い、下記のように修正したりしていましたので遅くなりました。 Format(Cells(12, 5) & "年") 記述の誤謬なのか、考え方の間違いなのかすら判らなくなってしまいました。 宜しく御願いいたします。
お礼
Wendy02様 お久し振りで御座います。 またこの度は、お目に留めていただき御指導賜りありがとうございました。 思い通りの処理が出来ました、感謝申し上げます。 質問番号:3860849では、14回にわたり御指導いただきましたこと御礼申し上げます。 7月に下記のような書き込みをさせていただき、また休んでしまいました。 体調も大分回復しましたので11月中頃からまた勉強を始めました。 Wendy02 さんのプロフィールは時々拝見させていただいております。 今後も、御指導の程宜しく御願いいたします。 Wendy02様 ご無沙汰いたし申し訳御座いません。 あれから、早三ヶ月が過ぎてしまいました。 花期は既に過ぎました庭の娑羅の木を眺めました時のメモです。 一つ咲き 一つ散り行く 夏椿 三月も放置していたにもかかわらず、Gooさんから何のご指摘も無かったのは、Wendy02様の御配慮があったものと感謝申し上げます。 このまま締め切りをさせていただくのは、心残りがございます。 それは、当期の管理表(売掛金管理表及び買掛金管理表)の期末シート(5月シート)の残高を、来期の元帳(売掛金元帳・買掛金元帳)の6月シートのJ11に表示するところまで作成したかったからです。 ★考えていました事 1.御指導いただきましたように管理表を作成する 2.管理表の5月シートに「残高移行」ボタンを設置する 3.「残高移行」ボタンをクリックすることにより下記処理をする。 ・管理表の5月シートの社名(D6:D205)と、同じ社名の売掛金元帳ファイルがあるか検索し、あれば売掛金元帳ファイルのJ11に管理表の残高(J6:J205)を表示する ・なければ、「MsgBox "元帳なし・111 徳川家康.xls"、vbOKOnly」を表示し、「OK]で検索を続ける まるなげの形になってしまいますが、宜しく御願申し上げます。
補足
Wendy02様 以前から考えていたのですが、御教示いただいたような方法で、 使用するパソコンによって、フルパス(?)を修正しなくても、 どのパソコンでも使用できるような記述方法があるのでしょうか。 "C:\Documents and Settings\AAA\My Documents¥販売管理\2009年11月決算\売掛金元帳\" "C:\Documents and Settings\Administrator\My Documents\¥販売管理\2009年11月決算\売掛金元帳\" AAAAやdministrator(ユーザーアカウント?)の部分 御多忙のところ、追加質問のようになり申しわけございません。