您可以使用一个小的 Excel 辅助宏来使用命令行 .Open 95-source 和 .SaveAs 另一种格式。您可以使用 kernel32/GetCommandLine 例程将 cmdline arg 放入您的应用程序中。
为此,请创建一个工作簿“Converter.xls”并插入以下代码
模块“ThisWorkbook”
Private Sub Workbook_Open()
Dim CmdRaw As Long, CmdLine As String, Idx As Integer
Dim MyFile As Workbook
CmdRaw = GetCommandLine
CmdLine = CmdToSTr(CmdRaw)
' Msgbox CmdLine
Idx = InStr(1, CmdLine, "/e/")
Set MyFile = Workbooks.Open(Mid(CmdLine, Idx + 3, 99))
MyFile.SaveAs "Test2003.xls", xlExcel7
Application.Quit
End Sub
模块“模块1”
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineW" () As Long
Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (MyDest As Any, MySource As Any, ByVal MySize As Long)
Function CmdToSTr(Cmd As Long) As String
Dim Buffer() As Byte
Dim StrLen As Long
If Cmd Then
StrLen = lstrlenW(Cmd) * 2
If StrLen Then
ReDim Buffer(0 To (StrLen - 1)) As Byte
CopyMemory Buffer(0), ByVal Cmd, StrLen
CmdToSTr = Buffer
End If
End If
End Function
最后,通过命令行从包含 95-XLS 的路径调用它
C:\Progra~1\Micros~2\OFFICE11\excel Converter.xls /e/test95.xls
test95.xls 将被打开并保存为 xlExcel7 格式的 test2003.xls。
到目前为止,基本技术...现在您可以创造性地添加第二个 cmd 行参数(由“/”分隔 - 更智能地解析,等等
重要提示:Excel 必须在“宽松的安全性”下运行,以避免在启动时出现宏警告消息 - 但是,只要您调试,警告消息就很好(禁用允许您返回代码;-))
我在 Excel2003 上快速而肮脏地测试了这个
希望有帮助