フォームの中にドラッグドロップされると拡張子つきでファイル名のみを取得し、そのファイルを圧縮する、というのをつくろうとしているんですが、ドラッグドロップされたらパスを取得するやり方も、そこから拡張子つきでファイル名のみを取得するやり方もわかりません。どなたかご教授ください。
フォームにドラッグドロップされたパスを取得するのは、簡単ですよ。
OLEDropModeを1=手動にすれば、OKです。
ファイル名のみ抽出は、いくつか方法があるんですが、
APIとか、自作とか、自分は、APIを使うことが多いので、
そちらの方法を書きますね。
Option Explicit
Private Declare Sub PathStripPath Lib "SHLWAPI.DLL" Alias "PathStripPathA" _
(ByVal pszPahth As String)
'
' パスを取り除く。
'
Private Function StripPath(ByVal strPath As String) As String
' strPath : フルパスのファイル名
' 戻り値 : パス名を除いてファイル名だけが返る。
Dim lngResult As Long
Call PathStripPath(strPath)
If InStr(strPath, vbNullChar) > 0 Then
StripPath = Left$(strPath, InStr(strPath, vbNullChar) - 1)
End If
End Function
Private Sub Form_Load()
Form1.OLEDropMode = 1
End Sub
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim objFile As Variant
For Each objFile In Data.Files
MsgBox StripPath(objFile)
Next
End Sub
APIでやる方法も自分が知っている限り2つあります。
そのひとつを書いてます。
これで良いですか?
ありがとうですw
これからもよろしくですぅ
ツイート | ![]() |