-
Notifications
You must be signed in to change notification settings - Fork 8
PowerPoint
eiichiromomma edited this page Aug 17, 2014
·
1 revision
なぜか2003からファイルの参照が相対パス(ファイルの置いてあるフォルダから見たファイルの位置)ではなく、絶対パス(c:\temp\foo\bar.jpg)みたいな感じ)を記録するようになった。
要するにファイルを埋め込む場合、仮にフォルダ構成を同じにコピーしても、作ったマシンでしか正常に表示されないことになる。
Microsoftによると2つあるらしいが、一つはCDにパックしろという内容なのでパス。
下のを基に作ってみた。 子フォルダの階層のみ生かす。 相対パスは面倒なのでやめた。
Sub RelPict()
Dim oSlide As Slide
Dim oShape As Shape
Dim lPos As Long
Dim strLink As String
For Each oSlide In ActivePresentation.Slides
For Each oShape In oSlide.Shapes
If (oShape.Type = msoLinkedOLEObject) Or (oShape.Type = msoLinkedPicture) Or (oShape.Type = msoMedia) Then
With oShape.LinkFormat
PathLen = Len(oSlide.Parent.Path)
If (InStr(.SourceFullName, oSlide.Parent.Path) = 1) And (InStrRev(.SourceFullName, "\") > 0) Then
lPos = Len(.SourceFullName) - PathLen - 1
strLink = Right(.SourceFullName, lPos)
.SourceFullName = strLink
End If
End With
End If
Next oShape
Next oSlide
End Sub
によると下のソースで良いらしい。
If (oShape.Type の部分を弄るとオブジェクトを自由に指定できます。 (msoMediaを追加してあります)
※バグってました。
Sub RelPict()
Dim oSlide As Slide
Dim oShape As Shape
Dim lPos As Long
Dim strLink As String
'
' Loop through the presentation checking each shape
' on each slide to see if it is a linked picture.
'
For Each oSlide In ActivePresentation.Slides
For Each oShape In oSlide.Shapes
If (oShape.Type = msoLinkedOLEObject) Or (oShape.Type = msoLinkedPicture) Or (oShape.Type = msoMedia) Then
With oShape.LinkFormat
'
' Search from the right hand portion of the source
' file name and find the first backslash "\" character.
'
lPos = InStrRev(.SourceFullName, "\")
'
' Check to see if the link has already been modified.
'
If lPos <> 0 Then
'
' Determine how long the file name is, by subtracting
' the position the "\" character was found at from
' the total length of the source file name.
'
lPos = Len(.SourceFullName) - lPos
'
' Extract the file name from the source file name, then
' assign the file name to the source file name, turning
' it into a relative path.
'
strLink = Right(.SourceFullName, lPos)
.SourceFullName = strLink
End If
End With
End If
Next oShape
Next oSlide
End Sub
で良いらしい。
PowerPointのマクロの資料があまりにも貧相なのでマクロをいじる気が失せた。 とりあえずpptファイルと同一フォルダに置けば移動しても大丈夫らしい。
- 3ds_max
- Android
- Books
- Caffe
- Canvas
- Chainer
- CloudCompare
- colinux
- colmap
- Cygwin
- DeepLearning
- DICOM
- dlib
- docker
- Everun
- Excel
- EyeX
- FANN
- FDS
- Felica
- FreeBSD
- FreeNAS
- GAlib
- gnuplot
- JetsonNano
- JetsonTK1
- JetsonTX2
- Kinect
- LAPACK
- LaTeX
- LTspice
- M5Stack
- MacOSX
- MATLAB
- Memo
- MicroEnableIII
- Mono
- MSVC
- nano
- nvidia-docker
- ODE
- Open3D
- OpenCV
- OpenCVSharp
- OpenMVG
- OpenOffice
- OpenVSLAM
- OSG
- ParaView
- PCL
- Phidgets
- PlaidML
- PLplot
- POVRay
- PowerPoint
- Python
- R
- RaspberryPi
- Realsense
- ROS
- RSJ2011
- Ruby
- Scilab
- SHOGUN
- SUSE
- SVM
- Tensorflow
- TrueCrypt
- Ubuntu
- uEye
- Unix
- VMWarePlayer
- Vim
- VTK
- Windows
- WSL2
- 文書作成
- 文献調査
- 立体映像
- 論文メモ