web-dev-qa-db-ja.com

VBAランタイムエラー1004:オブジェクト「ワークブック」のメソッド「OpenText」が失敗しました

Excel 2010(2003から)にアップグレードした後、Accessインポートからのデータを標準化するために使用されるスクリプトが機能しなくなりました。 「ランタイムエラー「1004」:オブジェクト「ワークブック」のメソッド「OpenText」が失敗しました」というエラーが返されます。

OpenText部分の前に、マクロはDateCreatedによって最新のファイルをフォルダーで検索し、ファイル名とパスを返します。

関連するコードは次のとおりです。

Workbooks.OpenText FileName:=myDir & "\" & strFilename, _
    Origin:=-535, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
    Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _
    Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15 _
    , 2), Array(16, 3), Array(17, 3), Array(18, 3), Array(19, 3), Array(20, 2), Array(21, 2), _
    Array(22, 1), Array(23, 2), Array(24, 2), Array(25, 3), Array(26, 2), Array(27, 2), Array( _
    28, 2)), TrailingMinusNumbers:=True

Excel 2010をハングアップさせている可能性のあるアイデアはありますか?

このファイルはまだ.xlsファイルであり、互換モードで実行されていますが、他のマクロではまだ問題はありません。

新しいマクロを記録し、古いものと比較した後に更新されました:

新しいマクロの1つの違い、Origin引数。

古いマクロの場合:

Origin:=-535

新しいマクロ:

Origin:=65001

Originを読んでみると、これがインポートされるファイルのソースであるように見え、省略できます。

Originはインポートにどの程度の重要性を持っていますか? DataTypeはすでに指定されています。 Originはエンコーディングを制御しますか?

元のマクロからOriginを削除すると、同じエラーが返されます。 Originの値を65001に変更しても、同じエラーが返されます。

6
music2myear

@datatoo、あなたは私を正しい方向に向けました。それは変数/パスの問題でした。どういうわけか、私は完全なファイルパス文字列を取るための文字列としてstrFullFileを使い始めました。ただし、strFileNameを変更し、myDir文字列を先頭に追加して完全なファイルパスを作成しました。 strFullFileへの適切な参照をstrFileNameに変更することを削除すると、問題が解決しました。

1
music2myear

パスを確認してください:

UserProfileFolder = Environ("UserProfile")

そして

Workbooks.OpenText Filename:

Office 2003では、XPの環境パスは次のとおりです。

%systemDrive%\Documents and Settings\{user}\My Documents

VistaおよびWindows7の場合、次のようになります。

%systemdrive%\users\Documents

ここで、%systemdrive%は通常Cです。