Attribute VB_Name = "VBMP3" 'VBMP3.BAS 'VisualBasic用 MP3操作DLL 関数宣言ファイル '** 基本操作系 ** Declare Function vbmp3_init Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_free Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_open Lib "VBMP3.dll" (ByVal pszName As String, pInfo As InputInfo) As Boolean Declare Function vbmp3_close Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_play Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_stop Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_pause Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_restart Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_seek Lib "VBMP3.dll" (ByVal sec As Long) As Boolean Declare Function vbmp3_setPlayFrames Lib "VBMP3.dll" (ByVal frames As Long) As Boolean Declare Function vbmp3_setPlaySamples Lib "VBMP3.dll" (ByVal samples As Long) As Boolean Declare Function vbmp3_reload Lib "VBMP3.dll" () As Boolean '** VBMP3 関連 ** Declare Function vbmp3_getVersion Lib "VBMP3.dll" () As Long Declare Function vbmp3_setVbmp3Option Lib "VBMP3.dll" (pVbmp3Option As VBMP3_OPTION) As Long Declare Sub vbmp3_getVbmp3Option Lib "VBMP3.dll" (pVbmp3Option As VBMP3_OPTION) Declare Function vbmp3_setDecodeOption Lib "VBMP3.dll" (pDecOption As DEC_OPTION) As Long Declare Sub vbmp3_getDecodeOption Lib "VBMP3.dll" (pDecOption As DEC_OPTION) Declare Sub vbmp3_setWaveOutDeviceId Lib "VBMP3.dll" (ByVal id As Long) '** ステータス(時間/ビットレート) ** Declare Function vbmp3_getState Lib "VBMP3.dll" (sec As Long) As Long Declare Function vbmp3_getPlayFrames Lib "VBMP3.dll" () As Long Declare Function vbmp3_getPlaySamples Lib "VBMP3.dll" () As Long Declare Function vbmp3_getTotalSamples Lib "VBMP3.dll" () As Long Declare Function vbmp3_getWinampPlayMs Lib "VBMP3.dll" () As Long Declare Function vbmp3_getWinampTotalSec Lib "VBMP3.dll" () As Long Declare Function vbmp3_getPlayBitRate Lib "VBMP3.dll" () As Long '** 情報取得系 ** Declare Function vbmp3_getFileType Lib "VBMP3.dll" (ByVal pszName As String) As Long Declare Function vbmp3_getWaveOutSupport Lib "VBMP3.dll" () As Long Declare Function vbmp3_getSilentFrames Lib "VBMP3.dll" (ByVal pszName As String) As Long Declare Function vbmp3_getMpegInfo Lib "VBMP3.dll" (pMpegTagInfo As MPEG_INFO) As Boolean Declare Function vbmp3_getFileInfo Lib "VBMP3.dll" (ByVal pszName As String, pTagInfo As TAG_INFO, pMpegTagInfo As MPEG_INFO) As Boolean Declare Function vbmp3_getFileInfo2 Lib "VBMP3.dll" (ByVal pszName As String, pTagInfo As TAG_INFO, pMpegTagInfo As MPEG_INFO, pListInfo As LIST_INFO) As Boolean '** ID3 Tag ** Declare Function vbmp3_setTagInfo Lib "VBMP3.dll" (ByVal pszName As String, pTagInfo As TAG_INFO, Optional ByVal tagSet As Long = 0, Optional ByVal tagAdd As Long = 0) As Boolean Declare Function vbmp3_getTagInfo Lib "VBMP3.dll" (pTagInfo As TAG_INFO) As Boolean Declare Function vbmp3_setTagInfoEX Lib "VBMP3.dll" (ByVal pszName As String, pTagInfo As TAG_INFO_11, Optional ByVal tagSet As Long = 0, Optional ByVal tagAdd As Long = 0) As Boolean Declare Function vbmp3_getFileTagInfo Lib "VBMP3.dll" (ByVal pszName As String, pTagInfo As TAG_INFO) As Boolean Declare Function vbmp3_getFileTagInfoEX Lib "VBMP3.dll" (ByVal pszName As String, pTagInfo As TAG_INFO_11) As Boolean Declare Function vbmp3_getGenre Lib "VBMP3.dll" (pTagInfo As TAG_INFO) As Boolean Declare Function vbmp3_cutID3v2 Lib "VBMP3.dll" (ByVal pszName As String) As Boolean '** SIフィールド ** Declare Function vbmp3_setListInfo Lib "VBMP3.dll" (ByVal pszName As String, pListInfo As LIST_INFO) As Boolean Declare Function vbmp3_getListInfo Lib "VBMP3.dll" (pListInfo As LIST_INFO) As Boolean Declare Function vbmp3_setListInfoExVB Lib "VBMP3.dll" (ByVal pszName As String, pListInfo As LIST_INFO_EX_VB) As Boolean Declare Function vbmp3_getListInfoExVB Lib "VBMP3.dll" (ByVal pszName As String, pListInfo As LIST_INFO_EX_VB) As Boolean Declare Function vbmp3_setListInfoEX2 Lib "VBMP3.dll" (ByVal pszName As String, pListInfo As LIST_INFO_EX2) As Boolean Declare Sub vbmp3_setNotDataSiWrite Lib "VBMP3.dll" (writeFlag As Long) '** 歌詞関連(Lyrics3) ** Declare Function vbmp3_delFileLyrics3Info Lib "VBMP3.dll" (ByVal pszName As String) As Boolean Declare Function vbmp3_setFileLyrics3InfoVB Lib "VBMP3.dll" (ByVal pszName As String, pLyrics3Info As LYRICS3_INFO_VB, _ ByVal lyrData As String, ByVal InfData As String, ByVal ImgData As String) As Boolean Declare Function vbmp3_getFileLyrics3InfoVB Lib "VBMP3.dll" (ByVal pszName As String, pLyrics3Info As LYRICS3_INFO_VB, _ ByVal lyrData As String, ByVal InfData As String, ByVal ImgData As String) As Boolean Declare Function vbmp3_readLyrics3Data Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_setReadLyrics3Info Lib "VBMP3.dll" (ByVal pszName As String) As Boolean Declare Sub vbmp3_setLyrics3InsField Lib "VBMP3.dll" (ByVal field As Long) Declare Sub vbmp3_setLyrics3Use Lib "VBMP3.dll" (ByVal useLyrics3 As Long) '** 歌詞関連 ** Declare Function vbmp3_setLyricsFile Lib "VBMP3.dll" (ByVal pszLyricsName As String) As Boolean Declare Function vbmp3_getLyrics Lib "VBMP3.dll" (pLyricsInfo As LYRICS_INFO) As Boolean Declare Function vbmp3_getLyrics2 Lib "VBMP3.dll" (pLyricsInfo As LYRICS_INFO2) As Boolean Declare Function vbmp3_clearLyrics Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_checkKaraokeTag Lib "VBMP3.dll" () As Boolean Declare Sub vbmp3_setKaraokeUse Lib "VBMP3.dll" (ByVal useKaraoke As Long) Declare Sub vbmp3_setLyricsTime Lib "VBMP3.dll" (ByVal flag As Long) Declare Sub vbmp3_setNotTagLyricsLine Lib "VBMP3.dll" (ByVal readFlag As Long) Declare Sub vbmp3_setLyricsAdjustTime Lib "VBMP3.dll" (ByVal ms As Long) Declare Sub vbmp3_setLyricsNextAdjustTime Lib "VBMP3.dll" (ByVal ms As Long) Declare Function vbmp3_convTimeN2W Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_convTimeW2N Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_outLyricsFile Lib "VBMP3.dll" (ByVal pszLyricsName As String) As Boolean Declare Sub vbmp3_useAtMarkTag Lib "VBMP3.dll" (ByVal useFlag As Long) Declare Sub vbmp3_setTimeRatio Lib "VBMP3.dll" (ByVal TimeRatio As Double) Declare Function vbmp3_checkTimeTag Lib "VBMP3.dll" () As Long Declare Function vbmp3_getCallbackLyricsData Lib "VBMP3.dll" (ByVal pProc As Long) As Boolean Declare Function vbmp3_getAtTagData Lib "VBMP3.dll" (pAtTagData As AT_TAG_DATA) As Boolean Declare Function vbmp3_getLyricsPoint Lib "VBMP3.dll" () As Long 'Declare Function vbmp3_getLyricsData Lib "VBMP3.dll" (pLyricsData As LYRICS_DATA, ByVal elmNo As Long) As Long 'Declare Function vbmp3_getLyricsCount Lib "VBMP3.dll" () As Long '** 特殊再生 ** Declare Function vbmp3_setStepPitch Lib "VBMP3.dll" (ByVal pitch As Long, Optional ByVal flames As Long = 5) As Boolean Declare Function vbmp3_getStepPitch Lib "VBMP3.dll" () As Long Declare Function vbmp3_setPitch Lib "VBMP3.dll" (ByVal pitch As Long) As Boolean Declare Function vbmp3_getPitch Lib "VBMP3.dll" () As Long Declare Sub vbmp3_setFadeIn Lib "VBMP3.dll" (ByVal fin As Long) Declare Sub vbmp3_setFadeOut Lib "VBMP3.dll" (ByVal fout As Long) Declare Sub vbmp3_fadeOut Lib "VBMP3.dll" () Declare Sub vbmp3_setOverTime Lib "VBMP3.dll" (ByVal tmOver As Long) Declare Sub vbmp3_setSeekPlay Lib "VBMP3.dll" (ByVal seekPlay As Long) Declare Sub vbmp3_setFrameReadFlag Lib "VBMP3.dll" (ByVal readFlag As Long) Declare Sub vbmp3_quickSeek Lib "VBMP3.dll" (ByVal quickSeekFlag As Long) '** ボリューム ** Declare Function vbmp3_setVolume Lib "VBMP3.dll" (ByVal lVol As Long, ByVal rVol As Long) As Boolean Declare Function vbmp3_getVolume Lib "VBMP3.dll" (lVol As Long, rVol As Long) As Boolean Declare Sub vbmp3_setSoftVolume Lib "VBMP3.dll" (ByVal lVol As Long, ByVal rVol As Long) Declare Sub vbmp3_getSoftVolume Lib "VBMP3.dll" (lVol As Long, rVol As Long) '** デコード ** Declare Function vbmp3_playDecodeWave Lib "VBMP3.dll" (ByVal pszWaveName As String) As Boolean Declare Function vbmp3_decodeWave Lib "VBMP3.dll" (ByVal pszWaveName As String) As Boolean '** エンコード系 ** Declare Function vbmp3_encodeOpen Lib "VBMP3.dll" (ByVal pszWaveName As String, pWaveForm As WAVE_FORM) As Boolean Declare Function vbmp3_encodeStart Lib "VBMP3.dll" (ByVal pszMp3Name As String) As Boolean Declare Function vbmp3_encodeStop Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_getEncodeState Lib "VBMP3.dll" (readSize As Long, encodeSize As Long) As Long '** オシロ・スペアナ・グライコ ** Declare Sub vbmp3_getWave Lib "VBMP3.dll" (pWaveL As Long, pWaveR As Long) Declare Sub vbmp3_getSpectrum Lib "VBMP3.dll" (pSpecL As Long, pSpecR As Long) Declare Sub vbmp3_setFftWindow Lib "VBMP3.dll" (ByVal window As Long) Declare Sub vbmp3_setEqualizer Lib "VBMP3.dll" (pTable As Long) '** ファイル形式変換 ** Declare Function vbmp3_changeWav Lib "VBMP3.dll" (ByVal pszName As String) As Boolean Declare Function vbmp3_changeRmp Lib "VBMP3.dll" (ByVal pszName As String) As Boolean Declare Function vbmp3_changeMp3 Lib "VBMP3.dll" (ByVal pszName As String) As Boolean Declare Function vbmp3_cutMacBinary Lib "VBMP3.dll" (ByVal pszName As String) As Boolean '** コールバック関数 ** Declare Function vbmp3_callback Lib "VBMP3.dll" (ByVal pProc As Long) As Boolean Declare Function vbmp3_startCallback Lib "VBMP3.dll" () As Boolean Declare Function vbmp3_stopCallback Lib "VBMP3.dll" () As Boolean 'Declare Function vbmp3_startCallBackTimer Lib "VBMP3.dll" (ByVal pProc As Long, ByVal wDelay As Long, ByVal wResolution As Long, ByVal userData As Long) As Boolean 'Declare Function vbmp3_stopCallBackTimer Lib "VBMP3.dll" (ByVal pProc As Long) As Boolean '** デバッグ ** Declare Function vbmp3_getLastErrorNo Lib "VBMP3.dll" () As Long Declare Function vbmp3_debug Lib "VBMP3.dll" () As Long '** 名称不正 ** Declare Function vbmp3_setPlayFlames Lib "VBMP3.dll" (ByVal flames As Long) As Boolean Declare Function vbmp3_getPlayFlames Lib "VBMP3.dll" () As Long '** 未使用 ** Declare Sub vbmp3_startAnalyzeThread Lib "VBMP3.dll" () Declare Sub vbmp3_stopAnalyzeThread Lib "VBMP3.dll" () Declare Sub vbmp3_startAnalyze Lib "VBMP3.dll" () Declare Sub vbmp3_stopAnalyze Lib "VBMP3.dll" () Declare Function vbmp3_getWaveData Lib "VBMP3.dll" (pWaveData As WAVE_DATA) As Boolean Public Type InputInfo szTrackName As String * 128 '曲名 szArtistName As String * 128 'アーティスト名 channels As Long 'チャンネル数 bitrate As Long 'ビットレート(kbit/s) samplingRate As Long 'サンプルレート(Hz) TotalSec As Long '演奏時間(s) End Type Public Type TAG_INFO szTrackName As String * 128 '曲名 szArtistName As String * 128 'アーティスト名 szAlbumName As String * 128 'アルバム名 szYear As String * 5 'リリース年号 szComment As String * 128 'コメント genre As Long 'ジャンル szGenreName As String * 128 'ジャンル名 End Type Public Type TAG_INFO_11 szTrackName As String * 128 '曲名 szArtistName As String * 128 'アーティスト名 szAlbumName As String * 128 'アルバム名 szYear As String * 5 'リリース年号 szComment As String * 128 'コメント genre As Long 'ジャンル szGenreName As String * 128 'ジャンル名 trackNo As Long 'トラック番号 (-1 = v1.0) End Type Public Type MPEG_INFO version As Long 'バージョン 1:MPEG-1, 2:MPEG-2, 3:MPEG-2.5 layer As Long 'レイヤ 1:Layer1. 2:Layer2, 3:Layer3 crcDisable As Long 'エラー保護 0:無効, 1:有効 extension As Long 'エクステンション 0:なし, 1:プライベート mode As Long 'チャンネルモード 0:Stereo, 1:Joint stereo, 3:Dual channel, 4:Mono copyright As Long '著作権 0:著作権保護あり, 1:著作権保護なし original As Long 'オリジナル 0:コピー, 1:オリジナル emphasis As Long 'エンフォシス 0:None, 1:50/15ms, 2:Reserved, 3:CCITT j.17 channels As Long 'チャンネル数 bitrate As Long 'ビットレート(kbit/s)(0 なら VBR形式) samplingRate As Long 'サンプルレート(Hz) fileSize As Long 'ファイルサイズ(Byte) flames As Long 'フレーム数 TotalSec As Long '演奏時間(s) End Type Public Type DEC_OPTION reduction As Long 'サンプリング 0:1/1 1:1/2 2:1/4 [Default = 0] convert As Long 'チャンネル 0:ステレオ 1:モノラル[Default = 0] freqLimit As Long '周波数[Default = 24000] End Type Public Type VBMP3_OPTION inputBlock As Long '入力フレーム数[Default = 40] outputBlock As Long '出力フレーム数[Default = 30] inputSleep As Long '入力直後のスリープ時間(ミリ秒)[Default = 5] outputSleep As Long '出力直後のスリープ時間(ミリ秒)[Default = 0] End Type Public Type LIST_INFO INAM As String * 128 '曲名 IART As String * 128 'アーティスト名 IPRD As String * 128 '製品名 ICMT As String * 128 'コメント文字列 ICRD As String * 128 'リリース年号 IGNR As String * 128 'ジャンル名 ICOP As String * 128 '著作権 IENG As String * 128 'エンジニア ISRC As String * 128 'ソース ISFT As String * 128 'ソフトウェア IKEY As String * 128 'キーワード ITCH As String * 128 '技術者 ICMS As String * 128 'コミッション ILYC As String * 128 '歌詞 End Type Public Type LIST_INFO_EX_VB INAM As String * 512 '曲名 IART As String * 512 'アーティスト名 IPRD As String * 512 '製品名 ICMT As String * 512 'コメント文字列 ICRD As String * 512 'リリース年号 IGNR As String * 512 'ジャンル名 ICOP As String * 512 '著作権 IENG As String * 512 'エンジニア ISRC As String * 512 'ソース ISFT As String * 512 'ソフトウェア IKEY As String * 512 'キーワード ITCH As String * 512 '技術者 ICMS As String * 512 'コミッション IMED As String * 512 '中間 ISBJ As String * 512 'タイトル IMP3 As String * 512 'MP3情報 ILYC As String * 512 '歌詞 End Type Public Type LIST_INFO_EX2 INAM As String '曲名 IART As String 'アーティスト名 IPRD As String '製品名 ICMT As String 'コメント文字列 ICRD As String 'リリース年号 IGNR As String 'ジャンル名 ICOP As String '著作権 IENG As String 'エンジニア ISRC As String 'ソース ISFT As String 'ソフトウェア IKEY As String 'キーワード ITCH As String '技術者 ICMS As String 'コミッション IMED As String '中間 ISBJ As String 'タイトル IMP3 As String 'MP3情報 ILYC As String '歌詞 End Type Public Type LYRICS_INFO sec As Long 'ミリ秒 LyricsNext2 As String * 128 '次々行の歌詞 LyricsNext1 As String * 128 '次行の歌詞 LyricsCurrent As String * 128 'カレント行の歌詞 LyricsPrev1 As String * 128 '前行の歌詞 LyricsPrev2 As String * 128 '前々行の歌詞 End Type Public Type LYRICS_INFO2 sec As Long 'ミリ秒 lineno As Long '行数 point As Long 'カレント行でのタグの位置 length As Long 'カレントタグの長さ(ミリ秒) LyricsNext2 As String * 128 '次々行の歌詞 LyricsNext1 As String * 128 '次行の歌詞 LyricsCurrent As String * 128 'カレントタグの歌詞 LyricsCurrentBegin As String * 128 'カレントタグより前の歌詞 LyricsCurrentLyrics As String * 128 'カレントタグまでの歌詞 LyricsCurrentAll As String * 128 'カレント行の歌詞 LyricsPrev1 As String * 128 '前行の歌詞 LyricsPrev2 As String * 128 '前々行の歌詞 End Type '未使用 Public Type WAVE_DATA channels As Long bitsPerSample As Long left As Long right As Long End Type Public Type WAVE_FORM channels As Long 'チャンネル数 bitsPerSample As Long 'ビット数/1サンプル samplingRate As Long 'サンプリングレート dataSize As Long 'ファイルサイズ End Type Public Type LYRICS3_INFO_VB IND_LYR As String * 1 'LYRフィールドの有無 '0':無し '1':有り IND_TIMETAG As String * 1 'タイムタグの有無 '0':無し '1':有り AUT As String * 250 '作詞/作曲者名 EAL As String * 250 '拡張アルバム名 EAR As String * 250 '拡張アーティスト名 ETT As String * 250 '拡張トラックタイトル End Type 'Public lyrData As String * 60000 '歌詞フィールド 'Public InfData As String * 60000 '情報フィールド 'Public ImgData As String * 60000 'イメージファイルへのリンク '@タグ Public Type AT_TAG_DATA Artist As String * 1024 'アーティスト名 Title As String * 1024 'タイトル Album As String * 1024 'アルバム名 Bgfile As String * 1024 '背景ファイル名 Bgfolder As String * 1024 '背景フォルダ名 TimeRatio As Double '時間比 Offset As Long '補正時間[ms] SilencemSec As Long '無音部時間[ms] TaggingBy As String * 1024 'タグ作成者 EditedBy As String * 1024 'タグ修正者 Silence As Long '無音フレーム数 flames As Long '総フレーム数 TotalSec As Long '演奏総時間[s] TimeType As String * 1024 '再生時間種別(WinAmp or Normal) End Type Public Type LYRICS_DATA no As Long '配列番号 sec As Long 'ミリ秒 lineno As Long '行番号 0〜 point As Long '行位置 0〜(0は歌詞先読用) tagFlag As Boolean 'タグ有無 textSize As Long 'テキストサイズ[byte] lyrics As String * 128 '歌詞 End Type 'ファイルタイプ定数 Public Const FT_NOMAL = 0 Public Const FT_WAVE = 1 Public Const FT_RMP = 2 Public Const FT_ID3V2 = 4 Public Const FT_MAC = 8 Public Const FT_ID3V1 = 16 Public Const FT_LYRICS3 = 32 'コールバック関数用 Public Const MSG_ERROR = 0 Public Const MSG_STOPING = 1 Public Const MSG_PLAYING = 2 Public Const MSG_PAUSING = 3 Public Const MSG_PLAYDONE = 4 Enum vbmp3_errNo ERR_MP3_FILE_OPEN = 1 ERR_MP3_FILE_NOT_OPEN = 2 ERR_MP3_FILE_READ = 3 ERR_MP3_FILE_WRITE = 4 ERR_WAV_FILE_OPEN = 5 ERR_WAV_FORMAT = 6 ERR_ENCODE_FILE_OPEN = 7 ERR_LYRICS_FILE_OPEN = 8 ERR_LYRICS_NON_DATA = 9 ERR_FRAME_HEADER_NOT_FOUND = 10 ERR_FRAME_HEADER_READ = 11 ERR_STATE_STOP = 12 ERR_NOT_STATE_STOP = 13 ERR_NOT_STATE_PLAY = 14 ERR_STATE_NON_ENCODE = 15 ERR_PLAY = 16 ERR_STOP = 17 ERR_INVALID_VALUE = 18 ERR_MALLOC = 19 ERR_NON_RIFF = 20 ERR_RIFF = 21 ERR_NOT_MP3 = 22 ERR_MAC_BIN = 23 ERR_UNKNOWN_FILE = 24 ERR_OPEN_OUT_DEVICE = 25 ERR_DECODE = 26 ERR_DECODE_THREAD = 27 ERR_ENCODE_THREAD = 28 ERR_CREATE_EVENT = 29 ERR_CODEC_NOT_FOUND = 30 ERR_WAVE_TABLE_NOT_FOUND = 31 ERR_ACM_OPEN = 32 End Enum Enum fft_window rectangle = 0 hanning = 1 hamming = 2 blackman = 3 End Enum '--------------------------------------------------------- '関数:Function NTrim() '機能:\0 以降の文字列削除 '引数:Word : 変換元文字列 '戻り値:変換後文字列 '--------------------------------------------------------- Function NTrim(Word As String) As String If InStr(Word, Chr(0)) > 0 Then NTrim = left(Word, InStr(Word, Chr(0)) - 1) Else NTrim = Word End If End Function '--------------------------------------------------------- '関数:Function LNTrim() '機能:文字列の先頭にある \0 文字列削除 '引数:Word : 変換元文字列 '戻り値:変換後文字列 '--------------------------------------------------------- Function LNTrim(Word As String) As String Dim textLength As Long Dim cnt As Long textLength = Len(Word) LNTrim = Word If InStr(LNTrim, Chr(0)) > 0 Then For cnt = 1 To textLength If Mid(LNTrim, 1, 1) = Chr(0) Or Mid(LNTrim, 1, 1) = vbCr Or Mid(LNTrim, 1, 1) = vbLf Then If cnt < textLength Then LNTrim = Mid(LNTrim, 2) Else LNTrim = "" End If Else Exit For End If Next cnt Else LNTrim = Word End If End Function '--------------------------------------------------------- '関数:Function NTrim2() '機能:先頭の\0と行末の \0 以降の文字列削除 '引数:Word : 変換元文字列 '戻り値:変換後文字列 '--------------------------------------------------------- Function NTrim2(Word As String) As String Word = LNTrim(Word) NTrim2 = NTrim(Word) End Function