差し込み印刷を実行する前に、一時ファイルにエクスポートする 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); "")