使用VBA打开和保存非Excel文件

使用VBA打开和保存非Excel文件,vba,excel,Vba,Excel,我有打开时在Excel中打开的文件,但它们本身不是Excel文件(打开时只是转换)。我希望能够将这些文件中的一些信息拉到另一个Excel工作表中,但由于它们不是Excel文件,我不能只链接这些文件 我想用VBA打开这些文件(它们将以Excel文件的形式打开),然后将它们保存为永久的excle文件,以便我可以随心所欲地使用它们 要打开该文件,我有以下代码: Option Explicit Declare Function ShellExecute Lib "shell32.dll" _ Alia

我有打开时在Excel中打开的文件,但它们本身不是Excel文件(打开时只是转换)。我希望能够将这些文件中的一些信息拉到另一个Excel工作表中,但由于它们不是Excel文件,我不能只链接这些文件

我想用VBA打开这些文件(它们将以Excel文件的形式打开),然后将它们保存为永久的excle文件,以便我可以随心所欲地使用它们

要打开该文件,我有以下代码:

Option Explicit

Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" ( _
ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Function OpenAnyFile(FileToOpen As String)

Call ShellExecute(0, "Open", FileToOpen & vbNullString, _
vbNullString, vbNullString, 1)

End Function

Sub OpenFile()

Call OpenAnyFile("C:\Filename")

End Sub

但是,我不确定如何将现在打开的文件保存在此代码中。

如果您将此代码放入Excel VBE并从中运行,那么您应该能够使用
另存为
方法(文档化)来保存
工作簿

Dim owb As Workbook

With Application
    .DisplayAlerts = False
    .ScreenUpdating = False
    .EnableEvents = False
End With

fname = "Filename goes here (include .extension)"
fpath = "Path goes here"

Set owb = Application.Workbooks.Open(fpath & "\" & fname)

With owb
    .SaveAs fpath & "\" & fname & ".xlsx", 51
    .Close
End With
根据MSDN文档保存为参数

表达式.SaveAs(文件名、文件格式、密码、WriteResPassword、ReadOnlyRecommended、CreateBackup、AccessMode、冲突解决、AddToMru、TextCodepage、TextVisualLayout、Local)*


如果使用
工作簿.Open
工作簿.OpenText
而不是使用API调用,会发生什么情况?@Rory它在excel中打开文件,但格式不正确。当您打开文件并将其转换为正确的excel文件时,会发生一些特殊的过程/转换。然后您可能需要指定一些参数。文件的格式是什么?@Rory它们是.TDMS文件。它如何知道我要保存新打开的excel文件,而不是运行宏的excel文件?谢谢。这将起作用,但我不能使用工作簿。打开(无论出于何种原因,格式不会保留)