お世話になります。
VBA初心者なりにマクロの自動記録などで作業しておりますが、自動記録でできない作業を一つ教えてください。
現在作業しているフォルダは、Activeworkbook.Pathなどで指定できますが、その一つ上の階層に保存したいという場合、どう指定すればよいのでしょうか? 自動保存だと"Documentos and Settinng~"などから始まるファイルパスになりますが、ファイルを保存するフォルダは各人によってまちまちですので、自分が保存したフォルダの一つ上という指定をしたいのです。そのような方法があれば教えてください。
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
回答番号:No.5 merlionXXです。
> プロシージャの呼び出しが不正と出ます。
それは、ActiveWorkbook.Path が取得できない、つまりまだ保存前の新規BOOKで実行したせいではないかと思います。
エラーを回避するようにしてみました。
If ActiveWorkbook.Path = "" Then
x = ""
Else
x = Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1)
End If
ActiveWorkbook.SaveAs Filename:=x & "\test.xls"
なるほど、まだ保存前のBookじゃActiveWorkbook.Pathが取得できないはずですね。さすがのご指摘、ありがとうございます。
しかしエラー回避のコードでやってみましたが、X=""の時、testファイルはドライブの一番上の階層に保存されてしまいました。
そこで、最初に
ChDir Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1)
でPathを取得しといてから作業するとうまくいきました。
わずか1行で取得できたので、こちらの記述を使用したいと思います。
おせわになりました。ありがとうございました。
No.5
- 回答日時:
> Msgboxでは、確かに一つ上の階層が取得できています。
しかし、そこに保存させるところができません。#2 merlionXXです。
取得できれば保存は簡単だと思いますが・・・・。
ActiveWorkbook.SaveAs Filename:=Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1) & "\test.xls"
この回答への補足
んー、残念ながらうまくいきません。
プロシージャの呼び出しが不正と出ます。
何か、根本的な間違いをしているのでしょう。折角教えていただいたのに申し訳ないです。
No.4
- 回答日時:
>の前に上記の記述をしただけではいけないのでしょうか?。
だめです。
保存先を指定する場合は、ファイル名の前にパス名も一緒に指定します。
Dim TmpPath As String
TmpPath = ThisWorkbook.Path
If InStrRev(TmpPath, "\") <= 3 Then
TmpPath = Left(TmpPath, 2)
Else
TmpPath = Left(TmpPath, InStrRev(TmpPath, "\"))
End If
ActiveWorkbook.SaveAs Filename:=TmpPath & "\test.xls"
たびたびのご回答ありがとうございました。
無事、目的のものができました。
自分でも作れるように、精進していきます。
本当にありがとうございました。
No.3
- 回答日時:
こんなのでも。
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.getparentfoldername(ThisWorkbook.Path)
Set FSO = Nothing
No.2
- 回答日時:
Sub test()
MsgBox Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1)
End Sub
で取得できました。
この回答への補足
早速のご回答ありがとうございます。
Msgboxでは、確かに一つ上の階層が取得できています。しかし、そこに保存させるところができません。
上記のあとに
ActiveWorkbook.SaveAs Filename:="test.xls", FileFormat _~
を書くだけではだめなんでしょうね。
No.1
- 回答日時:
>どう指定すればよいのでしょうか?
取得したパスから文字列関数を使って必用な文字列を取出します。
Dim TmpPath As String
TmpPath = ThisWorkbook.Path
Debug.Print TmpPath
If InStrRev(TmpPath, "\") <= 3 Then
TmpPath = Left(TmpPath, 2)
Else
TmpPath = Left(TmpPath, InStrRev(TmpPath, "\"))
End If
Debug.Print TmpPath
この回答への補足
早速のご回答ありがとうございます。
試してみましたが、ドライブの最初の階層に保存されてしまいます。私が基本的なことが分かっていないからだと思いますが。
ActiveWorkbook.SaveAs Filename:="test.xls", FileFormat _
の前に上記の記述をしただけではいけないのでしょうか?。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
高校三年生の合唱祭で何を歌いましたか?
大人になると大人数で合唱する機会ってないですよね。 思い出すと、高校三年生の合唱祭が最後でした。 そこで、みんなの思い出の合唱曲を知りたい!
-
ActiveWorkbook.Pathの一つ上
PowerPoint(パワーポイント)
-
ActiveWorkbook.Pathの一つ下のフォルダ
Excel(エクセル)
-
EXcelのマクロで相対パスでファイルを開く
その他(Microsoft Office)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
7
【VBA】マクロの入ったファイルと同じフォルダに,出力したファイルを保存するコードについて
Visual Basic(VBA)
-
8
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
9
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
12
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
13
エクセルVBAでブックを相対パスで保存する
Excel(エクセル)
-
14
VBAで文字列を数値に変換したい
Excel(エクセル)
-
15
エクセル 一つ上の階層の別フォルダのファイル名
Excel(エクセル)
-
16
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
17
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
18
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
19
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
20
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで一つ上の階層...
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
コマンドプロンプトのコピー関...
-
リストボックスにファイル名の...
-
【VBA】ExcelマクロでCSVファイ...
-
fopenでのパス指定
-
VBAで、VBのapp.pathと同じ機能...
-
opencvプログラミング エラー
-
C#でのProcess.Startと変数path
-
ExcelVBAの使い方 ¥の使い方...
-
実行ファイルのパスを取得したい
-
VBAでパワーシェルを実行したい...
-
Cの関数で自分自身のパス取得
-
ExcelのVBAで上書き保存を確...
-
VBA★PDFをPDFアプリで印刷し...
-
VBAとロングファイル名
-
VBAでファイル名の取得方法
-
エクセルのマクロで特定フォル...
-
SendKeysステートメント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
エクセルVBAで一つ上の階層...
-
【VBA】ExcelマクロでCSVファイ...
-
xcopyコマンドの進行状況を表示...
-
コマンドプロンプトのコピー関...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
Eclipse
-
【VB.NET】App.configにファイ...
-
EXCEL(VBA)で指定フォルダ内の...
-
ExcelVBAの使い方 ¥の使い方...
-
C#でのProcess.Startと変数path
-
VBS パスに変数を入れたい
-
ExcelのVBAで上書き保存を確...
-
SaveAsの保存先について
-
VBAでパワーシェルを実行したい...
-
fopenでのパス指定
-
実行ファイルのパスを取得したい
-
パスワード保護されたExcelファ...
おすすめ情報