注冊 登錄
Office中國論壇/Access中國論壇 返回首頁

葉海峰的個人空間 http://ctxi.cn/?42510 [收藏] [復制] [分享] [RSS]

日志

2個水晶易表之間進行參數(shù)傳遞

熱度 3已有 3120 次閱讀2012-11-22 15:35 |個人分類:水晶易表| 水晶易表

水晶易表和mdb交互,和.net交互,都已經(jīng)實現(xiàn)了,那么,水晶易表之間能不能交互呢,當然是可以的.

圖里面演示的就是兩個水晶易表導出的swf文件,嵌入到一個ppt文檔中,一個負責傳出參數(shù),一個接收參數(shù)作出相應的改變.

實現(xiàn)的思路:

傳出參數(shù)的swf,設置了FS命令,傳遞出參數(shù)
接收參數(shù)的swf設置了xml數(shù)據(jù)連接,獲取參數(shù)
PPT負責shockwave控件的fs_command事件激活獲取到傳遞來的參數(shù)時,將參數(shù)寫到指定的xml的文檔中,讓接收參數(shù)的swf獲取到參數(shù).

注: Access,Excel等套件解決思路一樣,只要對部分代碼作出修改即可.

Sub OnSlideShowPageChange() 'PPT開始播放
'預先生成一個xml文件,防止接收參數(shù)的swf因沒有連接到對應的xml文件而報錯
    If Dir("c:\test.xml") = "" Then Call WriteToXML("上海")

End Sub
Sub OnSlideShowTerminate() 'PPT播放完畢
    On Error Resume Next
    Kill "c:\test.xml" '刪除臨時生成的xml文件
End Sub

Sub WriteToXML(argsStr As String)

    Dim Str    As String
    Dim xn

    Open "c:\test.txt" For Output As #1
    Str = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & "?>"

    Print #1, , Str
    Print #1, , "<data>"
    Str = "<variable name=" & Chr(34) & "Range_0" & Chr(34) & ">"
    Print #1, , Str

    On Error Resume Next

    Print #1, , "<row>"
    Print #1, , "<column>" & argsStr & "</column>"
    Print #1, "</row>"
    Print #1, , "</variable>"
    Print #1, , "</data>"
    Close #1
    xn = "c:\test.txt"
    Call WriteToFile(xn, ReadFile(xn, CheckCode(xn)), "UTF-8")
    Kill "c:\test.xml"
    Name "c:\test.txt" As "c:\test.xml"

End Sub

Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)
    Call WriteToXML(args)
End Sub



Function WriteToFile(FileUrl, Str, CharSet)
    Dim stm    As Object
    On Error Resume Next
    Set stm = CreateObject("Adodb.Stream")
    stm.Type = 2
    stm.Mode = 3
    stm.CharSet = CharSet
    stm.Open
    stm.WriteText Str
    stm.SaveToFile FileUrl, 2
    stm.flush
    stm.Close
    Set stm = Nothing
End Function

Function ReadFile(FileUrl, CharSet)
    On Error Resume Next
    Dim stm    As Object
    Dim Str
    Set stm = CreateObject("Adodb.Stream")
    stm.Type = 2
    stm.Mode = 3
    stm.CharSet = CharSet
    stm.Open
    stm.LoadFromFile FileUrl
    Str = stm.readtext
    stm.Close
    Set stm = Nothing
    '  wscript.Echo Str
    ReadFile = Str
End Function

Function CheckCode(FileUrl)
    Dim slz
    Dim Bin
    Dim Codes
    Set slz = CreateObject("Adodb.Stream")
    slz.Type = 1
    slz.Mode = 3
    slz.Open
    slz.Position = 0
    slz.LoadFromFile FileUrl
    Bin = slz.read(2)
    If AscB(MidB(Bin, 1, 1)) = &HEF And AscB(MidB(Bin, 2, 1)) = &HBB Then
        Codes = "UTF-8"
    ElseIf AscB(MidB(Bin, 1, 1)) = &HFF And AscB(MidB(Bin, 2, 1)) = &HFE Then
        Codes = "Unicode"
    Else
        Codes = "GB2312"
    End If
    slz.Close
    Set slz = Nothing
    CheckCode = Codes
End Function


發(fā)表評論 評論 (6 個評論)

回復 yanwei82123300 2012-11-22 15:58
葉老師的大作真多,望與大家分享有例子的,謝謝
回復 tmtony 2012-11-22 18:07
受教了。
回復 輕風 2012-11-23 15:23
最近專門研究水晶易表啦?
回復 葉海峰 2012-11-23 17:23
輕風: 最近專門研究水晶易表啦?
是的,呵呵.
回復 輕風 2012-11-26 14:48
葉海峰: 是的,呵呵.
好學么?我也要學
回復 葉海峰 2012-11-26 16:14
很容易學.

facelist doodle 涂鴉板

您需要登錄后才可以評論 登錄 | 注冊

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 08:37 , Processed in 0.143953 second(s), 18 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部