0

この関数を使用して、ワークブックから別のワークブックにシートをコピーしています。動作しますが、ワークブックからマクロを無効にすると、シートをコピーできなくなったようです。

この行を変更すると: m_objExcel.AutomationSecurity = msoAutomationSecurityForceDisable

これに m_objExcel.AutomationSecurity = msoAutomationSecurityByUI

動作しますが、警告メッセージが表示されます。また、行にコメントを付けると、完全に機能しますが、マクロがオンになっています。

Private Sub CopyFunction() 
    Set m_objExcel = New Excel.Application 'creare obiect
    m_objExcel.DisplayAlerts = False 

    g_secAutomation = m_objExcel.AutomationSecurity
    m_objExcel.AutomationSecurity = msoAutomationSecurityForceDisable
    m_objExcel.Visible = True


    Dim CopyFrom As Workbook
    Dim CopyTo As Workbook
    Dim CopyThis As Object

    Set CopyFrom = m_objExcel.Workbooks.Open("D:\FromFile.xls")
    Set CopyTo = m_objExcel.Workbooks.Open("D:\ToFile.xls")

      Set CopyThis = CopyFrom.Sheets(1) ''Sheet number 1
      CopyThis.Copy After:=CopyTo.Sheets(1)

    m_objExcel.Workbooks(CopyTo.FullName).Save
    CopyFrom.Close
    CopyTo.Close
    m_objExcel.Workbooks.Close
    MsgBox "ok"
    End Sub

Access から使用しており、Excel ファイルで作業しています。何が問題ですか?ワークブックから別のワークブックにシートをコピーし、マクロを無効にする方法はありますか?

4

2 に答える 2

1

これが、無効化マクロの一般的な目的です: セキュリティ。
それはあなた自身の保護のためのものです。不明な作成者からワークブックを受け取った場合、この人は有害なソフトウェアを送信しようとしている可能性があります。
たとえば、ワークブックを開くとすぐにコードがファイルの削除を開始するとします。
マクロを無効にすると、これが防止され、コードを実行する前にコードを調べることができます。

解決策として、あなたが開発者としてプロジェクトに署名している間、ユーザーはあなたを作成者として信頼できます。
このリンクをチェックすることをお勧めします: http://msdn.microsoft.com/en-us/library/aa190098(v=office.10 )

(セキュリティを完全にオフにする (マクロを有効にする) こともできますが、これは一般的にはお勧めできません。)

于 2012-07-24T09:37:42.453 に答える
0

問題はここにあることがわかりました:

 m_objExcel.Workbooks(CopyTo.Name).Save
于 2012-07-24T11:24:25.623 に答える