Visual Basic を使用して、Autodesk Inventor のマクロを作成しています。ファイル ダイアログを呼び出すマクロを作成しました。以下のコードを参照してください。ユーザーがファイル名にピリオドとそれに続くゼロより大きい数字を入力した場合を除いて、すべて正常に機能します。
たとえば、ユーザーが testfile.test をボックスに入れて [OK] をクリックするとします。.FileName を使用してそこに何を入れるかを尋ねると、「testfile.test」と表示されます。私がすべきように。
ただし、ユーザーが testfile.1 または testfile.10 または testfile.1mdksj などを入力すると、ピリオドの直後に 0 より大きい数値が続く限り、"testfile" が返されます。何らかの理由で、ピリオドとピリオドの後のすべてが削除されます。
これの理由は何ですか?これは Visual Basic のバグですか、それとも何か間違っていますか?
'Set up the file dialog
Dim oFileDlg As FileDialog
' Create a new FileDialog object.
Call ThisApplication.CreateFileDialog(oFileDlg)
'Define the filter to select part and assembly files or any file.
oFileDlg.Filter = "All Files (*.*)|*.*"
'Define the part and assembly files filter to be the default filter.
oFileDlg.FilterIndex = 1
'Set the title for the dialog.
oFileDlg.DialogTitle = "Save File As"
'Tell the dialog box to throw up and error when cancel is hit by user
oFileDlg.CancelError = True
'Show the file dialog
On Error Resume Next
oFileDlg.ShowSave
'save the user specified file
Dim newFileName As String
newFileName = oFileDlg.FileName
アップデート:
ピリオドを処理している間も物事を機能させるために、次の「ハック」を実行することになりました。
oFileDlg.fileName = sFname & "."
oFileDlg.ShowSave
fullName = Left$(oFileDlg.fileName, Len(oFileDlg.fileName) - 1)
これは、Windows 7 と Windows 10 でしばらくの間問題なく機能していました。 残念ながら、Windows 10 のクリエイティブ アップデートにより、ファイル ダイアログの動作が変更されたようです。上記のコードでは、名前にピリオドがない場合は fullName が空白に戻り、名前にピリオドがある場合は左から FIRST ピリオドからすべてが切り捨てられます。
Windows 10 で何が変わったのかよくわかりませんが、私のハックはほとんど破壊されました。Windows 7 は引き続き正常に動作し、クリエイティブの更新前の Windows 10 は動作します。上記のWindowsのバージョンですべてを再び機能させるために、次のことを行いました。
oFileDlg.fileName = sFname & ".00"
oFileDlg.ShowSave
fullName = Left$(oFileDlg.fileName, Len(oFileDlg.fileName) - 3)