トップ回答者
EXCEL2016でテキストファイル区切って読み込みできず

質問
-
テキストファイルを読み込むマクロを作成しました。
Excel2010では指定文字で区切られ、いくつかのセルに分けられて読み込むのですが、
Excel2016では、指定文字が区切られずに読み込んでしまいます。
下記がそのマクロです。
何がいけないのでしょうか。
Sub Macro1()
Workbooks.Open Filename:=Windows.Application.GetOpenFilename("ファイル,*.*,全て,*.*")
Dim Open_File As String '指定のファイル名Open_File = ActiveWorkbook.Name
Workbooks.Open Filename:=Open_File
Windows(Open_File).ActivateWorkbooks.OpenText Filename:=Open_File, _
Origin:=1257, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlNone, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, Comma:= _
False, Space:=True, Other:=True, OtherChar:="!", FieldInfo:=Array(Array _
(1, 2), Array(2, 2), Array(3, 2)), TrailingMinusNumbers:=TrueEnd Sub
回答
-
もともと、
Workbooks.Open
Workbooks.OpenText
と二つ使われていてなんか奇妙なコードです。
(Excel2010では一旦閉じて再度読み込みをしている ...ような感じ。)
(Excel2016では同じファイル名の読み込みをスルーしている ...ような感じ。)
それぞれでステップ実行をしてみればわかります。関係はないですが、Origin:=1257はたぶん間違いです。
Code-Page-Identifiers(この表が使われるのかどうかわかりませんけど)
https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspxSub Macro1()
[訂正]2018-02-22 Thu. 14:22
Dim Open_File As String '指定のファイル名
Open_File = Windows.Application.GetOpenFilename("ファイル,*.*,全て,*.*")
Workbooks.OpenText Filename:=Open_File, _
Origin:=1257, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlNone, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, Comma:= _
False, Space:=True, Other:=True, OtherChar:="!", FieldInfo:=Array(Array _
(1, 2), Array(2, 2), Array(3, 2)), TrailingMinusNumbers:=True
End Sub
あ、Origin:=1257は間違いではないかも。
すべての返信
-
返信ありがとうございます。
指定文字 ⇒ 「全て」です。
A列に全てのテキストが読み込まれます。
Semicolon:=True は True です。
B列以降は空白です。
エクセルで直接読み込む場合は問題なく読み込まれます。
実は、エクセルで直接読み込む動作をマクロに記録してマクロを作りました。
また、ファイル名に変数を使っていますが、変数を使わず、
ファイル名を直に指定すれば区切って読み込込んでくれます。
① 変数指定時 ⇒ Workbooks.OpenText Filename:=Open_File, Origin:=1257・・・・・・
② 直指定時 ⇒ Workbooks.OpenText Filename:=FileA.xlsx, Origin:=1257・・・・・・
①はNGですが、②ではFileA.xlsxを区切って読み込みます。
何か解決方法があれば、ご教示頂いたくお願い申し上げます。
-
返信ありがとうございます。
テキストファイルは下記のようになっています。
抜粋です。
$PACKAGES
! 220uF/35V; C1
! 0.1uF(B); C2
! 0.1uF(B); C3
! 0.1uF(B); C4
・
・
・
$Endこの同じテキストファイル、同一マクロで結果が異なるので途方に暮れてます。
かなりいろいろと検証をしたのですがどうしてもうまくいきません。
これは「Excel2016の障害?」と思いたくなるほどです。
何かヒントになりことでも構わないのでご教示頂ければ幸いです。
画像は貼り付けられなくて見づらいですが、現在下記のような結果になっています。
結果A 結果B
Excel2016(ファイル名変数) Excel2016(ファイル名固定)
Excel2010(ファイル名変数)
A列 A列 B列 C列
$PACKAGES $PACKAGES
! 220uF/35V; C1 220uF/35V C1
! 0.1uF(B); C2 0.1uF(B) C2
-
もともと、
Workbooks.Open
Workbooks.OpenText
と二つ使われていてなんか奇妙なコードです。
(Excel2010では一旦閉じて再度読み込みをしている ...ような感じ。)
(Excel2016では同じファイル名の読み込みをスルーしている ...ような感じ。)
それぞれでステップ実行をしてみればわかります。関係はないですが、Origin:=1257はたぶん間違いです。
Code-Page-Identifiers(この表が使われるのかどうかわかりませんけど)
https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspxSub Macro1()
[訂正]2018-02-22 Thu. 14:22
Dim Open_File As String '指定のファイル名
Open_File = Windows.Application.GetOpenFilename("ファイル,*.*,全て,*.*")
Workbooks.OpenText Filename:=Open_File, _
Origin:=1257, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlNone, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, Comma:= _
False, Space:=True, Other:=True, OtherChar:="!", FieldInfo:=Array(Array _
(1, 2), Array(2, 2), Array(3, 2)), TrailingMinusNumbers:=True
End Sub
あ、Origin:=1257は間違いではないかも。