![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
苦労しながらもエクセルVBAをいじっています。仕事の効率を上げるために、VBAで自動化をしていますが、わからないことがありますので教えてください。
月ごとのシートを作成して、その月に完成させたプロジェクトのリストを入力するブックを作り、各契約者に配りたいと思っています。そのブックには、報告書提出を簡素化できるように、作成したい該当月のシートだけを抽出して決められた名前で保存し、電子メールに添付して送信できる状態にした報告書作成のプログラムを組んでいます。が、抽出されたシートだけのブックを、オリジナルのブックがあるフォルダと同じところに保存したいんです。"名前を付けて保存"をVBAに設定すると、絶対パスが必要な要ですし、もしも指定しなければ作業フォルダ(カレントフォルダ)に保存されるようですが、何とかしてオリジナルのブックと同じフォルダに保管できないものでしょうか。
どうぞよろしくお願いします。
ちなみに、下記が自分なりにやってみたものです。
---------------------------------
Private Sub CommandButton1_Click()
Dim myName As String
Dim pasu As String
With ListBox1
If (.ListIndex = -1) Then
MsgBox "提出用報告書を作成するシートを選択してください"
Else
Worksheets(.List(.ListIndex)).Select
pasu = ActiveWorkbook.Path
ActiveSheet.Copy
myName = ActiveSheet.Name
ActiveWorkbook.SaveAs Filename:= _
"" & myName & "" & Application.UserName & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Unload UserForm2
End If
End With
End Sub
No.3ベストアンサー
- 回答日時:
こんにちは。
ChDir も一つの考え方かもしれませんが、
シート1つのブックが出来上がって、そのActiveWorkbookと同じ場所に保存するなら、作ったpasu を加えればよいのではありませんか?
pasu = ActiveWorkbook.Path
ActiveSheet.Copy
myName = ActiveSheet.Name
Fname = pasu & "\" & myName & Application.UserName & ".xls"
ActiveWorkbook.SaveAs Filename:= Fname, _
FileFormat:=xlNormal, _
Password:="", _
WriteResPassword:="", _
ReadOnlyRecommended:=False, _
CreateBackup:=False
それから、なるべく、コードは見やすいように整列して書くことが上達の早道と言われています。
なお、読み違えていましたら、申し訳ありません。
No.5
- 回答日時:
半角スペースは詰められるんですよね>整列
なお、各パスを返すプロパティはルートディレクトリだと最後に"\"が入りますので考慮が必要です。そうでないとパス名で終わって、"\"は入らないんですけどね。
No.4
- 回答日時:
こんにちは。
KenKen_SP です。> オリジナルのブックと同じフォルダ
このオリジナルというのが、何なのかよく分からないのですが、
ThisWorkbook.Path
でコードが記載されたブックのパスが返ります。
ActiveWorkbook.Path は現在アクティブになっているブックの
パスが返されます。
このどちらかで対応できませんか?
どうもありがとうございました。初心者なもので、わかりにくいこともあったかと思いますが、親切に教えていただきまして、ありがとうございました。
No.2
- 回答日時:
今、環境が手元に無いので未検証ですが^^
'参考URLより
phn = ActiveWorkbook.Path
dva = Left(phn, 2)
dra = Mid(phn, 3)
ChDrive dva
ChDir dra
'質問文より
ActiveWorkbook.SaveAs Filename:= _
"" & myName & "" & Application.UserName & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Unload UserForm2
参考URL:http://www2s.biglobe.ne.jp/~iryo/vba/VBA14.html# …
No.1
- 回答日時:
カレントフォルダを変更してはどうでしょうか?
ActiveWorkbook.Pathからドライブ名とパス名をそれぞれ拾って、ChDrive と ChDir で変更すればよいのでは?
必要なら、変更前のカレントフォルダ(作業フォルダ)を保存しておいて、VBA終了時に元に戻してはどうでしょうか?
参考URL:http://www2s.biglobe.ne.jp/~iryo/vba/VBA14.html# …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
【VBA】マクロの入ったファイルと同じフォルダに,出力したファイルを保存するコードについて
Visual Basic(VBA)
-
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
EXcelのマクロで相対パスでファイルを開く
その他(Microsoft Office)
-
-
4
SaveAsの保存先について
Visual Basic(VBA)
-
5
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
6
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
7
ExcelVBAでカレントディレクトリのファイルを開く方法は?
Excel(エクセル)
-
8
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
9
VBAで複数のブックを開かずに処理する方法
Visual Basic(VBA)
-
10
Excel 相対パス
Excel(エクセル)
-
11
ActiveWorkbook.Pathの一つ下のフォルダ
Excel(エクセル)
-
12
ActiveWorkbook.Pathの一つ上
PowerPoint(パワーポイント)
-
13
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
14
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
15
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルで50行ごとに区切った...
-
エクセル 複数のブックを一度...
-
ブックのピボットを別ブックに...
-
エクセルで参照しているデータ...
-
同じフォルダへのハイパーリン...
-
エクセルにおける,「ブック」...
-
エクセルの「ウィンドウ→表示し...
-
WorkBooksをオープンさせずにシ...
-
エクセルでウィンドウの枠固定...
-
エクセルで別ブックをバックグ...
-
Excel(2010)のフィルターが保...
-
エクセルで「ディスクがいっぱ...
-
Excelファイルをダブルクリック...
-
ワードやエクセルで「時間が来...
-
エクセル2013 すべてのにシート...
-
【マクロ】for nest について ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
エクセルで参照しているデータ...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
【マクロ】【VBA】別ブックへの...
-
Excelで複数ブックの同一セルに...
-
エクセルにおける,「ブック」...
-
エクセルで50行ごとに区切った...
-
エクセルファイルを開かずにpdf...
-
Excel(2010)のフィルターが保...
-
エクセルで「ディスクがいっぱ...
-
エクセル2016です。「ブッ...
-
エクセルでウィンドウの枠固定...
-
外部ブック参照が#REF!になって...
-
エクセルで別ブックをバックグ...
-
エクセルシートの一部を送りたい
-
ブックのピボットを別ブックに...
-
複数ファイルから特定シートの...
おすすめ情報