1

ステッカーに印刷する必要のあるデータのリストがあります(エイブリーの種類を想像してください)。目的の結果を生成するコードを思い付くのに問題があります。

これまでの私のコードは次のとおりです。

With wsEtiketten
    ' erase old data
    .Cells.Clear
    ' enter new data
    With .Cells(1, 2)
        .Value = "Lettrine"
        .Font.Bold = True
    End With
    .Cells(2, 2).Value = sAuswertungsLettrine
    For i = 0 To MaxRow - 1
        For j = 0 To 4
            r.Copy .Cells(4, 2).Offset(i * 5, j * 5)
            .Cells(4, 2).Offset((i * 5) + 1, (j * 5) + 0) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 1).Value 'Page
            .Cells(4, 2).Offset((i * 5) + 1, (j * 5) + 1) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 2).Value 'Ordernr
            .Cells(4, 2).Offset((i * 5) + 1, (j * 5) + 2) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 8).Value 'Surf
            .Cells(4, 2).Offset((i * 5) + 1, (j * 5) + 3) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 9).Value 'Indice DB
            .Cells(4, 2).Offset((i * 5) + 3, (j * 5) + 0) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 3).Value 'Count
            .Cells(4, 2).Offset((i * 5) + 3, (j * 5) + 1) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 4).Value 'CA Brut
            .Cells(4, 2).Offset((i * 5) + 3, (j * 5) + 3) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 7).Value 'Marge
        Next j
    Next i
End With

それに関連付けられている情報は、単に行全体で繰り返されます。フィールドがオフセットされるたびに変更する必要があります。どうやってやるの?これはおそらく幼稚園のものをプログラミングしていると確信していますが、私はそれを取得していません。

ありがとう!

4

2 に答える 2

2

多分予想外のひねりを加えた答え。ExcelテーブルをWordと組み合わせて使用​​すると、必要な結果を得ることができます。これは標準のOffice機能です。

http://support.microsoft.com/kb/318117/en

またはドイツ語:

http://support.microsoft.com/kb/318117/de

于 2012-11-07T12:09:02.650 に答える
1

Ok。私はなんとかExcel内で答えを思い付くことができました。私がそれを手に入れたら、それは明白でした。ここに行きます:

With wsEtiketten
    ' Alte Daten werden gelöscht
    .Cells.Clear
    ' Neue Daten werden eingelesen
    With .Cells(1, 2)
        .Value = "Lettrine"
        .Font.Bold = True
    End With
    .Cells(2, 2).Value = sAuswertungsLettrine
    For i = 0 To MaxRow - 1
            r.Copy .Cells(4, 2).Offset(WorksheetFunction.RoundDown(i / 5, 0) * 5, ((i + 5) Mod 5) * 5)
            .Cells(4, 2).Offset((WorksheetFunction.RoundDown(i / 5, 0)) * 5 + 1, ((i + 5) Mod 5) * 5 + 0) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 1).Value 'Page
            .Cells(4, 2).Offset((WorksheetFunction.RoundDown(i / 5, 0)) * 5 + 1, ((i + 5) Mod 5) * 5 + 1) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 2).Value 'Bestellnummer
            .Cells(4, 2).Offset((WorksheetFunction.RoundDown(i / 5, 0)) * 5 + 1, ((i + 5) Mod 5) * 5 + 2) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 8).Value 'Surf
            .Cells(4, 2).Offset((WorksheetFunction.RoundDown(i / 5, 0)) * 5 + 1, ((i + 5) Mod 5) * 5 + 3) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 9).Value 'Indice DB
            .Cells(4, 2).Offset((WorksheetFunction.RoundDown(i / 5, 0)) * 5 + 3, ((i + 5) Mod 5) * 5 + 0) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 3).Value 'Anzahl
            .Cells(4, 2).Offset((WorksheetFunction.RoundDown(i / 5, 0)) * 5 + 3, ((i + 5) Mod 5) * 5 + 1) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 4).Value 'CA Brut
            .Cells(4, 2).Offset((WorksheetFunction.RoundDown(i / 5, 0)) * 5 + 3, ((i + 5) Mod 5) * 5 + 3) = wsSheet.ListObjects(1).DataBodyRange.Cells(i + 1, 7).Value 'Marge
    Next i
End With
于 2012-11-12T09:19:41.473 に答える