2016-04-12 25 views
0
  1. Büyük bir sunumum var (~ 300 slayt) Ve bunların her biri farklı excel dosyasına bağlı birkaç sürümü yapmam gerekiyor. Prestations içindeki tüm şekiller için bağlantıları değiştiren bir kodum var. Grafikler için hepsi iyi, ancak bağlantılı tablolar ile ilgili sorun var. Kaynak değişikliği doğrudur, ancak bu değişim aralığı sırasında tablo yayılımları için (aralık A1 sayfa hücre A1 için ayarlanır). Aralığın değişmemesi için bir yol var mı?
  2. Ek soru: tablo kaynağını değiştirmek çok hızlıdır (< 1s), ancak bağlantılı tablo kaynağının değiştirilmesi biraz zaman alır (~ 15s). Bu çok tablo var bir sorun haline gelir. Kod çalıştırdığımda, bir seferde ~ 50 slaytlar iyi gitti (~ 5-10 dakika sürdü), ama 30 dakika bekledim ~ 300 slaytta çalıştırmayı denediğimde ve bitmedi (yok olmadı frozed gibi görünüyordu). Bu sorunun neden oluştuğunu gerçekten merak ediyorum.
i bağlantı değişikliği için kullanmak

Okulöncesi öğretmenlerinin kodu:Excel'e bağlı güç noktası tabloları - Kaynak (VBA) nasıl değiştirilir?

Sub UpdateLinks() 
Dim ExcelFile 
Dim exl As Object 
Set exl = CreateObject("Excel.Application") 

'Open a dialog box to promt for the new source file. 
ExcelFile = exl.Application.GetOpenFilename(, , "Select Excel File") 

Dim i As Integer 
Dim k As Integer 

'Go through every slide 
For i = 1 To ActivePresentation.Slides.Count 
    With ActivePresentation.Slides(i) 
     'Go through every shape on every slide 
     For k = 1 To .Shapes.Count 
      'Turn of error checking s that it doesn 't crash if the current shape doesn't already have a link 
      On Error Resume Next 
      'Set the source to be the same as teh file chosen in the opening dialog box 
      .Shapes(k).LinkFormat.SourceFullName = ExcelFile 
      If .Shapes(k).LinkFormat.SourceFullName = ExcelFile Then 
       'If the change was successful then also set it to update automatically 
       .Shapes(k).LinkFormat.AutoUpdate = ppUpdateOptionAutomatic 'other option is ppUpdateOptionManual/ppUpdateOptionAutomatic 
      End If 
      On Error GoTo 0 
     Next k 
    End With 
Next i 
End Sub 

Tüm ipuçları bekliyoruz! :)

cevap

0

Neye baktınız .SourceFullName? Genellikle sadece dosya adı değil, aynı zamanda bağlantıyı işaret eden sayfadaki hangi sayfayı ve aralığı gösteren başka bir kod değildir. Bu, değiştirilen Excel dosyasının sadece adını değiştiriyor gibi görünüyor. Bunun yerine, .SourceFullName içinde eski Excel dosyasının adı için yeni Excel dosyasının adını değiştirmek için Değiştir'i kullanmayı deneyin. Üste | Bu bağlantı metninin kalanını sağlam bırakacaktır.

+0

Bunu düşündüm ve bunu metin fonksiyonlarını kullanarak yapmaya çalıştım. Hala işe yaramadı ama kodda aptalca bir hata yapabilirdim. Değiştir'i kullanmak çok daha kolay. Deneyeceğim. Yardım için teşekkürler! – Cudny

+0

Yardımcı olması durumunda, PPTFAQ sitemde benzer bir şey yapan bazı kodlar var: Toplu Arama ve Köprüler için Değiştir, OLE bağlantıları, film bağlantıları ve ses bağlantıları http://www.pptfaq.com/FAQ00773_Batch_Search_and_Replace_for_Hyperlinks-_OLE_links -_movie_links_and_sound_links.htm –