• ベストアンサー

VBAで、アクティブなBOOKのファイル名を取得し

エクセルのVBAを使用して、選択されている、BOOKのファイル名を取得し、下記のように編集してA1セルに入れたいのですが、可能でしょうか? BOOKのファイル名が「大阪_たこ焼き_1234.xls」の場合 大阪_と.xlsをは省いて、「たこ焼き_1234」がA1セルに入るようにしたい。

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

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

拡張子なんでもござれ! Sub TheBody() Const xSeparator = "_" Const xPeriod = "." Dim KitCut As Variant KitCut = Split(ActiveWorkbook.Name, xPeriod) KitCut = Split(KitCut(0), xSeparator) Range("A1").Value = KitCut(1) & xSeparator & KitCut(2) Columns("A").AutoFit End Sub

reo_11
質問者

お礼

ありがとうございした、 とても助かりました。

その他の回答 (3)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.4

> 選択されている、BOOKのファイル名を取得し、 この「選択」というのは、「現在開いているファイル(群)」ということでしょうか、 それとも「エクスプローラー上で選択しているファイル(群)」でしょうか。 とりあえず、以下のサンプルは、「エクスプローラー上で選択する代わりに、 ファイル選択ダイアログで対象ファイル群を選択」としたものです。 Private Sub CommandButton1_Click() On Error GoTo エラー処理   'VBAのメニューで「ツール(T)→参照設定(R)」を選択し、   '「Microsoft Office xx.x Object Library」のチェックを   'オンにしておく必要があります。   Dim Dlg As FileDialog, Sels As FileDialogSelectedItems   Dim Mem As Variant, Wkb As Workbook, Wks As Worksheet   Dim sFile As String, nUnd As Long, nDot As Long   'ファイル名を記録するファイル群を、ダイアログで選択   Set Dlg = Application.FileDialog(msoFileDialogFilePicker)   With Dlg     'Shiftキーを押しながらクリックすることで複数選択を可能に設定     .AllowMultiSelect = True     'ファイルを絞り込むためのフィルタの設定     With .Filters       .Clear       .Add "Xlsファイル", "*.xls"       .Add "Xlsxファイル", "*.xlsx"       .Add "Xlsmファイル", "*.xlsm"       .Add "すべてのファイル", "*.*"     End With     'キャンセル選択時はそのまま終了     If .Show Then Set Sels = .SelectedItems Else GoTo 終了処理   End With   '各ファイルにファイル名を記録   For Each Mem In Sels     Set Wkb = Workbooks.Open(CStr(Mem))     Set Wks = Wkb.Worksheets(1)     sFile = Wkb.Name     nUnd = InStr(1, sFile, "_")    '先頭の「_」の位置     nDot = InStrRev(sFile, ".")    '末尾の「.」の位置     Wks.Range("A1") = Mid(sFile, nUnd + 1, nDot - nUnd - 1)     Wkb.Close True   Next 終了処理:   Set Wks = Nothing   Set Wkb = Nothing   Set Dlg = Nothing   Exit Sub エラー処理:   MsgBox Err.Number & Err.Description, vbCritical, "CommandButton1"   Resume 終了処理 End Sub ・・・以上です。

reo_11
質問者

お礼

ありがとうございました 参考になりました。 選択されているbookとは、開いているbookのつもりでした。

回答No.2

こんにちは。 質問が、どの程度、実際のものと近いか、その規則性や実用性がはっきりしていませんが、こんなことだと思います。 '// Sub Test1()  Dim wbName As Variant  Dim buf As String  wbName = ActiveWorkbook.Name  If InStr(wbName, ".") > 0 Then   buf = Mid(wbName, 1, InStr(wbName, ".") - 1)  End If  If InStr(buf, "_") > 0 Then   buf = Mid(buf, InStr(buf, "_") + 1) '区切りが、_ の場合  End If  'マクロのあるブックのアクティブシートのA1 (適当に調整してください)  ThisWorkbook.ActiveSheet.Range("A1").Value = buf End Sub

reo_11
質問者

お礼

ありがとうございまいた とても参考になりました

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

sub macro1() with application.worksheetfunction range("A1") = .substitute(activeworkbook.name, "大阪_", "") range("A1") = .substitute(range("A1"), ".xls", "") end with end sub とか sub macro2() dim res as string res = activeworkbook.name res = mid(res, 4,999) res = left(res, len(res) - 4) range("A1") = res end sub とか sub macro3() range("A1") = mid(split(activeworkbook.name, ".")(0), 4,999) end sub とか

reo_11
質問者

お礼

ありがとうございまいた、 とても参考になりました

関連するQ&A

  • VBA アクティブなセルのシート名を取得したい

    エクセル2010使用です。 VBAで、アクティブなセルのあるシート名を取得する方法を教えてください。  マクロ.xls (マクロシートA1) ←今回のマクロを書き込んだファイル  参照.xls (参照シートA1)  入力.xls (入力シートF3) この3つのエクセルファイルを開きます。 ( )内はそれぞれの前面にあるシート名と選択されたセルです。 入力シートのF3にカーソルをおいて下記マクロを実行すると   MsgBox ActiveSheet.Name & ActiveCell.Address 「マクロシート F3」と返されます・・・ ほしい結果は「入力シート F3」なんです。 このような場合にアクティブセルのあるシート名を取得する方法があれば教えてください。 よろしくお願いいたします。

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

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

  • エクセルVBAでのブック名の取得について。

    こんにちは。よろしくお願いします。 自身:a.xls 他:1.xls、2.xls、3.xls 上記全てを開いた状態で、a.xlsのA列に、a.xls以外のブック名を文字列として取得しました。 A 1.xls 2.xls 3.xls この状態で、更に、 追加:11.xls、12.xls、13.xls というブックを開いた場合(1、2、3は開いたまま)に、B列に上記3つのみのブック名を文字列として取得したいと考えています。が、A列に取得したところで行き詰ってます・・・。 ご教授願えると嬉しいです。 よろしくお願いします。

  • VBA(エクセル)でアクティブファイル名の取得できますか?

    エクセルでVBAを使用して、自分自身のファイル名を取得できますか?そんなコマンドありますか? (Aと云うエクセルファイルにVBAを仕込み、自分自身がAというエクセルファイル名であることを、認識(取得)させることが出来るでしょうか) かなり素人ですので宜しく教示願います。

  • VBAでファイル名を変更したい

    EXCEL2003のVBAでブックを連続して保存をするものを作成したのですが、スキルが足りないため、ファイル名が数字になってしまい、リネームをしたいのですが、出だしからつまずいております。 リネームをしたいブック(ファイル)は一つのフォルダに入っており、 excelのシートには旧ファイル名と新ファイル名の一覧をつくり VBAを実行すると一覧に載っているブック名が変更される というものを作りたいのですが、可能でしょうか。 一覧は 旧ファイル名  新ファイル名 1.xls      1北海道.xls 2.xls      2青森.xls という感じです。 フリーのリネームソフトではなく何とか自力でやりたいと思っております。 お力をお貸しください。 よろしくお願いいたします。

  • 【Excel-VBA】アクティブセルが参照しているブックを開くには?

    いろいろ検索したのですが、見つからないので質問させていただきます。 対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、正しい値にはなりません。 (例:A1に =[Book2.xls]Sheet1!$A$3 が入力されている) そこで、そのセルが参照しているブックをVBAで自動的に開く方法を考えています。 つまり、例で言えば、Book2.xlsを開きたいのです。 文字列関数を使ってひとつひとつの文字を取得し、ファイル名を得て開く方法しかないのでしょうか? 何かいい方法があれば教えてください。 よろしくお願いします。

  • エクセルVBAでブックを開きたいのですが、

    エクセルVBAでブックを開きたいのですが、 アクティブシートを別のブックに移動させたいのですが、 まず、目的のブックを開く → 移動させたいシート名を右クリック → 移動またはコピー を選択 → 移動先ブック を選択  というふうにしようと思っていますが、 Workbooks.Open Filename:= _ "C:\Documents and Settings\YUMIKO\My Documents\YYYY.xls" のようにファイル名を入れると開くことができました。 が、   Workbooks.Open Filename:= _ "C:\Documents and Settings\YUUKORON\My Documents\Range("F1").Value.xls" のように、アクティブシートの セルF1にファイル名を入れて、開きたいのですが、どうしても開くことができません。いろいろ調べて試しましたが、無理でした。 基本的にマクロで記録で作っている初心者です。 回答よろしくお願いします。

  • 【VBA】EXCELブックを開かずにファイルのプロパティを取得したい

    VBAに関する質問です。 対象のエクセルブックを開かずに、エクセルファイルのプロパティ(タイルト名など)を取得する方法を教えてください。 「DSO」を使用すれば所得できることは分かりましたが、別の方法で取得することは可能でしょうか?できれば「DSO」をインストールしていないパソコンからでも取得できるようにしたいと思っています。 心当たりのある方、アドバイスいただければと思います。

  • EXCEL VBA で現在開いているブックのファイル名を取得する方法

    EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。 作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。 このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。 常にファイル名を取得出来るVBAをどなたか、教えて下さい。

  • VBA でテキストファイルに読み書き

     エクセル2000のVBAを使用しています。 ブックAファイル名をブックBのセルに入力して、ブックAをインデックスの様な扱いのファイルを作成使用としたのですが、ブック間で変数のやり取りは出来ないと思います。できるんですか??  その為、txtファイルを変数代わりに使おうと思っているのですが、 入出力の方法が良くわかりません。  簡単にブックBのセルの値をtxtファイルに書き込んでブックAで、 そのtxtファイルを読み込む様なVBAのコード教えて下さい。 初心者ですけど・・。

専門家に質問してみよう