1

Excel から Word テーブルにデータをコピーし、テーブルからいくつかの列を削除したいと考えています。データをテーブルにコピーできますが、列を削除するとエラーが発生します:

テーブルのセル幅が混在しているため、このコレクションの個々の列にアクセスできません。

私のコード:

Public Tbl1 As Table
Sub callExcel()

Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook

Set exWb = objExcel.Workbooks.Open("C:\Users\ismayilov\Desktop\test")

roomNumber = InputBox("Enter the room number to copy word:", "Room Number")
ActiveDocument.FormFields("Text1").Result = roomNumber
exWb.Sheets("Sheet1").Range("$A:$H").AutoFilter Field:=8, Criteria1:=roomNumber
Dim rVis As Range, rData As Range
exWb.Sheets("Sheet1").Range("$A1:$H600").Copy

Set Tbl1 = ActiveDocument.Tables.Add _
(Range:=Selection.Range, numRows:=1, NumColumns:=8)

Tbl1.Range.Paste
Tbl1.Columns(1).Delete

exWb.Close SaveChanges:=True
Set exWb = Nothing
Set Tbl1 = Nothing

End Sub
4

2 に答える 2

3

この行を変更してみてください:

Tbl1.Range.Paste

次のものに:

tbl1.Range.PasteAppendTable

編集.PasteAppendTable呼び出されるまでに時間がかかるようです。したがって、次の追加セクションを追加してみてください。

'...your code

'let's wait a second before pasting (could be cut to 0.5 sec)
Dim tmpStart
tmpStart = Timer
Do
    DoEvents
Loop While (tmpStart + 1) > Timer

tbl1.Range.PasteAppendTable

'...your code
于 2013-05-08T15:25:18.173 に答える
0

スリープ機能が動作する場合があります。

Declare Sub Sleep Lib "kernel32" Alias "Sleep" _
   (ByVal dwMilliseconds As Long)

Sub Sleep()

Sleep 1000   'Implements a 1 second delay

End Sub
于 2015-01-26T07:24:29.737 に答える