日期:2014-05-20  浏览次数:20993 次

java怎么调用excel中的vb宏函数,用于excel转换格式和添加一些表头。
java中可以调用excel中的vb宏函数吗?最好给出代码参考。
宏.xla用于excel转换格式和添加一些表头。
下面是我编写excel中的vb代码:
打开自定义窗体call函数:InAndOut。


Sub CallUserForm11()
  UserForm1.Show
End Sub

Sub InAndOut()
Dim response
Dim currentwindow

currentwindow = ActiveWindow.Caption
  response = MsgBox("需要转换的是:<" + currentwindow + ">。", vbOKCancel)
  If response = 1 Then
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Workbooks.Open Filename:="D:\出入库导入标准模板.xls"
    Windows("出入库导入标准模板.xls").Activate
    Rows("1:6").Select
    Selection.Copy
    Windows(currentwindow).Activate
    Selection.Insert Shift:=xlDown
    Application.CutCopyMode = False
    ActiveSheet.UsedRange.Select
    Selection.NumberFormatLocal = "G/通用格式"
    ActiveWorkbook.Save
    MsgBox ("数据转换完成!")
    
  Else
    Exit Sub
  End If
    
End Sub

------解决方案--------------------
一、编写vbs文件
test.vbs文件中vb代码如下:
dim args
set args = wscript.arguments
Dim objXL
Set objXL = CreateObject("Excel.Application")
With objXL
    .Workbooks.Open (args(0))
    .Application.Run "InAndOut"
    .ActiveWorkbook.Save
    .Workbooks.Close
    .Application.Quit
End With
Set objXL = Nothing
解释: args(0)是接收下表为0的参数,也就是第一个参数
.Application.Run "InAndOut"的InAndOut是excel文件中宏的名称

二、java调用vb
Runtime.getRuntime().exec("cmd /c start f:/test.vbs f:/test.xls")
解释: 运行f盘下test.vbs文件,参数为f盘test.xls,在vb文件中.Workbooks.Open (args(0))读取的args(0)则是test.xls。
------解决方案--------------------
我写的是f:/test.vbs和f:/test.xls,你的test.vbs和test.xls放在哪个路径,这里就替换一下
360是误杀,你把360关掉