2016-07-28 2 views
0

새 줄 바꿈 문자 (\ n)로 구분 된 ID로 구성된 문자열을 만들었습니다. 이제 모든 문자열을 다른 셀에 붙여 넣기 위해이 문자열을 Excel에 붙여 넣기를 원합니다.이 모든 것에 대해 클립 보드에 복사 한 $ finCode의 문자열을 채 웁니다. 이제 엑셀 시트에서 셀을 선택한 다음 해당 셀에 전체 문자열을 붙여 넣어 모든 ID가 동일한 열의 Excel에서 다른 셀에 채워지도록해야합니다. 코드는 다음과 같다 :클립 보드에서 powershell을 사용하여 Excel 셀에 데이터 붙여 넣기

내가으로 통합 문서를 수입하고있다 : 나는 작업 할 워크 시트를 확인하고

$workbook = $xldoc.Workbooks.Open($testType) 

:

$mysheet = $workbook.worksheets | where {$_.name -eq "JPT"} 

을하고 나는이 $의하여 MySheet에서 사용하고 $ currentSheet 로의 기능

이제 함수는 다음과 같습니다 :

addtitle() 
{ 
$finCode="" 

         $fRow=$intRow 


         for($intRow = $fRow ; $intRow -le $maxRow ; $intRow++){ 

          $codeName = $currentCode 
          $fin = $codeName + "_" + $i + "`n" 
          $finCode=$finCode+$fin 


          $i= $i + 1 
         } 

         # 

         $currentSheet.Cells.Item($fRow,$currentCol).Value2 = $finCode 

         $clipboardData = $finCode 

         [System.Windows.Forms.Clipboard]::SetText($ClipboardData) 



         $currentSheet.Cells.Item($fRow,$currentCol).Select() | Out-Null 

         $currentSheet.Paste($finCode) | Out-Null 

} 

이 오류가 발생합니다. 널 값 표현식에서 메소드를 호출 할 수 없습니다. 열의 다른 셀에서 문자열의 값을 Excel에서 채우도록 도와주세요.

답변

0

복사/붙여 넣기의 대안을 제안 할 수 있습니까?

대용량 Excel 통합 문서를 생성하는 스크립트가 있는데 이전에 복사/붙여 넣기 방법을 사용했습니다. 셀 단위로 쓰는 것은 힘들었지 만 동시에 다른 작업을 시도 할 때 문제가 발생했습니다. 같은 시간에 다른 응용 프로그램에서 복사/붙여 넣기를 사용하면 출력이 엉망이됩니다.

셀 범위의 Value2와 함께 다차원 배열을 사용하는 것이 좋습니다. 내가 열을 언급해야한다

# Open Excel 
$excel = New-Object -ComObject Excel.Application 
# Make Excel visible 
$excel.Visible = $true 
# Open new workbook 
$workbook = $excel.Workbooks.Add() 
# Use first sheet 
$worksheet = $workbook.Worksheets.Item(1) 
# Set a base string for the example 
$baseString = "RowTextExample" 
# Set column number 
$columnNum = 1 
# Set starting row number 
$startRowNum = 1 
# Set ending row number 
$endRowNum = 10 
# Create an empty multi-dimensional array that with the first digit equating to the number of rows and second equating to the number of columns 
$multiArray = New-Object 'object[,]' $endRowNum, 1 
# Since rows start at 1 and an array index starts at 0, set a variable to track the array index that starts at 0 
$arrayIndex = 0 
# Start at first row and go to the end row adding appending the base string with the row number 
for($rowNum = $startRowNum; $rowNum -le $endRowNum ; $rowNum++) 
{ 
    $multiArray[$arrayIndex, 0] = $baseString + "_$rowNum" 
    $arrayIndex++ 
} 
# Set the range where the data will be placed; the size must match the size of the multi-dimensional array 
# Example using A1 format instead of column number: $range = $worksheet.Range("A$($startRowNum):A$endRowNum") 
$range = $worksheet.Range($worksheet.Cells($startRowNum, $columnNum), $worksheet.Cells($endRowNum, $columnNum)) 
# Write the multi-dimensional to the range 
$range.Value2 = $multiArray 
+0

안녕 @ 존 번호 :

다음은 여러분의 필요에 적응 할 수 있어야 일반적인 예이다. 범위 안에. 예를 들어 여기에 언급 된 "A". 이제 3을 채우지 않은 열이 있습니다. 코드 (범위) 함수에서이 점을 어떻게 설명할까요? –

+0

@ shikher.mishra, OK A1 형식 대신 열 번호를 사용하여 셀 범위를 참조하도록 코드를 업데이트했습니다. 다른 사람들이 유용하다고 생각한 경우를 대비하여 A1 형식 예제를 남겼습니다. –

관련 문제