• ベストアンサー

ファイル名のみを取得するには?

Sub 取得() MsgBox ActiveWorkbook.Name End Sub を実行すると 「エクセル.xls」 と取得されますが 拡張子を除いたファイル名だけを取得するにはどうすればいいでしょうか? 「エクセル」だけを取得したいです。 よろしくお願いします。

  • chdyet
  • お礼率99% (108/109)

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

  • ベストアンサー
noname#90572
noname#90572
回答No.3

作ってみました Sub 取得() Dim bkName As String bkName = ActiveWorkbook.Name MsgBox Left(bkName, InStrRev(bkName, ".") - 1) End Sub 説明:  ・ファイル名に.(ドット)が含まれていても正常に動作します。  ・2007形式の4文字の拡張子にも対応できます。

chdyet
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

多分加工して出さないと、XLSを除く部分に名称もついてないのでは。 小生の不知だけの恐れも有る。 一法は Sub 取得() MsgBox Split(ActiveWorkbook.Name, ".")(0) End Sub

chdyet
質問者

お礼

ありがとうございます。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

Sub 取得() MsgBox left(ActiveWorkbook.Name,len(ActiveWorkbook.Name)-4) End Sub

chdyet
質問者

お礼

右から4文字削っちゃえばいいんですね!ありがとうございます。

関連するQ&A

  • アクセス 自身のデータベース名を取得するのは「CurrentDatabase」ではない?

    Sub test() MsgBox CurrentDatabase End Sub を実行すると 「変数が定義されていません。」となってしまいます。 エクセルで言う MsgBox ActiveWorkbook.Name を行ないたいのですがどんなコードを書けばいいのでしょうか? よろしくお願いします。

  • アプリケーションタイトルにファイル名のみ表示したい

    エクセルファイルを開いた時に、 アプリケーションタイトルに拡張子を含まない自身のファイル名を設定したいので Private Sub Workbook_Open() Application.Caption = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1) End Sub としたのですが、 こうすると、タスクバーから見た時などは ファイル名 - ファイル名 .xlsm と表示されてしまいます。 - より右の「 ファイル名 .xlsm」は不要なのですが、 どうしてこうなってしまうのでしょうか? ファイル名のみ表示させたいです。 こうなるのは全画面表示の場合のみで最大化をやめるとファイル名のみ表示されます。 全画面表示でエクセルは開きたいです。

  • フルパスを取得するにはどうすればいいですか

    access2003です 自身のファイル名を取得するのは Sub test() MsgBox CurrentProject.Name End Sub で出来ますが フルパスを取得するにはどうすればいいですか? よろしくお願い致します。

  • エクセルと同じファイル名でcsvを作成するマクロ

    エクセルからCSVファイルをYYMMDD付でマクロを使って 作ろうとしていますが拡張子の「.xls」がどうしても残ってしまいます。 例えば、「test.xls」が「test.xls070326.csv」のように。 これを「test070326.csv」とするにはどうしたらよいでしょう。 今のコードはつぎのようにしています。 Sub test1() Dim flname As Variant Dim wb As Workbook flname = ActiveWorkbook.Name + CStr(Format(Date, "yymmdd")) ActiveSheet.Copy ActiveSheet.SaveAs Filename:=flname, _ FileFormat:=xlCSV ActiveWindow.Close savechanges:=False ActiveWorkbook.Close End Sub これでもCSVとしては使えるのですが、気持ちがすっきりしません。 どなたか正解をお願いします。

  • エクセルで、ファイル名を(追加で)取得したい

    エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 以前、ファイル名を取得するコードをご教示いただいたのですが、 使っている内に 「追加」をする機能を付けたいと思うようになりました。 以下は、現状使用しているコードです。 ※以前質問させていただいた際とは微妙に仕様変更になったので、配列は多少変更しています。 Sub ファイル名取得() FolderPath = Cells(10, 7).Value 'パスはG10から読み込む buf = Dir(FolderPath & "\*.*") '拡張子の指定はしない cnt = 9 '実施行-1行目を指定 Do While buf <> "" If (buf Like "*.xls?") And buf <> ThisWorkbook.Name Then '拡張子はエクセル系 cnt = cnt + 1 Cells(cnt, 6) = buf 'F10から順にファイル名を記載 End If buf = Dir() Loop End Sub 必ず「追加」があるわけではないので、 パターン1:新規・追加を判別して、「追加」であれば、現状入っている値(ファイル名ですが)の下の行からファイル名を追加していく パターン2:上記で「cnt = 9+1」から挿入している部分を変更し、「挿入行」を指定してファイル名を取得する どちらのパターンが エラーになりにくく、より簡単に設定できるものなのか?も わかっていないため、 ザックリとした質問になってしまいましたが、 ご教示いただけますと幸いです。 よろしくお願い致します!

  • 今発生しているイベントのコントロール名を取得

    エクセルです 例えば、シートにコマンドボタンを一つ設置して、クリックイベントで Private Sub CommandButton1_Click() MsgBox "CommandButton1が押されました" End Sub こうしたら、コマンドボタン1を押した時に、 "CommandButton1が押されました"が表示されますが、 CommandButton1の部分を変数みたいなのにすることはできますか? MsgBox Me.Name & "が押されました" だとシート名が取得されるし MsgBox Me.Control.Name & "が押されました" や MsgBox Me.ActionControl.Name & "が押されました" だとエラーになります。

  • 自身のブック名を変更したい

    こんばんは。 Sub test() ActiveWorkbook.Name = "変更後ブック名.xls" End Sub とすると 「.Name =」の部分が コンパイルエラーになります。 (値の取得のみ可能なプロパティに値を設定することはできません。) 現在開いているブックの名前を変更するコードを教えてください。 ご教授よろしくお願い致します。

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

    エクセルの「ファイルを開く」ダイアログボックスを使用してファイルを開き、その開いたファイルに対してとあるマクロを実行させたいと思っています。 エクセルの「ファイルを開く」ダイアログボックスでパス取得までは理解出来たのですが、その先の処理が分かりません。 「ファイルを開く」と言うのは、「現在アクティブになっているシートにデータを貼り付けて」の処理でも構いません。 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

  • GetSaveAsFilenameでフォルダを指定したいのですが?

    すいません。マクロ初心者です。 (1)以下のプロシージャで保存するときに、フォルダを指定したいのですがどこにフォルダ名を入れたらいいかわかりません。 (2)XPのエクセル2003で作成したのですが、vistaのエクセル2007で使用すると保存時に拡張子.xlsが付かずエクセルファイルになりません。 ご教授ください。 Sub シート保存2() Dim Answer3 Dim 既定ファイル名 As String Dim 保存ファイル名 As Variant Answer3 = MsgBox("本当に保存しますか?", vbYesNo) If Answer3 = vbNo Then MsgBox ("キャンセルしました。") Exit Sub End If Sheets("保存シート").Select Application.CutCopyMode = False Sheets("保存シート").Copy 既定ファイル名 = Range("V7") & ".xls" 保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名) If 保存ファイル名 = False Then MsgBox "保存は中止されました。" ActiveWorkbook.Close (False) Else ActiveWorkbook.SaveCopyAs 保存ファイル名 ActiveWorkbook.Close (False) End If End Sub よろしくお願いします。

  • Open Filenameで変わるファイル名を開く

    スマホアプリで作成したデータをパソコンのExcelから開きたいです。 vbaで操作したいのですが、アプリでエクスポートされたファイル名は日々名前が変わります。 Open Filenameで操作したいです。 Sub Sample1は開きますが、毎日ファイル名をて入力しなければなりません。 Sub Sample1() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-160906.xls" '←「yymmdd.xls(年年月月日日).xlsの数値が入っています」 End Sub Sub Sample2に日々変わるファイル名の数値の部分を*に置き換えましたが、駄目でした。実行エラー1004 Sub Sample2() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel*.xls" End Sub Sub Sample3に日々変わるファイル名の数値の部分を??????に置き換えましたが、駄目でした。実行エラー1004 Sub Sample3() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-??????.xls" End Sub ファイル名の変わる部分の指定方法を教えて下さい。

専門家に質問してみよう