
私は長年、電気設計用の BOM (部品表) を生成する半自動システムを使用していました。CAD プログラムのスクリプトを使用して、私がずっと前に書いた外部コードを実行し、タブ区切り値 (TSV) ファイルを取得します。このプロセスでは、テンプレート XLS ファイルもコピーされます。このファイルは、TSV ファイルには含められない特定の列の書式を定義します。
Excel でテンプレート XLS ファイルを開き、DATA、FROM TEXT FILE などの操作を行ってファイル名を入力し、Return キーを 5 回押して、一連のデフォルトを取得します。TSV ファイルのデータは、テンプレート ファイルの書式設定でスプレッドシートに表示されます。一部のセルには、直接データではなく、方程式が含まれています。これはすべて意図したとおりに機能します。
この手順は、過去15年間ほどうまく機能していましたが、最近になってマイクロソフトが私のWin10ラップトップのExcelを数週間前にアップデートしたようで、すべてが壊れてしまいました。データ > テキストから > ファイル名完全に異なります。以前のコントロールはすべて失われ、推測も間違っています。何らかの「レガシー」モードを有効にする明確な方法も、詳細を提供する方法も見つかりません。以前とは異なる動作をするだけなので、プロセスが中断されます。
実際に問題を起こしているのは、2 つの非互換性のせいであるようです。
- 最初の行の最初のセルに数字が含まれている場合、自動的に独自のタイトル行が追加されるようになりました。セル A1 を、構築するボードの合計数として使用していたため、さまざまな数量がその数字から計算されました。最初の行の残りのセルは、列のタイトルです。最初の列の上部に数字があっても問題ありません。それは私の仕事です。
独自のタイトル行が追加されると、すべての数式が垂直方向に 1 つずれてしまいます。これはひどいですね。
- 数式のインポートが壊れています。最初の文字として「=」を含むセルを取得すると、「=」の前にスペースが追加され、残りの部分が結果として文字列として扱われます。スプレッドシートでスペースを手動で編集すると、意図した数式が得られます。このようなセルは何百もあるため、すべてを手動で修正することはできません。
以前の操作に戻るにはどうすればよいですか? 私は Excel の達人ではありませんし、そうなりたいとも思っていません。BOM の生成を進めたいのです。
実験として、TSV ファイルの数行を手動で CSV ファイルに変換しました。それをインポートすると、同じ問題が発生します。CSV ファイル名を入力するだけで、データが正しく読み込まれた Excel が起動しますが、もちろん、その方法では列の書式設定は認識されません。
どこかの大きな埃の層の下にある TSV ファイルを生成するプログラムを見つけて、必要に応じて変更することは難しくないはずです。たとえば、今すぐに CSV ファイルが必要な場合でも、それで問題ありません。一部のセルのテキスト文字列の特殊文字を回避するために、かなり前に TSV ファイルを作成したと思います。繰り返しますが、これは数週間前まで何年も機能していました。
答え1
これにより、インポートするファイルを選択して開くことができ、新しいワークブックを開いて値のみを貼り付けることができます。ここ。
Sub Makro1()
Dim fullpath As String
' Makro1 Makro
' Makro indspillet 13-07-2013 af Eric Bentzen
'
'
'Display a Dialog Box that allows to select a single file.
'The path for the file picked will be stored in fullpath variable
With Application.FileDialog(msoFileDialogFilePicker)
'Makes sure the user can select only one file
.AllowMultiSelect = False
'Filter to just the following types of files to narrow down selection options
.Filters.Add "Text Files", "*.TSV; *.TXT; *.CSV , 1"
'Show the dialog box
.Show
'Store in fullpath variable
fullpath = .SelectedItems.Item(1)
End With
On Error GoTo EndSub
Workbooks.OpenText Filename:=fullpath, _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _
Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _
Array(11, 1), Array(12, 1), Array(13, 1)), _
TrailingMinusNumbers:=True
EndSub:
End Sub
13 行しか実行できないように見えますが、必要に応じて変更することができます。