2016-12-06 2 views
0

結果には、表示したくないファイル拡張子も含まれています。テキストからファイル拡張子を削除するにはどうすればよいですか?ファイル拡張子をスキップするコードファイルをハイパーリンクしているとき

Sub mymacro() 
Dim objcreate As Object, objFolder As Object, objFile As Object, i As Integer 
Dim ws As Worksheet, rng As Range 

Set ws = Sheets("Sheet1") 
Set rng = ws.Range("C1") 


Set objcreate = createobject("Scripting.FileSystemObject") 

Set objFolder = objcreate.GetFolder(rng) 
i = 0 

For Each objFile In objFolder.Files 
'select cell 
Range(Cells(i + 1, 1), Cells(i + 1, 1)).Select 
'create hyperlink in selected cell 
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _ 
objFile.Path, _ 
TextToDisplay:=objFile.Name 
i = i + 1 
Next objFile 
End Sub 

答えて

0

ただ、あなたは多くの方法でそれを行うことができ、最後の4つの文字TextToDisplay:=LEFT(objFile.Name, LEN(objFile.Name) - 4)

+0

エクステンションの長さが3でない場合は機能しません。 エクステンションの長さが2、4、または3以外の場合、コードは失敗します。この特定のシナリオでは、エクステンションの長さが3の場合、作業。 –

+0

私はpdfファイルを生成しているので、私の内線番号は3です... –

0

を遮断するLEFT関数を使用します。このような何かは既に以前に答えられました:https://stackoverflow.com/a/27924854/6151782

私は別の方法で、分割を使用して処理しようとします。以下のコードを見てください:

Sub mymacro() 
Dim objcreate As Object, objFolder As Object, objFile As Object, i As Integer 
Dim ws As Worksheet, rng As Range 

Set ws = Sheets("Sheet1") 
Set rng = ws.Range("C1") 


Set objcreate = createobject("Scripting.FileSystemObject") 

Set objFolder = objcreate.GetFolder(rng) 
i = 0 

For Each objFile In objFolder.Files 
'select cell 
Range(Cells(i + 1, 1), Cells(i + 1, 1)).Select 
'create hyperlink in selected cell 
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _ 
objFile.Path, _ 
TextToDisplay:=objFile.Name 
tmpArr = Split(TextToDisplay,".") 

Dim finalTextToDisplay 
tmpArr = split(TextToDisplay,".") 
finalTextToDisplay = "" 

'considering there might be a dot in the file name itself, we will take the string till the last dot using loop 
    loopLimit = UBound(tmpArr) 
    for j=0 to loopLimit-1 
    if i = 0 then 
      finalTextToDisplay = tmpArr(j) 
    else 
     finalTextToDisplay =tmpArr(j) & "." & finalTextToDisplay 
    end if 

    Next 
i = i + 1 
Next objFile 
End Sub 

上記のコードでは、最後のドットが出現するまでループしました。すでに末尾のドットを避けるために、空のfinalTextToDisplay(空の最初の繰り返しの場合)をドットに付加しないようにif条件を設定する必要がありました。 また、1からループを開始して、if条件を避けるためにloop before finalTextToDisplayの値を設定することもできます。

関連する問題