• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Tijdens uitvoering van code bericht weergeven 2

Status
Niet open voor verdere reacties.

HarryBee

Gebruiker
Lid geworden
8 jul 2008
Berichten
240
Snb,

Ik heb het volgende gebrouwen.
Sub VanIntTBNaarLM()


CreateObject("Wscript.shell").popup "Hoofdbestand is nu aan het laden. Wacht tot het Navigatiescherm verschijnt. Dit kan enkele minuten duren.", 8
Application.ScreenUpdating = False
Sheets("Database").Select
Range("B3:DL5002").Select
Selection.ClearContents
Workbooks.Open Filename:= _
"Q:\Tussenbestand.xls"
Password:="00"
Range("B3:DL5002").Select
Selection.Copy
Windows("Hoofd.xls").Activate
Sheets("Database").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B3").Select
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
Columns("C:C").Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("C1:C2").Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect Password:="01", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Windows("Tussenbestand.xls").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Application.ScreenUpdating = True
CreateObject("Wscript.shell").popup "Hoofdbestand is nu geladen en kan worden gebruikt.", 8


End Sub

Dit werkt opzich wel, maar..... ik wil juist dat het bericht constant in beeld blijft totdat de gehele code is uitgevoerd. En daarna pas het 2e bericht voor een paar seconden in beeld is.

Weet jij raad?

Alvast mijn dank.

Groeten Harry
 
Vermijd select en activate in VBA (overbodig en vertragend)
Als je zorgt dat de macro snel is, wordt de noodzaak van een tussenscherm kleiner.
Wat hieronder staat doet hetzelfde als wat jij beoogde (alleen wel wat sneller).
Code:
Sub VanIntTBNaarLM()
  CreateObject("Wscript.shell").popup "Hoofdbestand is nu aan het laden. Wacht tot het Navigatiescherm verschijnt. Dit kan enkele seconden duren.", 8
  Application.ScreenUpdating = False
  with Workbooks.Add("Q:\Tussenbestand.xls",Password:="00")
    .sheets(1).Range("B3:DL5002").Copy Thisworkbook.sheets("Database").range("B3")
    .close false
  End with
  with thisworkbook.Sheets("Database")
    with .Cells
      .Locked = True
      .FormulaHidden = False
    end with
    .Columns(3).Locked = False
    .Range("C1:C2")..Locked = True
  end with
  Application.ScreenUpdating = True
End Sub
 
Vermijd select en activate in VBA (overbodig en vertragend)
Als je zorgt dat de macro snel is, wordt de noodzaak van een tussenscherm kleiner.
Wat hieronder staat doet hetzelfde als wat jij beoogde (alleen wel wat sneller).
Code:
Sub VanIntTBNaarLM()
  CreateObject("Wscript.shell").popup "Hoofdbestand is nu aan het laden. Wacht tot het Navigatiescherm verschijnt. Dit kan enkele seconden duren.", 8
  Application.ScreenUpdating = False
  with Workbooks.Add("Q:\Tussenbestand.xls",Password:="00")
    .sheets(1).Range("B3:DL5002").Copy Thisworkbook.sheets("Database").range("B3")
    .close false
  End with
  with thisworkbook.Sheets("Database")
    with .Cells
      .Locked = True
      .FormulaHidden = False
    end with
    .Columns(3).Locked = False
    .Range("C1:C2")..Locked = True
  end with
  Application.ScreenUpdating = True
End Sub


Snb, Bedankt tot zover :thumb:

Het probleem is dat het tussenbestand al een bestaand bestand is. Op een of andere wijze probeerd de code hierboven steeds een nieuw tussenbestand aan te maken ?? en dat moet niet. Dat het sneller gaat dat klopt inderdaad.

Weet jij een oplossing?

Wederom dank.

Groeten Harry
 
De code maakt een kopie aan van het bestaande bestand; leest daar gegevens uit en sluit het zonder deze kopie op te slaan. Daarmee houd je de integriteit van dat bestand in stand.
Dus uiteindelijk maakt de code geen nieuw bestand (want er wordt niets opgeslagen).
 
De code maakt een kopie aan van het bestaande bestand; leest daar gegevens uit en sluit het zonder deze kopie op te slaan. Daarmee houd je de integriteit van dat bestand in stand.
Dus uiteindelijk maakt de code geen nieuw bestand (want er wordt niets opgeslagen).

Snb,

Je hebt gelijk. Ik was even te snel met mijn reactie.
Het werkt! Ik ga het nu toepassen op het originele bestand en kijken of het ook zo snel gaat.

Veel dank! :thumb:

Groeten Harry
 
Snb,

Je hebt gelijk. Ik was even te snel met mijn reactie.
Het werkt! Ik ga het nu toepassen op het originele bestand en kijken of het ook zo snel gaat.

Veel dank! :thumb:

Groeten Harry

Snb,

Het werkt goed en ik ben er erg mee geholpen.

Hartelijk dank voor je tijd. :thumb:

Groeten Harry
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan