このコードでは、Excelファイルと5つの異なるDATファイルを選択するように求められます。 Excelファイルがシートにロードされ、インポートする各DATファイルに新しいシートが追加されると想定されます。 Excelファイルは正しく読み込まれますが、最初のDATファイルのインポート時にプログラムエラーが発生します。区切りなしでDATを要求し、新しいシートを追加してDATをインポートするVBA
エラー:「実行時エラー '1004':アプリケーション定義またはオブジェクト定義エラー」。
エラーが発生した場所です。
ActiveSheet.QueryTables.Add(Connection:= _
DIFN, Destination _
これは、コードの残りの部分である:あなたが開いているファイルを想定し
' Prompt user for files
CAFN = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx")
DIFN = Application.GetOpenFilename("ESDI DAT File (*.dat), *.dat")
FOFN = Application.GetOpenFilename("ESFO DAT File (*.dat), *.dat")
FSFN = Application.GetOpenFilename("ESFS DAT File (*.dat), *.dat")
IPFN = Application.GetOpenFilename("ESIP DAT File (*.dat), *.dat")
PPFN = Application.GetOpenFilename("ESPP DAT File (*.dat), *.dat")
' Load Combined All
Dim x As Workbook
Dim y As Workbook
'## Open both workbooks first:
Set y = ActiveWorkbook
Set x = Workbooks.Open(CAFN)
'Now, transfer values from x to y:
With x.Sheets("Sheet1").UsedRange
'Now, paste to y worksheet:
y.Sheets("Start").Range("A1").Resize(_
.Rows.Count, .Columns.Count) = .Value
End With
'Close x:
x.Close
y.Sheets("Start").Name = "Combined All"
' Load DAT files
ActiveWorkbook.Worksheets.Add.Name = "ESDI"
With ActiveSheet.QueryTables.Add(Connection:= _
DIFN, Destination _
:=Range("$A$1"))
.Name = "ESDI"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 1, 1, 9, 1, 9, 9, 1, 9, 9, 9)
.TextFileFixedColumnWidths = Array(3, 7, 7, 2, 10, 8, 3, 8, 40, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
'接続:= '引数? –
C:\ Users \ Public \ Documents \ ESDIAPR.DAT – Jehiel238
「DIFN」は次のように宣言されていますか?これが動作するにはString型である必要があります。 'CStr(DIFN)'が文字列でない場合には動作します。 –