VBA

2017-06-06 16 views
0

を使用してPowerPointファイルをExcelファイルに出力するPowerPointのスライドの最初の要素のテキストをExcelファイルにコピーする方法を探しています。今、私が撮りたい次のステップでは、Excelファイルにデータを追加することですVBA

Sub getText 

Dim sld As Slide 
Set sld = Application.ActiveWindow.View.Slide 
For Each sld In ActivePresentation.Slides 
With sld.Shapes(1) 

    myInput = .TextFrame.TextRange.Text 
    MsgBox (myInput) 

End With 
Next 
End sub 

:私は、最初のボックスのテキストを出力し、次のコードを得ました。したがって、私は、次の操作を行いますしよう:「必要なオブジェクト」:私は今それをしようとすると、

Sub getText() 

Dim xlApp As Object 
Dim xlWorkBook As Object 
Set xlApp = CreateObject("Excel.Application") 
xlApp.Visible = True 
Set xlWorkBook = xlApp.Workbooks.Open("~\PROJECTEN\Lopend\office_VA\macroStore.xlsx", True, False) 
xlWorkBook.sheets(1).Range("A2").Select 


Dim sld As Slide 
Set sld = Application.ActiveWindow.View.Slide 

For Each sld In ActivePresentation.Slides 
With sld.Shapes(1) 

myInput = .TextFrame.TextRange.Text 
ActiveCell.Text = myInput 

End With 
Next 

End Sub 

しかし、それはエラーが発生します。どのようにコードを変更する必要がありますか?

答えて

0

あなたの問題は、ActiveCell.Textを参照していることですが、VBAはそれが何であるかを知りません。また、あなたはmyInputという変数を宣言していません。

このマクロを試してみてください。ここでは、セルを選択するのではなく、テキスト値を割り当てるだけです。また、複数の値を記述している場合、コードは同じセルに書き込むことになります。下のコードでは、テキストを列Aに書き込む行をいくつか追加しました。

Sub getText() 

    Dim xlApp As Object 
    Dim xlWorkBook As Object 
    Set xlApp = CreateObject("Excel.Application") 
    xlApp.Visible = True 
    Set xlWorkBook = xlApp.Workbooks.Open("~\PROJECTEN\Lopend\office_VA\macroStore.xlsx", True, False) 

    Dim xlWorkSheet As Object ' Create a worksheet object 
    xlWorkSheet = xlWorkBook.sheets(1) ' Set the sheet you activate to that object 

    Dim iRow As Long ' Create a variable to store row number 
    iRow = 1 'Set the first row that you want to start writing data on 

    Dim sld As Slide 
    Dim myInput As String 
    Set sld = Application.ActiveWindow.View.Slide 

    For Each sld In ActivePresentation.Slides 
     With sld.Shapes(1) 
      myInput = .TextFrame.TextRange.Text 
      xlWorkSheet.Cells(iRow, "A") = myInput 'Using .Cells() you can specify the (row, column) location 
      iRow = iRow + 1 'increment by one for next line of text 
     End With 
    Next 
End Sub 
+0

@Philip、あなたの徹底的な返答に感謝します。しかし、私がそれを試してみると、私はこの行にエラー91エラーが発生します:xlWorkSheet = xlWorkBook.sheets(1)。それは、オブジェクト変数または変数が適切に構成されていないことを示しています....任意のthougts? –

+0

xlWorkBook.sheets(1)を使用する代わりに、xlWorkBook.sheets( "Sheet1")を試してください。 – pheeper

+0

これを試してみましたが、このオブジェクトがこのメソッド/設定をサポートしていないという438エラーが表示されます –