[解決済み] Excel VBA マクロ。ユーザー定義型が定義されていない
2022-03-05 21:27:37
質問
このマクロを実行しようとすると、上記のようなエラーが発生します。私はマクロやコーディング全般の初心者なので、無知をお許しください。
Sub DeleteEmptyRows()
Dim oTable As Table, oRow As Row, _
TextInRow As Boolean, i As Long
Application.ScreenUpdating = False
For Each oTable In ActiveDocument.Tables
For Each oRow In oTable.Rows
TextInRow = False
For i = 2 To oRow.Cells.Count
If Len(oRow.Cells(i).Range.Text) > 2 Then
'end of cell marker is actually 2 characters
TextInRow = True
Exit For
End If
Next
If TextInRow = False Then
oRow.Delete
End If
Next
Next
Application.ScreenUpdating = True
End Sub
解決方法は?
エラーの原因は以下の通りです。
Dim oTable As Table, oRow As Row,
これらのタイプは
Table
と
Row
はExcelのネイティブな変数型ではありません。 これを解決するには、次の2つの方法があります。
-
Microsoft Wordのオブジェクトモデルへの参照を含める。 ツール]-[参照]-[MS Wordへの参照を追加]でこれを行います。 厳密には必要ではありませんが
かもしれません
のように、オブジェクトを完全に修飾するのが好きです。
Dim oTable as Word.Table, oRow as Word.Row
. これをアーリーバインディングと呼びます。 -
あるいは、レイトバインディング方式を使用するには、オブジェクトをジェネリックとして宣言する必要があります
Object
型を使用します。Dim oTable as Object, oRow as Object
. この方法では、Wordに参照を追加する必要はありませんが、VBEでのインテリセンス補助も失われます。
あなたのコードをテストしたわけではありませんが、おそらく
ActiveDocument
の方法では、Word.Applicationオブジェクトのインスタンスに適切にスコープしない限り、Excelで動作しません。 提供されたコードのどこにもそれが見当たりません。 例としては、以下のような感じです。
Sub DeleteEmptyRows()
Dim wdApp as Object
Dim oTable As Object, As Object, _
TextInRow As Boolean, i As Long
Set wdApp = GetObject(,"Word.Application")
Application.ScreenUpdating = False
For Each oTable In wdApp.ActiveDocument.Tables
関連
-
[解決済み] Excel VBAアプリが "Code has been halted "というメッセージで自然停止する。
-
[解決済み] セル内に改行文字を追加する(CSV)
-
[解決済み] VBAでファイルが存在するかどうかを確認する
-
[解決済み] Excelのセルで変数を宣言する
-
[解決済み] VBAでRangeクラスのSelectメソッドに失敗する
-
[解決済み] Excel の TEXT 式で 'yyyy' が年に変換されない
-
[解決済み] Excel VBA Projectのパスワードを解読する方法はありますか?
-
[解決済み】Excel VBAでSelectを使用しないようにする方法
-
[解決済み] VBAで現在のワークシートのパスを取得する方法は?
-
[解決済み] IF文: 条件が偽の場合にセルを空白にする方法("" は機能しません)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 閉じたワークブックから値を取得するExecuteExcel4Macro
-
[解決済み] "ピボットテーブルのフィールド名が有効ではありません。ピボットテーブルレポートを作成するには、ラベル付き列のリストとして構成されたデータを使用する必要があります」エラー
-
[解決済み] エクセルVBAで行を削除する
-
[解決済み] Excel - 複数列の SUMIFS
-
[解決済み] VBA+エクセル+トライキャッチ
-
[解決済み] Application.CalculateとApplication.CalculateFullの違いは何ですか?
-
[解決済み】VBAでフォルダー内のファイルをループ処理?
-
[解決済み】Excelで数式から空のセルを返す。
-
[解決済み】.text、.value、.value2の違いは何ですか?
-
[解決済み] VBAを使わずにExcelで文字列の逆引き検索を行うには?