2017-11-14 1 views
0

아래 VBS 코드를 사용하여 QlikView에서 하나의 차트를 내보내 Excel로 내보내고 있습니다. 이유 나는 '@'= 번호 형식을 사용하고 '22001E-07'은 2.20E-03VBA 매크로를 사용하여 Excel로 데이터를 내보낼 때 서식을 지정하는 중

sub GPOTest1 
set oXL=CreateObject("Excel.Application") 
oXL.visible=True 
oXL.Workbooks.Add 
aSheetObj=Array("CH01") 
for i=0 to UBound(aSheetObj) 
oXL.Sheets.Add 
Set oSH = oXL.ActiveSheet 
oSH.Range("A1").Select 
Set obj = ActiveDocument.GetSheetObject(aSheetObj(i)) 

obj.CopyTableToClipboard True 
oSH.Columns("B").NumberFormat = "@" ‘In “B” column I get values like 22001E-07 
oSH.PasteSpecial -4163 

sCaption=obj.GetCaption.Name.v 
set obj=Nothing  
oSH.Rows("1:1").Select 
oXL.Selection.Font.Bold = True  
oSH.Cells.Select 
oXL.Selection.Columns.AutoFit 
oSH.Range("A1").Select  
oSH.Name=left(sCaption,30) 
set oSH=Nothing 
next 
set oXL=Nothing 
end sub 

로 변환됩니다처럼 내가 그것을 실행 한 후 차트에 다음 값을 사용하지 않기 때문에 경우에 특별한 붙여 넣기하고 처음, 2 시간에서 내가받을 메시지

워크 시트 클래스의 PasteSpecial 방법은 가

이 링크를하지만, 문제가 계속 언급

실패

: use macro to convert number format to text in Excel

답변

0

Excel 인스턴스를 체계적으로 만들지 않아야합니다. 귀하의 코드는 Excel을 열어 둡니다. Excel이 열리면 다음 번에 GetObject을 사용하여 Excel에 대한 참조를 얻을 수 있습니다. 아래 코드에서 수행 한 접근법을 참조하십시오. 여기서도 몇 가지를 단순화했습니다.

Sub GPOTest1() 
    On Error Resume Next 
    Set oXL = CreateObject("Excel.Application") 
    If oXL Is Nothing Then 
     Set oXL = GetObject(Class:="Excel.Application") 
    End If 
    On Error GoTo 0 

    oXL.Visible = True 

    Set oWB = oXL.Workbooks.Add 
    aSheetObj = Array("CH01") 

    For i = 0 To UBound(aSheetObj) 
     Set oSH = oWB.Sheets.Add 

     Set obj = ActiveDocument.GetSheetObject(aSheetObj(i)) 
     obj.CopyTableToClipboard True 

     oSH.Columns("B").NumberFormat = "@" 'In “B” column I get values like 22001E-07 
     oSH.PasteSpecial -4163 

     oSH.Rows("1:1").Font.Bold = True 
     oSH.Columns.AutoFit 
     oSH.Range("A1").Select 
     oSH.Name = Left(obj.GetCaption.Name.v, 30) 

     Set oSH = Nothing 
     Set obj = Nothing 
    Next 

    Set oXL = Nothing 
End Sub 
관련 문제