ようするに(マイドキュメントにある)特定の拡張子を持つファイルだけを(別の拡張子にして)コピーしたいということですよね。
Wordが関係する必要はないですよね?単にファイルコピーさえすれば済む話と理解しました。
まずマイ ドキュメントへのパスはSHGetSpecialFolderPath関数で取得できます。
コード:
Dim Target[MAX_PATH] As Char
SHGetSpecialFolderPath(0, Target, CSIDL_PERSONAL, FALSE)
特定のファイルだけを選び出すにはにはFindFirstFile関数~FindNextFile関数を用います。
(使い方は過去ログを探せばあると思います)
Targetにマイ ドキュメントへのパスがありますのでlstrcpy(Target, "\*.abc")のようにすると,
TargetはFindFirstFileの最初の引数に適合します。
FindFirstFile/FindNextFileからは個々のファイルの情報がWIN32_FIND_DATA構造体で渡されます。
その中のメンバcFileNameにファイルへのパスが含まれていますから,
これをいったん別の変数へコピーしてしまいます。そしてそれをいじって目的のファイル名にします。
PathRenameExtension関数がそのとおりのことをしてくれます。
コード:
Dim DestinationPath[ELM(MAX_PATH)] As Char
lstrcpy(DestinationPath, fd.cFileName) ' fdはWIN32_FIND_DATA型の変数とします
PathRenameExtension(Path, ".CBA")
こうすればあとはCopyFile関数でコピーできます。
あとはDestinationPath周りとCopyFileをFindFirstFile~FindNextFileのループ内に書けば良いです。
ところでSHGetSpecialFolderPathとPathRenameExtensionはABで宣言がなされていないので自分でソースに以下の宣言をコピーしてください。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード:
Declare Function SHGetSpecialFolderPath Lib "Shell32" Alias "SHGetSpecialFolderPathA" (
hwndOwner As HWND,
pszPath As *Char,
nFolder As Long,
fCreate As Long
) As Long
Const CSIDL_PERSONAL = 5
Declare Function PathRenameExtension Lib "shlwapi.dll" Alias "PathRenameExtensionA" (
pszPath As *Char,
pszExt As *Char
) As Long