Mac用のExcel 2011で完全に動作するマクロをExcel 2016で動作させようとしています。目的は、ユーザーに.csvファイルを含むフォルダを指定させてから、マクロがすべての.csvファイルをループし、各.csvファイルを開いて別のブックに情報をコピーすることです。Mac Excel 2016 VBA - Workbook.openは1004エラーを返します
ユーザーが選択したフォルダー内の最初の.csvファイルを開こうとすると、マクロが失敗し、1004エラーが発生してもファイルが見つかりません。
(サイドノート:マクロでは以前、ユーザが選択したファイルを完璧に動作workbooks.openは)
マクロが巨大であるので、私は真新しい小さい方が、ちょうどこの問題を乗り越えるために作られました。ここには同じ失敗動作がある小さなテストコードがあります:
Sub Test()
Dim folderpath As Variant
Dim filename As Variant
Dim newfilename As Variant
Dim wb As Workbook
Dim newfolderpath As Variant
folderpath = MacScript("choose folder as string")
newfolderpath = Replace(folderpath, ":", "\")
MsgBox (newfolderpath)
filename = MacScript("Choose file as string")
newfilename = Replace(filename, ":", "\")
MsgBox (filename)
MsgBox (newfilename)
MsgBox (Dir(filename))
MsgBox (newfolderpath & Dir(filename))
Set wb = Workbooks.Open(newfolderpath & Dir(filename))
End Sub
すべてのmsgboxは期待値を提供します。
- newfolderpath = \セパレータを含むパス全体。
- filename =区切り記号を含むパスとファイル名全体。
- newfilename =パスとファイル名の\区切り記号。
- Dir(ファイル名)=ファイル名のみ。
- newfolderpath & Dir(ファイル名))=パスとファイル名全体に\ の区切り文字が付いています。 WBラインを設定し
います:
Run-time error '1004'
'Hard DRIVE\USERS\DAVE\DESKTOP\CSVS\1.CSV'
が見つかりませんでした。
明らかにファイルがあり、開くことができ、動作します。
ご協力いただきまして誠にありがとうございます。
私はMaxのパス区切り記号が ":"か "/"のどちらかであると思っていましたが、バックスラッシュは本当に機能しますか? –
'Dir'関数は{vba-mac}のパラメータとして' MacID( "TEXT") 'を必要としませんか? [this](http://stackoverflow.com/questions/10045474/dir-function-not-working-in-mac-excel-2011-vba)を参照してください。 – Jeeped
コードのボーナスポイントは[新しいより小さなもの]です。ニース[mcve]。 – Jeeped