• ベストアンサー

マクロ

下記のマクロがあります。 filname = Application.GetSaveAsFilename("テスト","Microsft Excelブック *.xls,(*.xls)", 1, "データファイルを保存") filnameには絶対パスとファイル名が取得されると思うのですが、 それを分けて取得したいのです。 分けて取得は出来るのでしょうか。 一旦filnameで取得しておいて、 それから分ける、という方法が一番ベストなのですが…。 どなたかご存知の方ご教授願います。 宜しくお願い致します。

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

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

こんばんは。 FileSystemObject を使ってもよいのですが、以下ように関数ですれば、簡単に取れます。 Dim filename As Variant filename = Application.GetSaveAsFilename("テスト", "Microsft Excelブック *.xls,(*.xls)", 1, "データファイルを保存") If filename = False Then Exit Sub MsgBox Mid$(filename, InStrRev(filename, "\") + 1)

fukuzyusou
質問者

補足

早速のご回答ありがとうございます。 早速やってみました。 マクロはまだ初心者なので何処が変わっているのかが分かりません。 結果は同じように出てきます。

その他の回答 (1)

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

#1の回答者です。 >結果は同じように出てきます。 それは、関数の命令で同じにように出ることなど、ありえないです。ステップ・イン・モードで、調べてみてください。 MsgBox Mid$(filename, InStrRev(filename, "\") + 1) このレベルが出来ないと、本当の最初の貼り付けるところからになってしまいますが、それだけは避けたいです。

fukuzyusou
質問者

お礼

分かりました。 ご丁寧な回答ありがとうございました。

関連するQ&A

  • エクセルマクロでファイルオープンでシートカットが使えない

    エクセルマクロでファイルオープンでシートカットが使えない エクセルのVBAマクロについて教えて下さい。 ”Application.GetSaveAsFilename”にてファイルを指定して、”Workbooks.OpenText Filename”にてファイルをオープンするときに、”Application.GetSaveAsFilename”にて指定したファイルがシートカットの時にエラーで停止する。 もし、”Application.GetSaveAsFilename”が実際のファイルの場合には、エラーで停止しない。 ■実際のVBA aFile = Application.GetSaveAsFilename(InitialFileName:=TaskF & "\" & "*.xls", FileFilter:="Excel(xls)ファイル (*.xls),*.xls") Workbooks.OpenText Filename:=aFile  ←左記の箇所でエラー停止する。

  • エクセルのマクロでファイルを開く

    エクセルの「ファイルを開く」ダイアログボックスを使用してファイルを開き、その開いたファイルに対してとあるマクロを実行させたいと思っています。 エクセルの「ファイルを開く」ダイアログボックスでパス取得までは理解出来たのですが、その先の処理が分かりません。 「ファイルを開く」と言うのは、「現在アクティブになっているシートにデータを貼り付けて」の処理でも構いません。 Dim Ret As Variant Ret = Application.GetOpenFilename("Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt") If Ret = False Then MsgBox "キャンセルが選択されました。" Exit Sub Else       'ここにRetで取得しているパスのファイルを開いて、sub_WAITのマクロを実行させたいです。 sub_WAIT.Show End If End Sub

  • Excel VBA で困っています。

    Excel VBA で困っています。 下記のプログラムで、「名前を付けて保存」→「キャンセル」 を選択した場合のエラーは回避できたのですが、 「名前を付けて保存」→「保存」→「同じ名前のファイルが既に ありますが置き換えますか?」→「いいえ(またはキャンセル)」 の時にエラーが出てしまいます。 どう直したら良いでしょうか。 よろしくお願いいたします。 Public Sub SaveBook() Dim myBook As Variant '「名前を付けて保存」ダイアログ myBook = Application.GetSaveAsFilename("test.xls", _ "Excelファイル,*.xls", , "Excelブックを保存") 'キャンセル時の処理 If StrConv(myBook, vbUpperCase) = "FALSE" Then Exit Sub 'ブックの保存 ActiveWorkbook.SaveAs Filename:=myBook End Sub

  • カレントブックのファイル名の取得

    早速ですが。 カレントブック(例:test.xls)の名前をどうやって取得できますか。 マクロ(code)にカレントブック名を固定値(test.xls)で指定していますが、 下記のように、改善したいと思いますが、 ================================= test.xlsのマクロに PCvsFileName="test.xls" Windows("PCvsFileName").Activate ================================= 該当xlsファイル名は常に変わるから、カレントブックのファイル名の取得方法が 知りたいです。 よろしくお願いします。

  • アクセス マクロ コマンドラインって?

    ヘルプを見てもよくわからないので教えてください。 アクセス2003のマクロの機能で 「アプリケーションの実行」を行いたいのですが コマンドラインには何を入れればいいでしょうか? テストとして デスクトップにあるエクセルファイルのパス C:\Documents and Settings\ユーザー名\デスクトップ\test.xls をマクロのデザインのコマンドラインのところに入れて、マクロ1を保存し ダブルクリックして開いてみたら --------------------------------------------------------- “RunApp/アプリケーションの実行”アクションを使ってアプリケーションを起動 アプリケーションのパスが正しく制定されていないか、 アプリケーションのコンポーネントが不足しています。 Windowsエクスプローラーまたはファイルマネージャで アプリケーションのパスを確認してください。 --------------------------------------------------------- というメッセージが表示されてしまいました。 C:\Documents and Settings\ユーザー名\デスクトップ\test.xls を “C:\Documents and Settings\ユーザー名\デスクトップ\test.xls” にしても同じです。 ヘルプを見ると >アプリケーションの起動に使用するコマンド ラインを指定します。 パスの指定や、アプリケーションを特定のモードで実行するスイッチなどのパラ マクロ ウィンドウの [アクションの引数] セクションの [Command Line/コマン コマンド ラインを入力します。 この引数は、省略できません。 と書いてあるのですが 「パスの指定」の指定が上記で出来てることにはならないのでしょうか?

  • エクセル97,マクロのツールバー登録について

    状況 例えば,test1.xlsというエクセルブックを開いて,vba機能によりマクロを作成します。これを,保存先をtest1.xlsにしてツールバーのアイコンに登録します。 作業が終わって,test1.xlsをok.xlsという名称に変えて保存・終了し,新しいbook1.xlsを立ち上げるとします。 すると,test1.xlsに登録したはずのツールバーアイコンのマクロ登録先が,ok.xlsに変わっています。 質問 例えばok.xlsにブック名を変更して保存・終了しても,ツールバーのアイコンのマクロの保存先をtest1.xlsにするには,どこをどの様に設定したら良いのでしょうか? 素人なものですから,具体的に方法を記述していただけると,非常に助かります。 よろしくお願い致します。

  • VBAを利用して、呼び出し元マクロのフルパスを取得

    現在、エクセルマクロの勉強をしているのですが、ご質問があります。 早速ですが、[マクロA]から[マクロB]を呼び出す時、[マクロA]のフルパスを[マクロB]から取得する事はできるのでしょうか。 [マクロA]のファイル名に関しては、"AAA_111.xls"だったり"AAA_222.xls"だったりします。 あいまい検索で実行中のブックの名前を取得し、そのファイル名を元にフルパスは分かるものでしょうか。 もしくは、効率の良い方法がありましたら、ご教授下さい。

  • Excelのマクロ

    よろしく御願い致します Excel2007でマクロを作り「個人用マクロ」PERSONAL.XLSBに登録しましたそこで質問ですが、Excel起動のたび、前には作成した名前で開いていましたが、今は必ずPERSONAL.XLSBの画面が開きその後でファイル名で開きますがマクロをPERSONAL.XLSBに保存するとこう言うものでしょうか。 出来れば、マクロを使いたい時のみPERSONAL.XLSBで開きたいのです それと、オーズEX_12 オーズカレンダー.xlsと言うソフトを使いたいのでオーズカレンダー.xlsを開くと {このアプリケーションと他のExcelブックを 同時に使用することは出来ません。 他のブックを全て閉じてからもう一度起動してください} と表示されて、OKをクリックしても使用出来ませんが何か関係が有るでしょうか。

  • Excel2003 個人用マクロブックがなくなりました

    Excel2003を使用しています。 個人用マクロブックにいくつかマクロが登録してあります。あるとき急に、Excelを起動してもPersonal.xlsが立ち上がらなくなりました。そこで、保存先と思われるApplicationData\\Microsoft\\Excel\\XLSTART\\ の中を確認したのですが、Personal.xlsが見当たりません。個人用マクロブックはなくなってしまったのでしょうか?復活できる方法はありませんでしょうか?

  • 新しく開いたブックをアクティブにするマクロ

    マクロ 新しく作ったブックをアクティブにする マクロ初心者です。 マクロを使って同階層にあるファイルのアクティブのシートを ひとつのブックにコピーして保存するマクロを作りたいと思ってます。 他の質問を参照して下記のコードを途中まで作成しました。 参照した質問では、 マクロの入っているブックにシートをコピーするようでしたが、 そうすると保存した時にマクロも保存されてしまうので 私なりに調べて、新しいブックにシートコピーするようにしましたが、 この記述の後、新しいブックをアクティブにする記述がわからず、 保存できなくなってしまいました。 ここまで終わるとマクロの入っているブックがアクティブになって終わります。 このあと新しく開いたブックをアクティブにして、 ブックのsheet1~3を削除して、名前をつけて保存したいのですが 開いたブックをアクティブにするマクロをご伝授ください。 あたらしくブックをつくるとbook1~・・・と名前が変わってしまうので 変数で名づけたいのですが、やり方が良くわかりませんのでよろしくお願いします。 何卒よろしくお願いします。 Sub consolid_test() Dim shCnt As Integer Dim Wb As Workbook Dim i As Integer Dim sh As Worksheet Dim nSh As Worksheet Dim fName As String Dim ka As String Application.ScreenUpdating = False '画面更新を一時停止 Application.DisplayAlerts = False Set mb = Workbooks.Add '新しいコピー先ブックをmbとする。 myfdr = ThisWorkbook.Path fName = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fName = Empty '全て検索 If fName <> mb.Name Then 'ブック名がこのブックの名前でなければ Set Wb = Workbooks.Open(myfdr & "\" & fName) 'そのブックを開きwbとする。 Wb.ActiveSheet.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く ActiveSheet.Name = Range("B16") 'シート名の変更 ActiveSheet.Unprotect 'シート全体をコピーして値にする Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Wb.Close (False) '保存の有無を聞かずに保存しないで閉じる N = N + 1 'ブック数をカウント End If fName = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す ・ ・ ・ ・

専門家に質問してみよう