2017-05-07 4 views
-1

Ich fand diesen ausgezeichneten Code, aber ich muss es für meine Zwecke anpassen.Excel VBA - Öffnen Sie eine Arbeitsmappe und Einfügen von Daten

Zuerst muss ich eine Datenarbeitsmappe öffnen, die in unserem Netzwerk ist. Das Problem, das ich habe, ist, dass es manchmal von einem anderen Benutzer geöffnet wird und die Option "nur lesen" bietet. Wie kann ich die schreibgeschützte Option akzeptieren, damit ich mit dem Extrahieren der Daten beginnen kann?

Zweitens kopiert es mit dem "=". Wie kann ich es ändern, um nur die Werte zu kopieren?

Erstes Makro:

Sub test() 
'to open another workbook 
Application.ScreenUpdating = False 
Workbooks.Open Filename:=ThisWorkbook.Path & "\Schedule.xls" 
ThisWorkbook.Activate 
Application.ScreenUpdating = True 

End Sub 

2. Macro:

Dim Sh As Worksheet 
Dim Newsh As Worksheet 
Dim myCell As Range 
Dim ColNum As Integer 
Dim RwNum As Long 
Dim Basebook As Workbook 

With Application 
    .Calculation = xlCalculationManual 
    .ScreenUpdating = False 
End With 

'Delete the sheet "Summary-Sheet" if it exist 
Application.DisplayAlerts = False 
On Error Resume Next 
ThisWorkbook.Worksheets("Summary-Sheet").Delete 
On Error GoTo 0 
Application.DisplayAlerts = True 

'Add a worksheet with the name "Summary-Sheet" 
Set Basebook = ThisWorkbook 
Set Newsh = Basebook.Worksheets.Add 
Newsh.Name = "Summary-Sheet" 

'The links to the first sheet will start in row 2 
RwNum = 1 

For Each Sh In Basebook.Worksheets 
    If Sh.Name <> Newsh.Name And Sh.Visible Then 
     ColNum = 1 
     RwNum = RwNum + 1 
     'Copy the sheet name in the A column 
     Newsh.Cells(RwNum, 1).Value = Sh.Name 

     For Each myCell In Sh.Range("A1,D5:E5,Z10") '<--Change the range 
      ColNum = ColNum + 1 
      Newsh.Cells(RwNum, ColNum).Formula = _ 
      "='" & Sh.Name & "'!" & myCell.Address(False, False) 
     Next myCell 

    End If 
Next Sh 

Newsh.UsedRange.Columns.AutoFit 

With Application 
    .Calculation = xlCalculationAutomatic 
    .ScreenUpdating = True 
End With 
End Sub 

Antwort

0

Sie können immer die Arbeitsmappe öffnen, als schreibgeschützt, wenn Sie nur die Daten extrahieren. Anstelle von .formula verwenden .Wert

+0

Vielen Dank Jason. Könnte ich Sie bitte fragen, wie Sie beide Makros zusammenführen, so dass die Datenmappe für die Datenextraktion geöffnet wird und Sie dann keine Änderungen speichern können. – Angelo

Verwandte Themen