รีเฟรชเอกสาร Excel โดยไม่ต้องเปิด [ซ้ำ]


0

ฉันมีสเปรดชีตซึ่งฉันต้องการอัปโหลดไปยังอินทราเน็ตของ บริษัท เพื่อให้ผู้อื่นดู ทุกครั้งที่สเปรดชีตเปิดขึ้นมันจะเรียกใช้สคริปต์พื้นหลังซึ่งจะอัปเดตข้อมูล ปัญหาคือ - สคริปต์ทำงานประมาณ 10 นาทีเพราะมันดูที่ 2 ตารางขนาดใหญ่
มีวิธีใดบ้างที่จะรีเฟรชสเปรดชีตวันละครั้ง (ตัวอย่าง 2am) โดยไม่มีใครต้องเปิด


ขึ้นอยู่กับว่าคุณแบ่งปันเอกสารอย่างไร บนเซิร์ฟเวอร์ไฟล์หรือไม่? ใน Sharepoint เราแก้ปัญหานี้ด้วยฐานข้อมูล SQL ซึ่งเราสามารถตัดสินใจได้ว่าจะทำการซิงโครไนซ์บ่อยครั้ง
daraos

ไม่ใช่คำตอบ แต่ดูเหมือนว่าคุณกำลังทำข้อ จำกัด ของ Excel อยู่ บางทีคุณต้องเขียน (เขียน) โปรแกรม "ของจริง" แทนที่จะทำทุกอย่างภายใน Excel? รหัสที่ Excel เรียกใช้ (อาจจะเป็น VB) สามารถแยกเป็นโปรแกรมอื่นได้
sleske

คำตอบ:


0

คำตอบง่ายๆ: ไม่ มาโคร VBA ทำงานบนเอนจิน Microsoft Excel ซึ่งหมายความว่า Excel จะต้องทำงานเพื่อให้แมโครทำงาน

อย่างไรก็ตาม VBScript เป็นภาษาเดียวกับที่ใช้กับ VBA ยกเว้นว่า VBA สามารถผูกลงในไฟล์ microsoft excel และเข้าถึงเซลล์โดยตรงโดยใช้คำสั่งเช่นชีต (1) .cells (1,3) ซึ่ง VBScript ไม่สามารถ ด้วยการทำงานมากมายคุณสามารถสร้าง vbscript ที่อ่านและสร้างไฟล์. csv ซึ่งในระยะยาวอาจทำให้คุณมีความคิดในการทดแทน

ถ้านั่นไม่ใช่ตัวเลือกจริงๆ (และโดยสุจริตฉันไม่โทษคุณ) คุณสามารถปิดการใช้งานสคริปต์เพื่อโหลดทุกครั้งที่มีคนเปิดมันและทำให้มันเป็นงานที่ดำเนินการด้วยตนเองอย่างน้อยให้การควบคุมเมื่อคุณ หากมีพีซีทำงานในเวลากลางคืนที่รัน Microsoft Excel (อาจเป็นเซิร์ฟเวอร์ได้) คุณสามารถสร้างสคริปต์ฮอตอัตโนมัติหรืออาจเป็นสคริปต์ VBA อื่นที่จะเรียกใช้แมโครนี้และใช้งานตามกำหนดเวลาเพื่อเริ่ม excel และเปิดสมุดงาน . โปรดทราบว่างานที่กำหนดเวลาไว้นั้นไม่สามารถเรียกใช้แมโครได้ดังนั้นคุณต้องอำนวยความสะดวกในการเรียกใช้แมโครโดยอัตโนมัติ ตัวอย่างเช่นคุณมี workbook2.xls ซึ่งมีแมโครเพื่อเปิด workbook1.xls โดยอัตโนมัติจากนั้นเรียกใช้แมโครคำนวณของมันและในตอนท้ายให้บันทึก workbook1.xls แล้วปิดไฟล์ทั้งสอง


0

ฉันคิดอย่างนี้ ได้ เป็นไปได้โดยใช้ Application.OnTime .

ดังนั้นเมื่อผู้ใช้เปิดแผ่นงาน Excel เพิ่มสิ่งต่อไปนี้ในรหัสที่มีอยู่ของคุณ

Public Sub ExecuteBigMacro()
    timeForAlert = Now + TimeValue("24:00:00")
    Application.OnTime timeForAlert, "ExecuteBigMacro"
    'the rest of your code which takes ages! 
End Sub

นี่หมายความว่าเริ่มเปิดตอนตีสอง (และทุกครั้งหลังจากที่คุณรีสตาร์ทแอปพลิเคชัน) !! แม้ว่าจะขึ้นอยู่กับสถานการณ์คุณสามารถอัพเดทได้ทุก ๆ 4 ชั่วโมงและยอมรับในช่วงเวลานี้ผู้ใช้จะมีความล่าช้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.