私がやって実行するコードの小さなセクションを書いています次:VBAワード無効な修飾子エラーが空白のセルを交換する範囲
- は、データブロックの最大サイズを(最後が何であるかを見つけますセルは のデータを持ち、座標はLRowとLColで与えられます)
- カラム内のデータを検索します(これはカラムの範囲にします)。そして、セルが空白の場合は、上のセルの値を使用しますそれ。
- 新しいシートを作成して名前を変更します
- データを表示すると、列k内に「致命的」という単語が含まれている行のみを選択し、これらの行を新しい名前を変更したシートに貼り付けます。
これまでのところ私のコードです。誰も上記の改善を実装することができますか、なぜLRowで無効な修飾子エラーを取得するのか把握できますか? コードはWord文書から開始され、Excelスプレッドシートを開き、スプレッドシート内のデータを再生します。
グローバルサブを有効にするボタンをクリックします。
Private Sub ObtainFatalCrashInfoButton_Click()
'Disable screen updating
'Application.ScreenUpdating = False
Application.Run ("OpenRawDataFile")
Application.Run ("FixData")
Application.Run ("GetData")
'Application.Run ("CloseRawDataFile")
Application.Run ("CommandButtonRemove")
'Enable screen updating
'Application.ScreenUpdating = True
End Sub
その後、次のサブルーチンを順番にアクティブ化されています
Sub OpenRawDataFile()
'Not sure this works....
Set appExcel = CreateObject("Excel.Application")
Dim IFAM_Index As Variant
Dim IFAM_File As Variant
IFAM_File = appExcel.GetOpenFilename("Excel files (*.xls), *.xls")
appExcel.Workbooks.Open IFAM_File
End Sub
サブFixDataを。欠落したデータを追加して、プロセスの次の部分を簡単にします。
Sub FixData()
Dim i As Long
Dim LRow As Long, LCol As Long
Dim rngD As Range
'Set the range of the "Duration Working" Spreadsheet
LRow = wb.Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
LCol = wb.Worksheets("Sheet2").Cells(1, Columns.Count).End(xlToLeft).Column
Set rngD = Range(Cells(2, 1), Cells(LRow, LCol))
For i = 1 To LRow.Rows.Count
If LRow.Cells(i, 11).Value = "" Then
LRow.Cells(i, 11).Value = LRow.Cells(i - 1, 1).Value
End If
Next
End Sub
Sub GetData() SUbは条件を満たす行を新しいシートにコピーして、必要な形式(この部分はまだ書かれていません)の単語に簡単に抽出できるようにする必要があります。
Sub GetData()
'Create new tab to copy data to
Dim WS As Worksheet
Set WS = Sheets.Add
'assuming the data is in sheet1
Sheets("Sheet2").Select
RowCount = LRow
For jj = 1 To RowCount
'assuming the true statment is in column k
Range("k" & jj).Select
check_value = ActiveCell
If check_value = "Fatal" Or check_value = "fatal" Then
ActiveCell.EntireRow.Copy
'assuming the data is in sheet2
WS.Select
RowCount = Cells(Cells.Rows.Count, "k").End(xlUp).Row
Range("k" & RowCount + 1).Select
ActiveSheet.Paste
Sheets("Sheet2").Select
End If
Next
End Sub
Sub CopyData()。書かれている。データを特定の形式の単語にコピーします。誰か提案?
Sub CopyData()
'....To be written
End Sub
Sub CloseRawDataFile。データを必要な形式の単語にコピーする必要があるため、保存せずに未加工のデータファイルを閉じます。
Sub CloseRawDataFile()
wb.Close SaveChanges:=False
Set wb = Nothing
End Sub
Sub CommandButtonRemove。 Word文書からコマンドボタンを削除します。これは、プロセスが再度必要ないためです。
Sub CommandButtonRemove()
Dim iShp As Word.InlineShape
For Each iShp In ActiveDocument.InlineShapes
If iShp.Type = wdInlineShapeOLEControlObject Then
If iShp.OLEFormat.Object.Name = "ObtainFatalCrashInfoButton" Then
iShp.Range.Font.Hidden = True
End If
End If
Next
End Sub
最終的に、このコードはデータセットを検索し、条件を満たす内容を所定のテーブルの単語文書に貼り付けます。私は簡単にするためにコードの小さなコンポーネントを分離しようとしました。したがって、コードを検索してこの段階で新しいテーブルに貼り付けることだけを考えます。
まだ書かれていない他の部分の助けも大きな助けになります!
Long型の変数には 'Rows'プロパティがありません。たぶんあなたは 'For i = 1 To LRow'をほしいと思うかもしれません。 –
^^また' Cells'プロパティもありません。 'LRow.Cells'は' wb.Worksheets( "Sheet2")を意味していますか? – YowE3K
^^^「i = 1 To LRow.Rows.Count」は 'i = 1 To rngD.Rows.Count'と' LRow.Cells'は 'rngD.Cells'にする必要があります – YowE3K