2016-04-04 26 views
0

ファイルを開いたときにExcelで開くが、Excelファイル自体ではない(開かれたときに変換される)ファイルがある。これらのファイルの情報の一部を別のExcelシートに取り込むことができるようにしたいのですが、Excelファイルではないので、ファイルをリンクすることはできません。VBAでExcel以外のファイルを開いて保存する

これらのファイルをVBA(Excelファイルとして開く)で開いて永久エグゼクティブファイルとして保存したいので、私が望むように使用できます。ファイルを開くには

、私はこのコードを持っている:

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からそれを実行している場合

+1

API呼び出しの代わりに 'Workbooks.Open'または' Workbooks.OpenText'を使用するとどうなりますか? – Rory

+0

@RoryファイルをExcelで開きますが、正しくフォーマットされていません。ファイルを開いて適切なExcelファイルに変換するときに起こる特別なプロセス/変換があります。 – ryangicn

+0

次に、いくつかのパラメータを指定する必要があります。ファイルの形式は何ですか? – Rory

答えて

0

、あなたはちょうどそう

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 

名前を付けて保存のようWorkbook用(hereを文書化)SaveAsメソッドを使用することができるはずですMSDNドキュメントごとなどのパラメータ

表現.SaveAs(ファイル名、FileFormatは、パスワード、WriteResPassword、ReadOnlyRecommended、CreateBackup、ACCESSMODE、ConflictResolution、AddToMru、TextCodepage、TextVisua llayout、local)*

+0

マクロが実行されているExcelファイルではなく、新しく開かれたExcelファイルを保存したいのですが、どうすればわかりますか? – ryangicn

+0

更新コードを試してください – CaffeinatedCoder

+0

ありがとうございました。しかしこれはWorkbooks.Openを使用することはできません(どのような理由であれ、書式設定には何の問題もありません) – ryangicn

関連する問題