
お世話になります。
苦労しながらもエクセル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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
複数ファイルから特定シートの...
-
Excelファイルをダブルクリック...
-
VBAでブックを非表示で開いて処...
-
エクセルファイルをオープンし...
-
Excelで複数ブックの同一セルに...
-
Excel起動時に特定のワークシー...
-
ブックのピボットを別ブックに...
-
【マクロ】【画像あり】❶ブック...
-
エクセルファイルを開かずにpdf...
-
VBAでブック保護非保護を判定す...
-
【マクロ】【画像あり】ファイ...
-
リンク元ブックのPWが分からな...
-
Excelの外部参照しているセルが...
-
指定ファィルの指定シートをシ...
-
クロムブックとクロームブック...
-
Excel(2010)のフィルターが保...
-
エクセルの「ウィンドウ→表示し...
-
MSアクセスのインポート手法(パ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
【マクロ】【画像あり】ファイ...
-
【マクロ】【画像あり】❶ブック...
-
Excelファイルをダブルクリック...
-
エクセルで参照しているデータ...
-
WorkBooksをオープンさせずにシ...
-
フォルダ内の複数ファイルから...
-
Excel(2010)のフィルターが保...
-
複数ファイルから特定シートの...
-
エクセルでウィンドウの枠固定...
-
Excelで複数ブックの同一セルに...
-
同じフォルダへのハイパーリン...
-
エクセルを開くと最大化などの...
-
ブックのピボットを別ブックに...
-
vbaでpdfを開いて1ページ目のみ...
-
Excelでブックの共有を掛けると...
-
指定ファィルの指定シートをシ...
-
エクセルにおける,「ブック」...
おすすめ情報