エラー1004を表示せずにvbaの1行を削除することが可能かどうかは現在疑問に思っています。私はユーザーが設定に入り、vbaプロジェクトオブジェクトモデルへのアクセスを信頼する必要はありません。これは可能ですか? 現在のコード(選択されていないを信頼していない場合は、エラーが発生した): ActiveWorkbook.Application.VBE.ActiveVBProject.VBComponents("Sheet1").CodeModule.DeleteLines 170, 1
vbaでexcel vbaの1行を削除する
答えて
私は、ユーザーがVBAプロジェクトオブジェクトモデルへの設定と信頼アクセスに行かなければならないしたくありません。これは可能ですか?
いいえ、これはセキュリティ機能です。プログラムでVBAを使用してこのセキュリティ設定を切り替えることは不可能です。
Microsoft(強調追加)あたり:
この設定は、開発者のためのものであり、故意 をロックアウト、または任意 オートメーションクライアントからVBAオブジェクトモデルへのプログラムによるアクセスを可能にするために使用されます。つまり、 のセキュリティオプションをOfficeプログラムを自動化するために作成し、 アプリケーション(VBA)環境とオブジェクトモデルのMicrosoft Visual Basicをプログラムで操作します。これはユーザーごとに とアプリケーションごとの設定であり、デフォルトではアクセスが拒否されます。この セキュリティオプションを使用すると、承認されていないプログラムがエンドユーザーシステムに影響を与える可能性のある「自己複製」コードを構築するのがより困難になります。 オートメーションクライアントがVBAオブジェクトモデル にプログラムでアクセスできるようにするには、コードを実行しているユーザーが明示的に アクセスを許可する必要があります。アクセスを有効にするには、チェックボックスをオンにします。
アクセスを信頼することなくマクロの1行を削除する方法はありません? – Noisewater
アプリケーションレベルの設定として明示的に許可せずに、プログラムでVBAプロジェクトオブジェクトモデルにアクセスする方法はありません。 –
あなたはそれがあなたのニーズに合うかどうかを確認、次のコードのようなものを試みることができる:
Option Explicit
Sub CheckTrustAccess_toVBAProjModule()
' display Windows Version installed on this PC
' Win7. (=6.1, 64bit)
' Win8 (=6.2, 64bit)
' Win8.1 (=6.3*)
' Win10 (=10.0*)
'
' MsgBox "Windows Version is: " & getVersion
Dim TrustAccess_VBAProjModule_Path As String
Dim TrustAccess_VBAProjModule As Integer
' ----- first check if "Trust Access to the VBA Project module is on ------
TrustAccess_VBAProjModule_Path = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & "\Excel\Security\AccessVBOM"
' check if Trust Access to the VBA Projct Module in the Registry is 1 or 0
TrustAccess_VBAProjModule = CInt(RegKeyRead(TrustAccess_VBAProjModule_Path))
If TrustAccess_VBAProjModule = 1 Then
' run your code here ...
Else ' need to auto-click the "v" by modifying the registry settings
' loop until Trust Access to the VBA Projct Module in the Registry is 1
' it might take time to modify, so use this instead of timers
While TrustAccess_VBAProjModule = 0
Call RegKeySave(TrustAccess_VBAProjModule_Path, "1")
TrustAccess_VBAProjModule = CInt(RegKeyRead(TrustAccess_VBAProjModule_Path))
Wend
MsgBox "Initiated VBA settings, please run the Export again", vbInformation
End If
End Sub
'===========================================================
Function RegKeyRead(i_RegKey As String) As String
' reads the value for the registry key i_RegKey
' if the key cannot be found, the return value is ""
' Link : http://vba-corner.livejournal.com/3054.html
Dim myWS As Object
On Error Resume Next
'access Windows scripting
Set myWS = CreateObject("WScript.Shell")
'read key from registry
RegKeyRead = myWS.RegRead(i_RegKey)
End Function
'===========================================================
Sub RegKeySave(i_RegKey As String, i_Value As String, Optional i_Type As String = "REG_DWORD")
' sets the registry key i_RegKey to the value i_Value with type i_Type
' if i_Type is omitted, the value will be saved as string
' if i_RegKey wasn't found, a new registry key will be created
' Link : http://vba-corner.livejournal.com/3054.html
Dim myWS As Object
'access Windows scripting
Set myWS = CreateObject("WScript.Shell")
'write registry key
myWS.RegWrite i_RegKey, i_Value, i_Type
End Sub
@Noisewaterあなたは上記の私のコードを見ましたか?それがあなたの必要に合っているかどうかを調べようとしましたか? –
これをテストしただけで動作します。ユーザーがアドインを2回クリックするのは大きな問題ではありません。ありがとう! – Noisewater
ただ1つの問題。チェックを行いますが、信頼できない場合はチェックボックスをオンにします。ユーザーがセキュリティセンター/マクロセキュリティを開き、[OK]を選択した場合にのみ機能します。これは正しい方向の一歩ですが、ユーザーはまだ正式なOKを与える必要があります。 – Noisewater
- 1. VBA Excel重複行を削除する
- 2. Excel vba削除サブコード
- 3. Excel VBAは1行ループでトリプル重複を削除します
- 4. Excel VBAで写真を削除する
- 5. ExcelのVBAを削除するには、 "?"
- 6. 削除重複EXCEL VBAマクロ
- 7. オプトアウトを削除するExcel VBA
- 8. Excel VBA:古いレコードを削除する
- 9. Excel VBAコマンドボタンで複数の行を削除するには
- 10. VBA Excel - 特定の間隔で行を削除する
- 11. VBAを使用してExcelで行を削除する
- 12. MS Access VBA Excelで行を削除する方法
- 13. VBAを使用してExcel内の行を削除する
- 14. 重複する行をすべて削除するExcel vba
- 15. 重複する行を削除するExcel VBA
- 16. Excel VBA範囲外の行を削除する
- 17. Excel vba条件を満たすまで行を削除
- 18. Excel VBAの辞書値に基づいてExcelで行を削除する
- 19. Excel VBA隠しテーブル行を削除する
- 20. Excel VBA不要なワークシートを削除
- 21. Excel VBA辞書項目の削除
- 22. Excel VBA - 動的フィルタ範囲の削除
- 23. Excel VBA - 行内の重複を削除します
- 24. VBAを使用してExcelテーブルの空の行を削除
- 25. Excel VBAセルからコンテンツを削除して合計行を削除します
- 26. Excel VBAは、カット後に空行を削除します
- 27. VBAで複数のチェックボックスをExcelで削除するには?
- 28. Excel VBA列の値に基づいて行を削除
- 29. Excel VBAは、forループの行を削除する行を逃します。
- 30. Excel VBA - 範囲の合計が0の場合 - 行の削除
それを「選択」しないようにするためには、そこにコードがあるが、そう短くありません... –
私の答えとコードを参照してください、私は使用しているオートツールのいくつかでそれを使用します –