[ruby + excel] Vorsichtsmaßnahmen zum Speichern unter

In Ruby können Sie Excel mit win32ole bedienen. Bei SaveAs ist ein Fehler aufgetreten. Notieren Sie sich die Notizen. Es war ein Fehler wie method_missing: (in den OLE-Methoden'saveas ') (WIN32OLERuntimeError).

Fazit

Beim Speichern im angegebenen Verzeichnis

require 'win32ole'

app = WIN32OLE.new('Excel.Application')
book = app.workbooks.add
out_path = File.expand_path('test.xlsx').gsub('/', '\\')
book.saveas filename: out_path
book.close savechanges: false
app.quit

Informationen zu dem von SaveAs angegebenen Pfad

  1. Relative Pfade basieren auf den Einheimischen von Excel.
  2. Setzen Sie den Pfadbegrenzer auf \ anstelle von /.
  3. Benannte Argumente werden durch Symbole angegeben.

1. Aktuell, über das Excel verfügt

Relative Pfade sind in Ruby verfügbar. Relative Pfade können in Excel verwendet werden, aber der Speicherort, auf den "current" zeigt, ist der in Excel festgelegte lokale Ordner. Dies ist der Speicherort, der im optionalen "Standardspeicherort für lokale Dateien" beschrieben ist. Also werde ich es zu einem absoluten Pfad machen, um den Ort, an dem Ruby läuft, aktuell zu machen.

out_path = File.expand_path('test.xlsx')

2. Der Pfadbegrenzer ist \ anstelle von /.

Im Ruby-Pfad wird / (Schrägstrich) verwendet, um die Hierarchie zu trennen. Anscheinend konnte es nicht so gespeichert werden, wie es ist. Ersetzen Sie daher das Trennzeichen durch \ (Backslash).

out_path = File.expand_path('test.xlsx').gsub('/', '\\')

3. Angabe benannter Argumente

Benannte Argumente können durch Symbole angegeben werden. VBA verwendet ": =", schreibt es jedoch wie folgt.

workbook.saveas filename: path

Es wurde nicht überprüft, warum dies möglich ist. Weil Sie das Argument als Hash übergeben?

Beiseite

Es scheint die Grundlagen von Rubin zu sein,

p out_path

In ist die Zeichenfolge in "" eingeschlossen und \ wird als \\ maskiert. (Ich möchte es zu einem machen, nicht \\!, Und verschiedene Dinge für mehrere Stunden tun ...) Es geht nur darum, die Eingabeaufforderung anzuzeigen, und es gibt tatsächlich nur eine .

puts out_path

Ich hätte es tun sollen.

Da es sich um einen Rubin-Anfänger handelt, kann es zu einer falschen Beschreibung kommen. Ich würde mich freuen, wenn Sie in den Kommentaren darauf hinweisen könnten.

Recommended Posts

[ruby + excel] Vorsichtsmaßnahmen zum Speichern unter
Abkürzung für Ruby-Methode
[Ruby] Wofür wird `!!` verwendet?
Vorsichtsmaßnahmen zum Aktualisieren des Realm-Objekts