none
如何用SQL的語法,使用ole操控excel的文字方塊? RRS feed

  • 問題

  •  

    我需要透過OLE控制EXCEL,
    去獲取EXCEL上的文字方塊(YA18),
    並塞一個值V到文字方塊(YA18)裡,
    但我試了多種方法都無法寫入...

    我EXCEL使用錄取巨集, 查到VB的寫法如下:
    -----------------------------------------------------------------
    Sub Macro1()

        ActiveSheet.Shapes("YA18").Select
        Selection.Characters.Text = "v"
        With Selection.Characters(Start:=1, Length:=1).Font
         .Name = "MS Sans Serif"
         .FontStyle = "標準"
         .Size = 10
         .Strikethrough = False
         .Superscript = False
         .Subscript = False
         .OutlineFont = False
         .Shadow = False
         .Underline = xlUnderlineStyleNone
         .ColorIndex = xlAutomatic
        End With
    End Sub
    -----------------------------------------------------------------

    我使用ORACLE的寫法如下:
    =================================
    PROCEDURE pp_excel_item(worksheet OLE2.OBJ_TYPE) IS
    application OLE2.OBJ_TYPE;
    workbooks OLE2.OBJ_TYPE;
    workbook OLE2.OBJ_TYPE;
    worksheets OLE2.OBJ_TYPE;
    shapes OLE2.OBJ_TYPE;
    args OLE2.LIST_TYPE;
    v_cnt number;
    begin
       args := OLE2.CREATE_ARGLIST;
       OLE2.ADD_ARG(args,YA18);
    OLE2.ADD_ARG(args,53); X列
    OLE2.ADD_ARG(args,2); Y欄

       shapes:= OLE2.GET_OBJ_PROPERTY(worksheet, shape, args);
       OLE2.DESTROY_ARGLIST(args);
       OLE2.SET_PROPERTY(shapes,Value,V);
       Releasing Object handle shapes.
       OLE2.RELEASE_OBJ(shapes);
    end;
    =================================

    經過偵測發現都會錯在這行:
    shapes:= OLE2.GET_OBJ_PROPERTY(worksheet, shape, args);

    但後來發現是因為無法得到寫入的真正位置,
    OLE2.ADD_ARG(args,YA18);
    因為我是寫成去讀取YA18, 而不是寫成(X,Y)欄位的位置,
    但是因為YA18是個文字方塊, 而不是儲存格, 所以我無法寫成(X,Y),
    因為造成讀取上的錯誤, 請問如何解決這個問題??

    2008年9月10日 上午 08:44

解答