web-dev-qa-db-ja.com

マクロを使用して、拡張子やフルパスなしでWord文書の現在のファイル名を取得するにはどうすればよいですか?

ファイルのフルパスから拡張子を除いたものを抽出するコードがあり、ファイルの名前のみを格納するように変更しようとしています。ここでも拡張子はありません。

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です。ファイル名のみを表示するようにこれを変更するにはどうすればよいですか?文字列を\に沿って分割し、最後の部分を抽出する必要がありますか?

6

FSOには、このタイプのもののための一連のメソッドがあり、その1つが「getBaseName」です。

Msgbox CreateObject("scripting.filesystemobject").getbasename(o.Name)

http://msdn.Microsoft.com/en-us/library/xhxzwwe1(v = vs.84).aspx

6
Tim Williams
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なしでこれを投稿しました。

6
Daniel

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
1
Mad VBA Coder

これは私のために働きます。

Sub ShowFilename()
MsgBox ActiveWindow.Parent
End Sub
0
Shane Sibbett

ええ、私はそのようにはしません!

仮に、Wordに相当するフォルダ全体があり、拡張子は必要ありません。名前だけが必要です。あなたがすることは、Wordのドキュメントを調べて、ファイル名から削除したい拡張子のタイプでこの関数を介してそれらを解析することです

Function removeExtension(myDoc as Document, extension as String)
Dim documentWithoutExtension as String

documentWithoutExtension = replace(myDoc.Name, extension, "")

removeExtension = documentWithoutExtension

End Function
0
Ben Segar

簡単な方法は次のとおりです。

Sub Test1()
Dim DocName As Document
Set DocName = ActiveDocument
end sub
0
MWCA44