0

差し込み印刷を実行する前に、一時ファイルにエクスポートする Excel スプレッドシートがあります。
これは、次のようにコピー/貼り付けすることで実現されます。

Dim current As Workbook
Set current = ActiveWorkbook

Dim wb As Workbook
Set wb = Workbooks.Add

current.Sheets("Input").UsedRange.Copy

' Only paste values, since posting formulas would give #REFERENCE errors
wb.Worksheets(1).name = "Input"
wb.Worksheets(1).Range("A1").PasteSpecial (xlPasteValues)

ただし、1 つの列で #VALUE! を取得します。すべてのセル (ヘッダーを除く)。これらの文字列は、私がコピーしている他のどの文字列よりも長く、約 170 ~ 190 文字です


編集

この問題を掘り下げていると、興味深いことに出くわしました。エクスポートしているスプレッドシートを開いているときに、別のスプレッドシートをいじると、値が変更されます。

これらのセルの値は、ドキュメントの場所と詳細です。これが #VALUE! の原因になっているのではないかと思います。エラー - エクスポートによって場所のない新しいワークブックが開かれるためです。この時点で数式を計算すると、#VALUE! が得られると思います。エラー。

式は次のとおりです。

=IF($A3<>"";CHAR(34) & SUBSTITUTE(LEFT(CELL("filnavn"); FIND("[";CELL("filnavn")) - 1) & "Images\" & INDIRECT("'" &VLOOKUP($G3;'Item Information'!$A$2:$C$249;3;FALSE) & "'!F2") & ".png"; "\"; "/") & CHAR(34); "")
4

2 に答える 2

1

デバッグを通じて、新しいワークブックを追加するときに、実際に問題を引き起こしているのは数式であることがわかりました。

Application.Calculation = xlCalculationManualコードの実行前と実行後に設定するとApplication.Calculation = xlCalculationAutomatic、この問題が解決されます。

于 2013-08-27T08:29:16.973 に答える
0

VBA で値をコピーする最良の方法は (コピー & ペーストの代わりに):

With current.Sheets("Input").UsedRange
    wb.Worksheets(1).Range("A1").Resize(.Rows.Count, .Columns.Count).Value=.Value
End With
于 2013-08-27T08:33:11.263 に答える