
下記の様なマクロが有りますが、ここでファイル名のみ(拡張子無し)を
fairumeiに格納したいのですがどの様なコードを書いた方が良いのでしょうか。?
(ファイル名の長さは全部違います、エクセル2000)
どうか、宜しくお願いします。
Sub シート検索版()
Dim myPName As String
myPName = Application.GetOpenFilename("測定データ(*.xls;*.csv),*.xls;*.csv")
If myPName = "False" Then Exit Sub
Dim wb_New As Workbook
Set wb_New = Workbooks.Add
Dim myKAKUCHOSI As String
Dim myPATHNAME As String
Dim myLName As String
Dim fairumei As String
Dim wb As Workbook
On Error GoTo mfinish
fairumei = ここが分からない
myPATHNAME = CurDir
myLName = Dir(myPATHNAME & "\" & "*" & myKAKUCHOSI) 'パス及びファイル名拡張子付き
No.3ベストアンサー
- 回答日時:
こんばんは。
>ここでファイル名のみ(拡張子無し)をfairumeiに格納したい
ご質問のコードがさっぱり読めませんが、
単に、それだけで良いなら、難しいことを考えなくても、以下のようにすればよいだけなのですが。
'----------------------------------
Sub FileNameGet()
Dim myPName As String
Dim myLName As String
Dim fairumei As String
Dim fairumei2 As String
myPName = Application.GetOpenFilename("測定データ(*.xls;*.csv),*.xls;*.csv")
If myPName = "False" Then Exit Sub
'パス付き拡張子なし
myLName = Mid$(myPName, 1, InStrRev(myPName, ".") - 1)
'パスなし拡張子あり
fairumei = Mid$(myPName, InStrRev(myPName, "\") + 1)
'パスなし拡張子なし
fairumei2 = Mid$(myPName, InStrRev(myPName, "\") + 1, InStrRev(myPName, ".") - InStrRev(myPName, "\") - 1)
MsgBox "パス付き拡張子なし: " & myLName & vbCrLf & _
"パスなし拡張子あり: " & fairumei & vbCrLf & _
"パスなし拡張子なし: " & fairumei2 & vbCrLf
End Sub
No.2
- 回答日時:
変数宣言はなるべくまとめて置かれたほうが分かりやすいし間違いが無いと思います。
レスは手抜きです。整形して下さい。
また、変数の宣言を強制するようにした方が誤りが無いように思います
モジュールの先頭に、Option Explicit を追加(アップされて無いだけでしたらご容赦)
で、
Dim myPName As String
myPName = Application.GetOpenFilename("測定データ(*.xls;*.csv),*.xls;*.csv")
If myPName = "False" Then Exit Sub
Dim wb_New As Workbook
Set wb_New = Workbooks.Add
Dim myKAKUCHOSI As String
Dim myPATHNAME As String
Dim myLName As String
Dim fairumei As String
Dim wb As Workbook
'On Error GoTo mfinish
'-----------------------------------------追加
Dim fairuname As String
Dim objFso As Object
Set objFso = CreateObject("scripting.FilesystemObject")
fairumei = objFso.getbasename(myPName)
MsgBox fairumei
'-----------------------------------------追加ここまで
'これで拡張子抜きのファイル名が取得できると思います。
'拡張子が4桁でも2桁でも多分大丈夫かな?
'こんな意地悪なファイル名、あれれ.xlt.xls → あれれ.xlt がファイル名となります。
'WindowsXP Pro Sp2 + Excel 2002 Sp3 で検証
No.1
- 回答日時:
指定の文字で区切られている文字列を分解する関数「SPLIT」があります。
例はmyPName="C:\Test\File.txt" としますよ。
Dim strArrey() as string
Dim nArrey as long
strArrey() = split(myPName, ".")
nArrey=ubound(strArrey())
ここまでの結果で、nArrey=1です。
strArrey()は2個の要素を持ちます。
strArrey(0)="C:\Test\File"
strArrey(1)="txt"
myPNameが"C:\Test\File.csv.txt" だったら?
ご心配無く。nArrey=2です。
strArrey()は3個の要素を持ちます。
strArrey(0)="C:\Test\File"
strArrey(1)="csv"
strArrey(2)="txt"
つまりstrArrey(nArrey)に拡張子のみが入ります。
で、拡張子のみを何か変数に保存しておく。
同じこと(SPLIT)を"\"で行えば、配列strArrey()の最終要素がファイル名を指します。
あとは適当に調整してみてください。
あと、SPLITの逆はJOINです。こちらも研究してみてください。
replaceの代替になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
ファイル移動
-
コマンドプロンプトのコピー関...
-
VBS パスに変数を入れたい
-
初心者powershellのPS1ファイル...
-
バッチファイルについて・・・
-
Excel 相対パス
-
フォルダ ショートカット
-
VBA★PDFをPDFアプリで印刷し...
-
VBAで今日の日付のフォルダを作...
-
dos窓での実行
-
エクセルのファイルオープン時...
-
C++でネットワークパスのファイ...
-
環境変数の設定について...
-
VBAでパワーシェルを実行したい...
-
【VBA】ExcelマクロでCSVファイ...
-
EXCEL(VBA)で指定フォルダ内の...
-
エクセルのマクロで特定フォル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
エクセルのマクロで特定フォル...
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
VBA★PDFをPDFアプリで印刷し...
-
VBAでパワーシェルを実行したい...
-
ExcelVBAの使い方 ¥の使い方...
-
C#でのProcess.Startと変数path
-
ExcelのVBAで上書き保存を確...
-
開いているファイルを削除し、...
-
アプリケーションのインストー...
-
【VBA】複数のtxtファイルから...
-
EXCEL(VBA)で指定フォルダ内の...
-
fopenでのパス指定
-
パスワード保護されたExcelファ...
おすすめ情報