• ベストアンサー

VBAとロングファイル名

maruru01の回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 tnakさんの回答の間違いを。 多分単なるタイプミスだと思いますが、 GetShortPathName "Z:\My Document\audio.wav", ShortName, 512 を、以下のようにします。 GetShortPathName "Z:\My Document\audio.wav", FileName, 512 あと、第3引数の文字列長は、 Len(FileName) とした方がいいかも知れません。(変数宣言での文字列長の指定値を変えた時にいちいち変えなくても済みますから。) ちなみに、戻り値をつけるなら()がいると思います。 lRet = GetShortPathName ("Z:\My Document\audio.wav", ShortName, 512) 横から口を出してすみません。 では。

sheeps
質問者

お礼

お礼が遅れてすみません。 頂いた回答を元にコードをブラッシュアップさせていただきます。 ありがとうございました。

関連するQ&A

  • EXCELのVBAのコマンドボタンの動作について

    EXCELのVBAでコマンドボタンを押したとき、あるテキストを、単にテキストとして開く為に、以下のコーディングをしました。 しかし、「shell」コマンドは実行形式でないといけないようで、うまく行きません。どなたか、判る方いらっしゃいますか? --------------------------------------------- wk_path = ThisWorkbook.Path & "\memo1.txt" wk_rc = Shell(wk_path, vbNormalFocus) --------------------------------------------- (エラーコード:メッセージ) 5:プロシジャーの呼び出し、または引数が不正です。

  • エクセルVBA実行時のエラー:DLLファイルが見つ

    タイトル:エクセルVBA実行時のエラー:DLLファイルが見つかりません  質問させていただきます。どうぞよろしくお願いいたします。 環境:PC1~3の全てが、Excel2010、Win7になります。 初めてVBAから読み込むためのDLLファイルを作成いたしました。    PC1上で動作確認できている2つのファイル(Test4.dll(VC++2013にて作成)と それを呼び出すVBAのついたエクセルファイル)を、 PC2とPC3に移動し、VBAを実行しましたところ 何故かPC3でのみ下記エラーが発生いたします。 >実行時エラー'53' >ファイルが見つかりません。Test4.dll ・2つのファイルは同じフォルダ内で実行しております。 ・VBAのカレントパスは   ChDrive Left(ThisWorkbook.Path, 1)   ChDir ThisWorkbook.Path で変更しております。  試しにC:\Windows\System32と C:\Windows\SysWow64にも Test4.dllをコピペしてみましたが、同じエラーが出てまいります。 ・PC3のみ違うところを探してみましたが、思いつくのは下記くらいでございます。   1.VSが入っておりませんでした。(必要なのでしょうか??)   2.実行しているパスが違います。     PC1とPC2の実行パス:      D:\Users\Administrator\Documents\VBA_TEST     PC3の実行パス:      D:\Documents\VBA_TEST              もし何か原因として思いつかれる事がございましたらお教えいただけないでしょうか。 お詳しい方がいらっしゃいましたら何卒よろしくお願いいたします。

  • VBAエクセル・・・フォルダ名を取得する

    VBA初心者です。 マクロで、ヘッダー部分にフォルダ名を入力したいのですが、 どのように取得すればよいでしょうか? ThisWorkbook.Path にすると、パスが出てきますが、 \C:\***\△△△\○○○\XXX.xls だとすると、「○○○」だけを入力したいのですが・・・ よろしくお願いいたします。

  • アプリケーションのあるファイル名を取得

    VBプログラミングをしているのですが、 その本体がある場所のファイル名を取得したいのですが、なにかよい方法はあるでしょうか? たとえば 本体.exeまでのフルパスが C:\Documents and Settings\Administrator\My Documents\ファイルA\本体.exe としたら C:\Documents and Settings\Administrator\My Documents\ファイルA までを取得したいのです。 世ろ紙お願いいたします。

  • Excelのマクロでファイル情報の取得方法(更新日付情報付)

    現在Excelのマクロで 「指定フォルダの中のファイルで指定日より前のファイルを自動削除する」 マクロを作成中なのですが、現在指定ディレクトリ内のファイル情報の取得の部分で困っています。 ・dir() ではファイル名は取れるが(私の調べた限りでは)日付情報が取れない ・shellでdirコマンドを発行しようとすると、ディレクトリがロングファイルネームでひっかかってしまい、そのままではエラーになる。 例【shell("command.com /c dir c:\Documents and Settings > 結果.txt")】 といった状態です。 最悪ロングファイルネームをすべてDOSルールに変換してshellコマンドで発行するテもあるかと思いますが、略時に同じ名前が重ならないか(mydocu~1で良いのかmydocu~2になるのか)等で管理が煩雑になりそうです。 マクロ上でファイル名と最終更新日付を取得できる方法がご存知の方がいらっしゃいましたら教えてください。 尚、指定ディレクトリ名の取得~削除の実行、ログの作成あたりは殆ど出来上がっています。

  • Word VBAのコードのファイル名

    WordのVBAで、今動いているコードの入っているファイルのフルパスを取得するにはどうすればいいですか? そのモジュール(ファンクションやサブルーチン)を持っている(記録されている)のがドキュメントでもテンプレートでもアドインでも、そのファイルのフルパスを知りたいのですが。

  • シンクライアントでのVBAによるファイル保存

    ExcelのテンプレートファイルにVBAマクロを記述しています。 VBAにより新しいブックを開き、データを作り込んだ後、テンプレートファイルが置かれているフォルダに保存するマクロを作成しました。 リッチクライアント上では問題なく動くのですが、シンクライアント上で実行すると、  ActiveWorkbook.SaveAs Filename:='フルパスのファイル名'  ※フルパスのファイル名は、"C:\folder\file.xlsx"というような形式になっています。 のところでエラーになってしまいます。 パス付きのファイル名について、作法があるようでしたらお教えいただけますか。 よろしくお願い致します。

  • VBAでの " の使い方をお教え下さい

     ThisWorkbook.SaveAs Filename:="C:???.xlsm"(???はファイル名です)をVBAの式に直す方法をお教えください。なお、???はセルを参照することにしています。具体的にはRange("O1")です。  ThisWorkbook.SaveAs Filename:="""C:" & "Range(""O1"").xlsm"""とすると、ファイル名に : は使えないというエラーメッセージが出ました。  " の使い方が分かりづらく、悩んでいます。正しい使い方はどのように考えれば良いかも教えていただければ幸いです。よろしくお願いします。

  • フォルダ名とパス名の違うフォルダの作り方

     例えば、C:\Documents and Settings\<ユーザー名>\My Documents\My Pictures の場合、一番最後のサブフォルダ名が、[My Pictures] とパス名と同様に適用されます。  これを上記の場合、[マイ ピクチャ] になります。  こんな感じに、フォルダ名とパス名の違うフォルダの作り方を教えて下さい。

  • VBAで特定のフォルダ内のエクセルファイルをPDF

    VBAで特定のフォルダ内のエクセルファイルをPDFに変換する作業しているのですが Filename:=ThisWorkbook.Path & "\" & Replace(f.Name, fs.GetExtensionName(f.Path), "pdf"), _ 出来上がったファイル名を コード_日付にしたく Filename:=ThisWorkbook.Path & "\" & ("コード") & Range("B9") & ("_") & Format(Now, "yyyymmdd") & ".pdf", _ に入力したのですがB9セルのコードが入りません。 どこが間違っているのでしょうか?