Link to home
Start Free TrialLog in
Avatar of asmahmood
asmahmoodFlag for United States of America

asked on

Copy list view contents

I just want to copy all contents with the settings(col,rows) in the clipboard so that i can paste it in excel for printout or for saving that in a file.
Avatar of WolfgangKoenig
WolfgangKoenig

This message should understood as answer.
(Because of limitations in this community its only a comment.)
-----------------------------------------------------------
This example uses the SetText method to copy text from a text box to the Clipboard. To try this example, paste the code into the Declarations section of a form with a text box named Text1, and then press F5 and click the form.

Private Sub Form_Click()
Const CF_TEXT = 1   ' Define bitmap format.
Dim I, Msg, Temp   ' Declare variables.
On Error Resume Next   ' Set up error handling.
Msg = "Type anything you like into the text box below."
Text1.Text = InputBox(Msg)   ' Get text from user.
Msg = "Choose OK to copy the contents of the text box "
Msg = Msg & "to the Clipboard."
MsgBox Msg   ' Display message.
Clipboard.Clear   ' Clear Clipboard.
Clipboard.SetText Text1.Text   ' Put text on Clipboard.
If Clipboard.GetFormat(CF_TEXT) Then
   Text1.Text = ""   ' Clear the text box.
   Msg = "The text is now on the Clipboard. Choose OK "
   Msg = Msg & "to copy the text from the Clipboard back "
   Msg = Msg & "to the text box."
   MsgBox Msg   ' Display message.
   Temp = Clipboard.GetText(CF_TEXT)   ' Get Clipboard text.
   For I = Len(Temp) To 1 Step -1   ' Reverse the text.
      Text1.Text = Text1.Text & Mid(Temp, I, 1)
   Next I
Else
   Msg = "There is no text on the Clipboard."
   MsgBox Msg   ' Display error message.
End If
End Sub

;o)
WoK
ASKER CERTIFIED SOLUTION
Avatar of casassus
casassus

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Richie_Simonetti
interesting...
Hi asmahmood,
Note:
You can do your task without the clipboard by using
OLE Automation
You must link the "Microsoft Excel 8.0 Object Library" to your project file (IDE: Menu Project\Links)!
And then put this in a VB module and call the main sub:
-----------------------------------------------------------
Private m_objExcel As Excel.Application

' Comments  : Starts an instance of Excel
' Parameters: fVisible - True to make Excel visible
' Returns   : Nothing
Public Sub StartExcel(fVisible As Boolean)
On Error GoTo PROC_ERR
 
Set m_objExcel = New Excel.Application
m_objExcel.Visible = fVisible
 
PROC_EXIT:
  Exit Sub
 
PROC_ERR:
  MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
    "StartExcel"
  Resume PROC_EXIT

End Sub

Public Sub FillExcel()
dim I as integer
dim J as integer
dim strContents as string

strContents=""
for i= 1 to MyListView.listItems.count
m_objWorkbook.ActiveWorkbook.ActiveSheet.Cells(i,0).Value = MyListView.listItems(i)
for j=1 to MyListView.columnheaders.count-1
m_objWorkbook.ActiveWorkbook.ActiveSheet.Cells(i,j).Value = MyListView.listItems(i).subitems(j)
next j
next i
End Sub

Public Sub Main()
  StartExcel(True)
  FillExcel
End Sub

-----------------------------------------------------------

Greeting
WoK
Sorry the lines:
for i= 1 to MyListView.listItems.count
m_objWorkbook.ActiveWorkbook.ActiveSheet.Cells(i,0).Value = MyListView.listItems(i)
for j=1 to MyListView.columnheaders.count-1
m_objWorkbook.ActiveWorkbook.ActiveSheet.Cells(i,j).Value = MyListView.listItems(i).subitems(j)

Must be:
for i= 1 to MyListView.listItems.count
m_objExcel.ActiveWorkbook.ActiveSheet.Cells(i,0).Value = MyListView.listItems(i)
for j=1 to MyListView.columnheaders.count-1
m_objExcel.ActiveWorkbook.ActiveSheet.Cells(i,j).Value = MyListView.listItems(i).subitems(j)


Bye
WoK
(I have checked the code)
The lines:
for i= 1 to MyListView.listItems.count
m_objExcel.ActiveWorkbook.ActiveSheet.Cells(i,0).Value = MyListView.listItems(i)
for j=1 to MyListView.columnheaders.count-1
m_objExcel.ActiveWorkbook.ActiveSheet.Cells(i,j).Value = MyListView.listItems(i).subitems(j)

must be:
for i= 1 to MyListView.listItems.count
m_objExcel.ActiveWorkbook.ActiveSheet.Cells(i,1).Value = MyListView.listItems(i)
for j=1 to MyListView.columnheaders.count-1
m_objExcel.ActiveWorkbook.ActiveSheet.Cells(i,j + 1).Value = MyListView.listItems(i).subitems(j)


Bye
WoK
Avatar of asmahmood

ASKER

Thank u all for answering me but there was some problem with expert exchange server yesterday and i want the answer as early as possible becuse it was not too big problem so create another routine which was same like CASASSUS's comments so i did it but thanks WolfgangKoening i will definately try ur way if it works! but now i am doing my work with CASASSUS's comment so thnks again
it works thanks