ファイルのフルパスから拡張子を除いたものを抽出するコードがあり、ファイルの名前のみを格納するように変更しようとしています。ここでも拡張子はありません。
Sub ShowFilename()
Dim pathName As String
With ActiveDocument
If Len(.Path) = 0 Then
.Save
End If
If Right(.Name, 1) = "x" Then
pathName = Left$(.FullName, (Len(.FullName) - 5))
Else
pathName = Left$(.FullName, (Len(.FullName) - 4))
End If
End With
MsgBox pathName
End Sub
C:\Users\test
が表示され、ドキュメントの名前はtest.docm
です。ファイル名のみを表示するようにこれを変更するにはどうすればよいですか?文字列を\
に沿って分割し、最後の部分を抽出する必要がありますか?
FSOには、このタイプのもののための一連のメソッドがあり、その1つが「getBaseName」です。
Msgbox CreateObject("scripting.filesystemobject").getbasename(o.Name)
http://msdn.Microsoft.com/en-us/library/xhxzwwe1(v = vs.84).aspx
Sub ShowFilename()
Dim pathName As String
Dim o As Document
Set o = ActiveDocument
If InStrRev(o.Name, ".") <> 0 Then
MsgBox Left(o.Name, InStrRev(o.Name, ".") - 1)
Else
MsgBox o.Name
End If
End Sub
私は最初、ファイルが保存されていないか、拡張子がない場合にエラーになるifなしでこれを投稿しました。
FSOを使ってコードを書くことができなかったので(VBだけではないですか?)、私はこれを書きました、かなり自明です:)
Dim oldFilename As String
oldFilename = ActiveDocument.Name
If Right(oldFilename, 5) = ".docx" Then
MsgBox ("subtract .docx")
oldFilename = Left(oldFilename, Len(oldFilename) - 5)
ElseIf Right(oldFilename, 4) = ".doc" Then
MsgBox ("subtract .doc")
oldFilename = Left(oldFilename, Len(oldFilename) - 4)
Else
MsgBox ("no extension yet")
End If
これは私のために働きます。
Sub ShowFilename()
MsgBox ActiveWindow.Parent
End Sub
ええ、私はそのようにはしません!
仮に、Wordに相当するフォルダ全体があり、拡張子は必要ありません。名前だけが必要です。あなたがすることは、Wordのドキュメントを調べて、ファイル名から削除したい拡張子のタイプでこの関数を介してそれらを解析することです
Function removeExtension(myDoc as Document, extension as String)
Dim documentWithoutExtension as String
documentWithoutExtension = replace(myDoc.Name, extension, "")
removeExtension = documentWithoutExtension
End Function
簡単な方法は次のとおりです。
Sub Test1()
Dim DocName As Document
Set DocName = ActiveDocument
end sub